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
Kommentar