Mini-Display für Anzeigen von Loxone Daten für kleines Geld

Einklappen
X
 
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge
  • harryb
    Smart Home'r
    • 05.11.2018
    • 55

    #1

    Mini-Display für Anzeigen von Loxone Daten für kleines Geld

    Ich hab schon seit langer Zeit danach gesucht, wie ich kostenkünstig ein kleines Anzeige-Display realisieren kann, das über WLAN mit Loxone-Daten gefüttert wird.
    Aus verschiedensten Quellen habe ich mir nun die Daten zusammengesucht und tatsächliche eine funktionierende Lösung gefunden.
    Ein 0,96"-I2C-Display hängt dabei an einem Wemos D1 mini, der mit Tasmota läuft. Man braucht hier im Grunde keine großartigen Programmierkenntnisse.
    Die Daten (in meinem Fall Anlaog-Daten) vom Loxone werden dabei über http-Augang an das Display gesendet.
    Da ich im Loxwiki im Bereich How-To´s keinen Beitrag erstellen kann, stelle ich die Anleitung hier vor.
    Es würde mich freuen, wenn die Anleitung in den Bereich How-To´s übertragen wird und so allen Suchenden zur Verfügung steht.
    Es würde mich auch freuen, wenn ich Rückmeldungen über Verbesserungen oder alternative Einsatzmöglichkeiten als Kommentar erhalte.
    Ach ja, mir ist es schon einmal passiert, dass ich sehr glücklich darüber war, eine neue Lösung für ein Problem gefunden zu haben, nachdem ich über sämtliche Suchfunktionen nichts passendes gefunden hatte. Bis mich dann jemand auf einen anderen Beitrag aufmerksam machte, der fast die gleiche Lösung beschrieben hat. Auch in diesem Fall bitte ich um Hinweise.
    Und nun viel Spaß beim Lesen und Nachbauen.

    Da es zum Flashen des Wemos mit Tasmota im Internet schon reichlich Anleitungen gibt, gehe ich darauf nicht im Detail ein. Wichtig ist nur zu beachten, dass Ihr die Tasmota-Release „tasmota-display.bin“ verwendet. Ich selbst verwende zum Flashen den Tasmota-PyFlasher und bin mit der einfachen Bedienung ganz zufrieden. Aber auch da gibs x-verschiedene Möglichkeiten.
    Als erstes flashed Ihr den Wemos mit der Tasmota-Display.bin und verbindet ihn mit Eurem Netzwerküber WLAN. Anschließend die neue IP des Wemos im Browser aufrufen um zu prüfen, ob das Flashen funktioniert hat. (wie gesagt, Detailanleitungen dazu bitte im I-Net googeln)
    Den Wemos dann wieder vom Stromnetz trennen.
    Jetzt folgt das Verdrahten des Wemos mit dem Display. Welche GPIO (Pins) vom Wemos ihr für die Kommunikation mit dem Display verwendet ist nicht fixiert, ich verwende folgende GPIO´s und habe die Beschreibung darauf ausgelegt: D1 = SCL, D2 = SDA. Zusätzlich braucht Ihr beim Wemos noch: 3V-Out und GND
    Verbindet nun den Wemos (zum Testen am besten mit Breadboard und Jumperkabel) mit dem Display wie folgt:
    - Wemos 3V-Out an Display VCC
    - Wemos GND an Display GND
    - Wemos SCL an Display SCL
    - Wemos SDA an Display SDA

    Hinweis aus eigener Erfahrung: Solltet Ihr die Kabel am Display anlöten, passt sehr auf die Temperatur am jeweiligen Pin auf. Ich hab leider schon 2 Displays geschrottet, weils vermutlich zu heiß wurde. Ich verwende am Displayselbst deshalb nur noch Jumperkabel. Am Wemos löte ich weiterhin.

    Wenn das erledigt ist, könnt Ihr den Wemos wieder in Betrieb nehmen. Entweder über USB-Stromversorgung oder eine 5V-Stromversorgung an die Pins 5V und GND am Wemos.
    Nun den Wemos im Browser wieder mit der IP aufrufen.

    Jetzt geht’s ans konfigurieren des Wemos mit den richtigen Einstellungen. Dazu ruft Ihr zunächst das Configurations-Menü auf und wählt als Modul-Typ: Generic(18). Das ist normalerweise die letzte Option in der Liste. Dann mit Speichern die Auswahl übernehmen.
    Anschließend ruft Ihr wieder das Configurations-Menü auf, das jetzt ein wenig anders aussieht und stellt die Pinbelegung richtig ein. Bei D1 (GPIO 5) wählt ihr "SCL" und bei D2 (GPIO4) wählt ihr "SDA". Das ganze dann wieder speichern.
    Damit das Display jetzt schon was anzeigen kann, müsst ihr in der Tasmota-Hauptseite bei Toggle jetzt einschalten (ON), falls noch nicht automatisch auf ON steht. Das Display sollte jetzt (vermutlich) Datum und Uhrzeit anzeigen. (wenn nicht, versucht mal zuerst OFF und wieder ON zu schalten.
    Wenn das Display was anzeigt, steht schon mal die Grundkonfiguration.

    Um am Display die Daten von Loxone anzeigen zu können, müssen nun noch ein paar Einstellungen über die Console von Tasmota erfolgen. Dazu ruft Ihr im Tasmota-Hauptmenü das Console-Menü auf.
    Im oberen Teil werden die System-Daten angezeigt und unten habt ihr eine Zeile, in die Ihr Daten/Befehle eingeben könnt.
    Und genau über diese Zeile müssen nun verschiedene Parameter an das Tasmota-System übergeben werden.
    Auch hier gehe ich nur auf die erforderlichen Einstellungen ein, denn auch hierzu gibt’s im Internet genügend Anleitungen.
    Ich will hier aber nicht zu weit ausholen und kenne mich ehrlich gesagt auch nicht genug damit aus, um hier den großen „Lehrer“ zu spielen.
    Bei der Eingabe der Console-Befehle einfach alles klein schreiben, aber bitte auf Leerzeichen achten.
    Jeden Befahl mit der Eingabe-Taste (Enter) „absenden“.

    Befehl: displaymode 0
    damit stellt Ihr auf den Modus um, dass am Display die von Loxone gesendeten Daten angezeigt werden können. (Standard = displaymode 1 oder displaymode 2)
    Befehl: displayrefresh 2
    ist erforderlich, damit die Anzeige richtig funktioniert
    Befehl: i2cscan
    damit sagt euch Tasmoat (dort wo die Systemdaten angezeigt werden), welche Adresse Euer Display im i2C-Bus hat. Die Angabe ist hex und beim 0,96“-Display meistens 0x3c.
    Dieses Ergebnis wird in dezimal umgerechnet und ergibt bei 0x3c die Zahl 60. Wenn Ihr eine andere Adresse angezeigt bekommt, könnt Ihr das Ergebnis mit Goolge umrechnen
    lassen. Das Ergebnis (hier: 60) braucht Ihr dann gleich noch
    Befehl: displayaddress 60
    damit stellt Ihr die richtige Displayadresse ein
    Befehl: displayrow 2
    damit stellt Ihr ein, dass Euer Display 2 Anzeigezeilen hat (mit sehr kleiner Textgröße können auch mehr Zeilen eingestellt werden)
    Befehl: displaycols 16
    damit stellt Ihr ein, dass Euer Display 16 Anzeigespalten hat (auch hier ist bei kleiner Textgröße mehr möglich)

    So, das sind die erforderlichen Befehle. Als Kommentar zum Artikel stelle ich noch ein paar Infos vor, die ich mir zusammengesucht habe. Leider ist der Text hier zu lang für den Post selbst.

    Als nächstes legt Ihr in Loxone einen Virtuellen Ausgang mit der IP-Adresse vom Wemos an.
    Anschließend einen Virtuellen Ausgangsbefehl anlegen und bei „Befehl bei Ein“ nur „<v>“ (ohne Anführungszeichen) eintragen. Ggf. bei „Einheit“ noch „<v.1>“ eingeben, wenn Ihr eine Nachkommastelle in der Anzeige haben wollt. (bei mir z.B. 27,2 weils eine Temperaturanzeige ist)
    Den Virtuellen Ausgangsbefehl nun in der Loxone-Config auf eine Seite ziehen und „mit Daten füttern“.

    Weil ich mehrere in Loxone vorhandene Temperatur-Variablen nacheinander anzeigen lasse, verwende ich dabei den Baustein „Ablauflaufsteuerung“.
    Wer nur einen Wert anzeigen lassen möchte, kann den Analogwert beim Virtuellen Ausgangsbefehl anhängen, dann aber beim Ausgangsbefehl bei „Befehl bei Ein“ folgenden Befehl eintragen:
    /cm?cmnd=displaytext [zl1c1f1]<v>

    (was die Zeichen in den Eckigen Klammern bedeuten seht ihr unten bei der Tasmote-Übersicht der Console-Befehle. Vorab nur mal soviel: das l vor der ersten 1 ist ein kleines L , und setzt die line = Zeile)

    Damit wär die Beschreibung eigentlich schon fertig. Der entsprechende Analogwert sollte nun im Display angezeigt werde und ändert sich, sobald Loxone einen neuen Wert sendet.

    Wer es aber etwas komplizierter haben möchte und mehrere Werte nacheinander am Display anzeigen lassen möchte, braucht dazu den Baustein „Ablaufsteuerung“.
    An diesen Baustein habe ich an die Eingänge AI1, AI2 und AI3 drei Temperaturwerte von Loxone gehängt.
    Am Eingang S1 hängt ihr einen Virtuellen Eingang, den ihr als ganz normalen Taster konfiguriert und nur über die Visualisierung schalten (tasten) könnt. Den braucht man zum erstmaligen Starten der Ablaufsteuerung. (Evtl. gibt’s dazu auch eine andere Lösung, die kenne ich aber leider nicht.)
    Am Eingang S habe ich noch eine Constante mit der Zahl 1 angehängt, damit beim Starten immer die Sequenz 1 gestartet wird. Ob das erforderlich ist, weiß ich nicht, jedenfalls funktionierts.
    (Genaueres dazu ggf. in der Anleitung zur Ablaufsteuerung in Loxone anschaun)
    Den Ausgang TQ verbindet Ihr nun mit dem Virtuellen Ausgangsbefehl, den ihr vorher angelegt habt. (Bitte darauf achten, dass hier bei „Befehl bei EIN“ wieder nur <v> drin steht. (siehe oben)

    So, und jetzt müsst ihr noch den Baustein Ablaufsteuerung „programmieren“.
    In meinem Beispiel werden die Daten der Eingänge AI1, AI2 und AI3 nacheinander angezeigt. Die Anzeigedauer ist bei AI1 10 Sekunden und der Text „normal groß“. Bei AI2 und AI3 ist die Anzeigedauer jeweils 2 Sekunden und der Text sehr klein. Das Display wird jeweils vorab kurz gelöscht, damit ich keine „Doppelanzeigen“ habe und hinter dem jeweiligen Analogwert lasse ich ein „ C“ anzeigen, weils bei mir ein Temperaturwert ist. Das kleine Ringerl „°“ für „°C“ funktioniert leider nicht, weil das Tasmota anscheinend nicht anzeigen kann. Der Text und die Variablen können natürlich angepasst werden. Ich lass mir z.B. die Temperaturen meiner Pool-Temperatursteuerung (läuft über einen Shelly Plus mit SensorAddOn) von Pool, Absorber (am Dach) und dem WasserRücklauf von den Absorberplatten anzeigen.

    So, nun den Baustein wie folgt programmieren: (gilt natürlich nur für mein Beispiel)
    Zeile 1 set AQ1 = AI1
    Zeile 2 set AQ2 = AI2
    Zeile 3 set AQ3 = AI3
    Zeile 4 set TQ = "/cm?cmnd=displaytext%20[zl1c2f2] Pool[l2c2f2]" AQ1 " C"
    Zeile 5 sleep 10 s
    Zeile 6 set TQ = "/cm?cmnd=displaytext%20[zl1c2f1]Dach[l2c2f1]" AQ2 " C"
    Zeile 7 sleep 2 s
    Zeile 8 set TQ = "/cm?cmnd=displaytext%20[zl1c2f1]R~84cklauf[l2c2f1]" AQ3 " C"
    Zeile 9 sleep 2 s
    Zeile 10 goto 1

    end

    So, jetzt die Config in den Miniserver hochladen.
    Dann in der Visualisierung einmal die mit dem virtuellen Taster den Baustein „Ablaufsteuerung“ starten und das Display sollte „laufen“.

    Wer das Display über den Browser kurz testen will, kann das mit folgenden Befehl machen, der einfach in die Browserzeile einzugeben ist:
    http://<ip-von-wemos>/cm?cmnd=displaytext%20[zl1c2f2]TEXT

    So, nun viel Spaß bei Basteln und Ausprobieren.
    Sollte ich irgendwo einen Fehler eingebaut habe, oder Euch irgendwas anderes auffallen, was ich ggf. besser oder leichter umsetzen könnte, tut es mir leid und Ihr dürft mich gerne drauf aufmerksam machen.


    So, und hier noch eine kleine Übersicht der Tasmota-Console-Befehle bzw. auch ein paar Details für die Loxone-Config, die ich mir für dieses Projekt zusammengestellt habe.

    Loxone-Ausgang = http://<ip-von-wemos>
    Ausgangsbefehl = /cm?cmnd=displaytext…………….. (Punkte durch Variablen ersetzen)

    Tasmota-Console-Befehle in Bezug auf Textanzeige am Display

    displaymode = Zeigt, welcher Displaymode eingestellt ist
    displaymode 1 = Anzeige Datum und Uhrzeit
    displaymode 2 = Anzeige Wemos Statusanzeige
    displaymode 0 = Display kann mit eigenen Daten beschrieben werden
    displayrefresh = Zeigt, welcher Refreshmode eingestellt ist
    displayrefresh 2 = Stellt den Refreshmode aufsollte auf den erforderliche Modus 2 um
    displayaddress = Zeigt, die eingestellte Displayadresse
    i2cscan = scannt den I2C-Bus nach einem angeschlossenen Display und zeigt dessen Adresse in Hex (z.B. Ergebnis 0x3C)
    Das Ergebnis muss nun in dezimal umgerechnet werden (z.B. bei 0x3c ist das dann 60
    ggf. die Displayaddress dann auf 60 ändern
    displayaddress 60 = stellt die Diesplayadresse auf die z.B. erforderlich 60 um
    displayrows = Zeigt die eingestellte Zeilenzahl
    displayrows 2 = 0,96" Displays können bei normal großer Textgröße (Font 2) nur 2 Zeilen anzeigen, kann man aber bei kleinem Text ggf. anpassen)
    displaycols = Zeigt die eingestellte Spaltenanzahl
    displaycols 16 = Stellt die Spaltenzahl z.B. auf 16 ein
    displaytext [l1c1]TEXT = Der Text "TEXT" wird in Line (Zeile) 1 und Colum (Spalte) 1 angezeigt
    Displaytext [z] = Display wird gelöscht
    Displaytext [zl1c1]TEXT = mit z wird vorab das Display gelöscht und dann der Text "TEXT" in Zeile 1 und Spalte 1 angezeigt
    Displaytext [zl1c1f1] = wie vor, jedoch wird auch noch für den Text der Font 1 gesetzt.
    Font 0 = Classic GFX (sehr klein) -> 8x21 Zeichen möglich
    Font 1 = Größe 12 -> 3x 7 Zeichen möglich
    Font 2 = Größe 24
    Font 3 = Größe 8 (ähnlich Classic aber feiner)
    Font 4 = 7-Segment-Schriftart, die nur Zahlen und Rechenzeichen kann

    Umlauten (Ü,Ä,..) können angezeigt werden, indem man im anzuzeigenden Text anstelle des eigentlichen Umlaut folgende Zeichen einfügt:
    ä ~80 Ä ~81 ö ~82 Ö ~83 ü ~84 Ü ~85 ß ~86
    Beim Wort "Tür" würde das dann z.B. so aussehen: "T~84r"

    weitere Optionen findet man über google z.B. bei Github unter dem Suchbegriff "Tasmota displaytext"

    (sorry, ich wollte vorhergehenden Text mit Leerzeichen besser strukturieren um die Unterteilung besser zu erkennen, doch die Leerzeichen werden leider beim Veröffentlichen "verschluckt"

    Text über den Webbrowser (http-Befehl) am Display anzeigen lassen:

    Befehl: http://<IP-Adresse-vom-Wemos>/cm?cmnd=displaytext [z]
    Ergebnis: Display löschen
    Befehl: http://<IP-Adresse vom Wemos>/cm?cmnd=displaytext [l1c1]TEST
    Ergebnis: der Text "TEST" wird in Zeile 1, Spalte 1 angezeigt
    Befehl: http://<IP-Adresse vom Wemos>/cm?cmnd=displaytext [zl1c1]TEST
    Ergebnis: wie vor, das Display wird vorher gelöscht
    Befehl: http://<IP-Adresse vom Wemos>/cm?cmnd=displaytext [zl1c1f1]TEST
    Ergebnis: wie vor, Text wird mit Font1 angezeigt.

    Befehlsketten: mehrere Texte können auf einmal abgeschickt werden
    Beispiel: http………displaytext [zl1c1]ERSTE ZEILE[l2c1]ZWEITE ZEILE[l3c1]DRITTE ZEILE
    Ergebnis: Display löschen und drei Zeilen mit Text anzeigen

    Text über Loxone ausgeben
    Virtuellen Ausgang mit der IP vom Wemos erstellen
    Virtuellen Ausgangsbefehl erstellen und bei Befehl bei EIN folgenden Befehl angeben:
    http://<IP-Adresse vom Wemos>/cm?cmnd=displaytext%20[zl1c1f1]Temp <v>


    Viel Spaß
    und viele Grüße​
  • Miep Miep
    MS Profi
    • 18.01.2017
    • 520

    #2
    Puh, viel viel Text.

    Hast Du vielleicht auch noch was für die Augen ?
    Es ist nie zu spät für eine glückliche Kindheit.

    Kommentar


    • harryb
      harryb kommentierte
      Kommentar bearbeiten
      Ja, viel Text. Wa soll ich sagen?
      So verstehrs hoffentlich jeder und kanns auch individuell nachbauen. Wenn ich eine Anleitung suche, dann genau sowas. Halbherzige Beschreibungen finde ich persönlich immer gaaanz doof.
  • AlexAn
    Lebende Foren Legende
    • 25.08.2015
    • 4323

    #3
    Vor längerer Zeit hab ich mal so gemacht
    Grüße Alex

    Kommentar

    • keineahnung
      Extension Master
      • 05.03.2023
      • 197

      #4
      Moin,
      ich habe mir auch mal ein Display besorgt und es eingerichtet. Dabei sind mit folgende Dinge Aufgefallen:
      • DisplayText [zf0s1x0y0]Temperatur[f0s3x0y25]19.5 ~f8C
        • Ich gebe die Textposition mit absoluten Werten, das ist geschmacks Sache.
        • aber bei f0 hat man auf diese Zeichen LINK unter Fonts -> GFXFont 0xf8 -> ~f8 -> ° (Gradsymbol)
        • mit s1 .. lässt sich die skalierung anpassen.
      • Der Ausgang darf natürlich kein Digaler sein.. (war bei nur noch standardmäßig so eingestellt)
      • Ich musste bei meinem OLED Display das Model anpassen (DisplayModel 7 => Typ des Displays, hier SSH1106)
      • Mit DisplayAddress 0x3c kann man einfach die Hex Adresse angeben. Spart das Umrechnen, was übrigen auch mit dem Windows Rechner funktioniert
      • Du hast einmal ein "s" vergessen, hat mich kurz verwirrt ->
        • damit stellt Ihr die richtige Displayadresse ein
          Befehl: displayrow"s" 2​
      Vielleicht stelle ich später noch ein paar Bilder ein.

      Kommentar

      • chrisulox
        Extension Master
        • 15.07.2022
        • 133

        #5
        Mich würde es freuen wenn du den Thread aktuell haltest Klingt sehr interessant

        Kommentar

        Lädt...