Heute habe ich wieder ein tolles Projekt für alle Bastelfreunde unter Euch! Das Wetter wird jetzt wieder kälter und der Lötkolben kann angeschmissen werden ;-) Es geht um ein Statusdisplay, welches via Homematic Zentrale kurze Statusmeldungen ausgeben kann. Das Display, das ich Euch hier zeige hat 2×16 Segmente, die für Buchstaben, Zahlen und Zeichen genutzt werden können. Es ist auch möglich 2×20 oder 4×20 LCD Display zu verwenden. Wofür kann das Display genutzt werden?

Das Display wird über WLAN angesprochen und benötigt nur ein USB-Netzteil um mit Energie versorgt zu werden. Das Display kann über die Zentrale auch komplett ausgeschaltet werden. Hier einige Ideen und Anregungen wofür ich mir das Display vorstellen kann.

Ideen zur Anwendung

Als Signalisierung der Alarmanlage – Bei schwarfschalten bleibt das Display für 5 Minuten aktiv und gibt eine Meldung aus. Nach ablauf der Zeit schaltet sich das Display wieder ab. Auch können z.B. noch offene Fenster oder Türen angezeigt werden.

Für die Signalisierung der Haustürklingel -Durch den USB-Stecker kann das Display ganz einfach am USB Hub des Rechners betrieben werden. Sobald es an der Haustür klingelt wird das Display eingeschaltet und es erscheint eine Meldung.

Als Wattmeter an der Waschmaschine oder am Trockner, so kann der aktuelle Verbrauch in der ertsen Zeile und die Stromkosten (z.B. fürs laufende Jahr) in der zweiten Zeile dargestellt werden.

Für Diagnosemeldungen der CCU z.B. im Technikraum. Bei anliegenden Statusmeldungen der CCU (z.B. Update verfügbar oder leere Batterien), kann dies über das Display ausgegeben werden.

Auch als Anzeige der Wetterstation kann das Display genutzt werden. Hier wäre das 4×20 Display sehr gut geeignet. Es kann z.B. die Außentemperatur, der Wind und die Regenmenge angezeigt werden.

Interessant ist auch, dass dynamische Anzeigen über Variablen auf das Display geschrieben werden können. So ist es z.B. möglich Aktienkurse, Lottozahlen oder Systemzustände. Es können aber auch einfach nur statische Texte bei gewissen Events ausgegeben werden.

Wie Ihr sicher bemerkt habt, gibt es dutzende Anwendungsfälle, die man mit so einem Display abdecken kann. Da der Preis für den Aufbau sehr überschaubar ist, finde ich es eine echt gute Möglichkeit Meldungen vom Smarthome zu empfangen.

Was wird benötigt?

Doch nun zum Aufbau! Welche Komponenten werden für den Zusammenbau benötigt. Wir brauchen zuerst ein Display. Wichtig ist hierbei, dass wir ein LCD-Display verwenden, welches über I2C angesteuert wird. Dadurch sparen wir uns eine Menge Kabel und auch die Programmierung ist dadurch sehr einfach.

Welches Display

Für 16×2: eBay / Amazon

Für 20×4: eBay / Amazon

Welche Platine

Wemos D1: mini eBay / Amazon

Wie schon gesagt solltet Ihr darauf achten, dass der I2C Adapter to seriell bereits dabei ist. Dieser Steuert das wird per I2C Bus angesteuert und wandelt die Befehle in eine serielles Signal um, welches vom Display verarbeitet werden kann.

Das Herzstück bildet ein Wemos D1 mini. Dieses Modul ist mit einem ES8266 32-bit Controller ausgestattet und ermöglicht durch die integration von WLAN einen sehr einfachen Aufbau von IoT Aktoren und Sensoren.

Für die Energieversorgung wird ein 5V microUSB Netzteil benötigt. Hier brauchen wir, anders als beim Raspberry Pi, ein Netzteil mit geringer Leistung. 1A reichen reichen daher vollkommen aus.

Damit das Display auch gut positioniert werden kann, habe ich mit meinem 3D-Drucker ein Gehäuse angefertigt. Die Vorlage davon kommt von Thingiverse. Dort gibt es auch für die anderen Typen (20×2 20×4) Vorlagen, die Ihr verwenden könnt.

Zudem benötigen wir noch 4 kurze Litzen um die Wemos Platine mit dem Display zu verbinden. Damit alles einen sichern Halt im Gehäuse findet habe ich zudem etwas (doch doch etwas mehr ;-) ) Heißkleber verwendet.

Vorbereiten der Wemos D1 mini

Um die Platine nutzen zu können, müssen wir diese zuerst flashen. Dafür verwenden wir die ESPEasy Firmware. Diese ist aktuell in der Version R120 verfügbar.

Zuerst laden wir uns das aktuelle Release heruntern. Nachdem Ihr die Zip-Datei entpackt habt und den Wemos D1 per USB an den PC angeschlossen habt, müssen wir zuerst heruasfinden, welcher Com-Port der Wemos zugewiesen worden ist. Das können wir über den Gerätemanger nachsehen. In meinem Beispiel ist es der Port 5.

Nun starten wir das flash.cmd aus dem zuvor heruntergeladenen Archiv. Es öffnet sich die Kommandozeile. Dort werden wir zuerst nach dem Com-Port gefragt, an dem die Wemos angeschlossen ist. Hier tragen wir nun den soeben herausgefundenen Port ein.

Die Eingabe wird mit Enter bestätigt. Die nächste Abfrage bezieht sich auf den Speicher, der Wemos. Solltet Ihr das Gerät gekauft haben, welches ich verlinkt habe, könnt Ihr hier 1024 eintragen. Andernfalls müsst Ihr kurz im Datenblatt nachsehen, ob es 512 oder 4096 KB sind.

Nun folgt noch die Abfrage, welche Version installiert werden soll. Da wir zuvor die 120 heruntergeladen haben, tragen wir diese Zahl auch hier ein.

Es startet der Flashvorgang, der durch ein schnelles blinken der blauen LED an der Wemos signalisiert wird.

Wemos ins WLAN einbinden

Nachdem die Platine fertig geflasht wurde, können wir per WLAN auf das Gerät zugreifen um dieses in unser bestehendes Netzwerk zu integrieren. Dazu suchen wir mit dem Smartphone oder dem PC nach dem WLAN mit dem Namen „ESP_EASY_0“ das benötigte Passwort lautet „configesp„. Es öffnet sich eine kleine Website. Auf dieser sind alle, sich im Umkreis befindlichen, WLAN aufgelistet. Hier wählen wir das passende WLAN aus und tragen das entsprechende Passwort in das Eingabefeld ein.

Das Gerät startet danach neu und bucht sich automatisch in das entsprechende WLAN ein. Danach ist das Gerät bei Euch im Netzwerk unter http://newdevice erreichbar. Über die Adresse gelangen wir auf die Konfig-Seite der Platine. Hier können wir nun auch den Namen ändern, damit das Gerät vernünftig im Netzwerk identifiziert werden kann.

Ihr könnt den Namen „newdevice“ auch ändern. Das kann über den Menüpunkt „config“ gemacht werden. Ich habe meiner Wemos den Namen HomematicLCD1 verpasst. Nach einem Neustart kann ich die Config-Seite über http://HomematicLCD1 erreichen. 

Display zusammenbauen

Bevor wir uns weiter der Wemos widmen, müssen wir zuerst das LCD-Display zusammenbauen. Wenn Ihr Euch ein Display mit fertig angelötetem Adapter gekauft habt, könnt Ihr diesen Punkt überspringen. Falls nicht, muss der Adapter (18 Pins) an das Display gelötet werden. Hier ist es egal, ob Ihr nun ein 16×2 oder ein anderes Display verwenden wollt. Die Kontakte, die zum Display gehen stellen die serielle Verbindung zur Anzeige her.

Die anderen vier Beine sind für die Spannungsversorgung und die I2C Kommunikation mit der Wemos zuständig.

Auf dem I2C Modul sind neben den beiden Schnittstellen noch die Lötpunkte A0, A1 und A2 zu sehen. Diese sind für die Adresse des I2C Busses notwendig. In meinem Fall sind alle Lötpunkte offen.

I2C Adresse einstellen

Die Adresse wird über die drei Lötverbindungen eingestellt. Es können 8 unterschiedliche Adressen vergeben werden. Im Ausgangszustand (alle Verbindunge offen) wird die 0x27 verwendet.

Wenn Ihr eine andere Adresse wählen wollt, weil z.B. mehrere Display parallel angesteuert werden sollen, findet Ihr auf dieser Seite eine Übersicht der Adressen, die gewählt werden können.

In dieser Anleitung lassen wir alle Pins offen und verwenden die Adresse 0x27. Diese tragen wir gleich auch in die Wemos ein, um das Display anzusteuern.

Display an Wemos anschließen

Nun müssen wir noch die vier Adern mit der Wemos verbinden. Es handelt sich dabei um die Spannungsversorgung, den Ground, und die beiden Adern für den I2C Bus (SDA, SCL).

Achtung! Es gibt auch Displays und I2C Adapter, die mit 3,3V arbeiten. Diese dürfen dann nicht an die 5V Spannungsversorgung angeschlossen werden. Dafür hat die Wemos einen separaten Pin, der 3,3V liefert!

Wir löten zuerst die vier Adern an das I2C Modul auf dem Display. Dabei habe ich mit der Spannungsversorgung angefangen:

  • GND –> gelb
  • VCC –> orange
  • SDA –> schwarz
  • SCL  –> blau

Nun müssen wir die vier Kabel auch an der Wemos anlöten. Auch hier eine Übersicht:

  • Orange –> 5V
  • Gelb –> G
  • Schwarz –> D2
  • Blau —> D1

So sieht das Resultat dann aus, wenn Ihr die Pins angelötet habt. Ich hatte zusätzlich noch Beinchen am Wemos, da ich es zum Testen zuvor in ein Steckbrett aufgebaut habe. Diese braucht Ihr aber nicht, wenn Ihr das Teil später in ein Gehäuse packen wollt.

Wemos mit Display bekannt machen

Nun können wir das Display mit der Wemos bekannt machen. Da wir soeben die Spannungsversorgung und die Busverbindung hergestellt haben, können wir nun eine Kommunikation aufbauen. Wir schließen das Gerät wieder an die 5V Spannungsversorgung an und warten kurz, bis das Gerät wieder im Netzwerk verfügbar ist.

I2C Bus scannen

Auf der Weboberfläche klicken wir auf „Tools“. Dort ist der Punkt „I2C Scan“ zu finden. Mit einem Klick startet der Scan und unser Display wird erkannt!

Es erscheint unser LCD-Display und wir sehen auch wieder, die soeben angesprochen Adresse 0x27.

I2C Display konfigurieren

Jetzt navigieren wir zum Menüpunkt „Devices“. Dort klicken wir auf „Edit“ beim ersten Eintrag. Hier müssen wir zuerst das „Device“ auswählen. Es handelt sich bei unserem Display um ein „LCD2004“

Bei der I2C Adresse tragen wir nun die 27 ein und bei „Display Size“ die entsprechende Größe. Bei meinem Beispiel ist das 2×16. Wenn Ihr ein anderes Display verwendet, dann könnt Ihr dies hier anpassen.

Jetzt können wir auch die erste Testnachricht auf das Display schicken. Dazu tragen wir in Linie 1 und Linie 2 einen text ein. Dieser sollte max. 16 Zeichen pro Zeile betragen.

Mit einem Klick auf Submit werden die beiden Textzeilen an das Display übertragen.

Kontrast einstellen

Wenn Ihr nun die Testnachricht auf dem Display sehen könnt, könnt Ihr jetzt den Kontrast einstellen. Das geschieht über den kleinen, blauen Poti.

Gehäuse aufbauen

Nachdem alle Schritte erfolgreich abgearbeitet worden sind, können wir uns nun dem Gehäuse widmen. Das Gehäuse habe ich, wie oben schon erwähnt, von Thingiverse, es gibt auch andere Varianten, ich habe mich für diesen Tischaufsteller entschieden. Die Druckzeit lag bei ca. 2,5 h.

Das Display wird in das Gehäuse gelegt und mit zwei Schrauben fixiert. Ich habe an dieser Stelle mit Heißkleber nachgeholfen.

Das microUSB Kabel habe ich durch die vorhandene Öffnung geführt und dann alles mit einer ordentlichen Dosis Kleber fixiert. Man könnte das Ganze Konstrukt natürlich auch noch mit Harz vergießen, für meine Zwecke reicht der Heißkleber aber vollkommen aus. Evtl. würde dann auch der WLAN-Empfang der Wemos leiden…

Wir können unser Display nun überall dort platzieren, wo wir eine 5V Stromquelle und ausreichenden WLAN-Empfang haben!

Kommunikation mit dem Display

Es ist ja ein wenig Witzlos, die Texte, die angezeigt werden sollen nur über die Weboberfläche der Wemos absetzen könnte. Daher zeige ich Euch nun, wie Ihr das Display per http-Request steuern könnt.

Um das Display in ein bestehendes Homematic-System einzubinden, führen wir mit einem einfachen Skript eine http anfrage aus, die dann einen String an das Display übermittelt. 

Hier seht Ihr nun, wie Ihr per http-Request einen Text an das Display übermitteln könnt:

http://192.168.178.119/control?cmd=lcd,1,1,TEST Zeile 1
http://192.168.178.119/control?cmd=lcd,2,1,TEST Zeile 2

Ihr müsst natürlich die IP-Adresse durch Eure ersetzen. mit dem Kommando „control?cmd=lcd“ steuern wir das Display an. Die erste „1“ steht dabei für die erste Zeile des Display. Wenn Ihr ein vier-zeiliges Display verwendet, dann könnt Ihr hier die Zahlen 1-4 einsetzen. Die folgende Ziffer steht für das Zeichen. Wir schreiben als mit dem ersten Beispiel in der ersten Zeile beginnend mit dem ersten Zeichen. Wenn wir z.B. 1,5 schreiben würden. Dann blieben die ersten 4 Zeichen stehen und der Text würde erst ab dem 5. Zeichen geändert.

Das ist gerade bei Anwendungen interessant, wo wir einen statischen Text z.B. Raumtemp. und eine sich ändernde Zahl haben. So wird immer nur der aktuelle Wert und nicht die komplette Zeile neu geschrieben. Das ist später bei den Skripten sehr interessant.

Wir können die Befehle einfach hintereinander in einen Browser kopieren. Sobald diese abgeschickt werden, ändert sich der Zustand auf dem Display. 

Neben den Befehlen für das Übermitteln von Zeichen, gibt es 3 weitere Steuerbefehle, die genutzt werden können:

http://192.168.178.119/control?cmd=lcdcmd,off
http://192.168.178.119/control?cmd=lcdcmd,on
http://192.168.178.119/control?cmd=lcdcmd,clear

Diese sind recht selbsterklärend. Mit „off“ wird die Beleuchtung des Display ausgeschaltet. Die Zeichen, die zuvor angezeigt waren bleiben aber bestehen. Diese können mit „clear“ gelöscht werden. Das Display kann über „on“ wieder eingeschaltet werden. 

So können Statusmeldungen auch nur für eine kurze Zeit eingeblendet werden ohne dass das Display die ganze Zeit leuchtet.

Einbindung in Homematic über Stripte

Jetzt zeige ich Euch, wie Ihr das Display über Homematic ansteuern könnt. Dazu habe ich ein kleines Programm erstellt. Wenn die Systemvariable „Anwesenheit“ auf Abwesend wechselt, soll zuerst der aktuelle Inhalt vom Display gelöscht werden und der Status Abwesend soll dann signalisiert werden.

Hier nun das Programm:

Zuerst werte ich den Zustand der Variable „Anwesenheit“ aus. Bei einer Änderung zu „nicht anwesend“ löse ich zwei Skripte aus.

Das erste Skript löscht den Inhalt des Display.

Dieses sieht so aus:

Das erste Skript wird ohne Verzögerung sofort gestartet. Das zweite Skript schreibt nun den Inhalt „Status Abwesend“ in die erste Zeile des Displays:

Dieses Skript lasse ich mit einer Verzögerung von 1 Sekunde ausführen, damit es zu keinen Kollisionen kommt. Das ist jetzt zwar ein sehr sehr einfaches Programm, zeigt aber, wie das Display genutzt werden kann. Wir können auch noch viel komplexere Daten an das Display senden. So können auch Inhalte, Zustände, Stromwerte und viele mehr aus der Homematic-Zentrale direkt an das Display gesendet werden.

Das würde den Rahmen dieses Artikel aber sprängen. Werner wird Euch in den nächsten Tagen einiges mehr dazu zeigen, wie Ihr das Display im vollen Umfang nutzen könnt!

Das könnte Dich auch interessieren

Homematic DIY-Projekt: Thermometer und Hydrometer – fertige Platine im Eig...
Aufrufe 10575
Heute habe ich ein sehr spannendes Thema für Euch. Es geht um selbst gebaute Sensoren, die sich, wie “normale” Sensoren einfach ohne Umweg an die CCU2...
Bauteile für den DIY-Sensor jetzt im Shop erhältlich
Aufrufe 818
Nach einer gefühlten Ewigkeit und einer halben Weltumrundung sind nun auch alle Teile für den DIY-Sensor (zum ausführlichen Bericht) bei mir eingetrof...
DIY Homematic-Sensor – Platine jetzt im Shop verfügbar
Aufrufe 1543
Vor ein paar Tagen habe ich Euch das Projekt DIY-Bausatz für Homematic-Sensoren vorgestellt. Jérôme Pech betreibt das Projekt via GitHub und Alexander...
Homematic DIY-Projekt: 8-fach Thermometer -fertige Platine im Eigenbau
Aufrufe 385
Heute haben wir wieder ein spannendes Projekt aus der Homematic DIY-Ecke für Euch. Ich zeige Euch, wie Ihr mit Hilfe von AsksinPP einen eigenen 8-fac...
Orange Pi CCU3 – Strom per LAN PoE
Aufrufe 218
Vor wenigen Tagenhabe ich Euch gezeigt, wie Ihr mit wenigen Euros eine vollwertige CCU3 mit Hilfe eines Orange Pi's aufbauen könnt. Das System ist nu...
NEUHEIT – Homematic IP Komplettbausatz Schaltplatine – 2-fach HmIP-P...
Aufrufe 2158
Bereits am 25.07.2018 habe ich euch in dem Artikel "Vorschau - Neuigkeiten 09.2018" über diesen Aktor informiert. Nun ist er verfügbar und ich möchte...
14 Kommentare
  1. Tobi sagte:

    „Werner wird Euch in den nächsten Tagen einiges mehr dazu zeigen, wie Ihr das Display im vollen Umfang nutzen könnt!“

    Sollte da nicht noch etwas kommen.

    Mir würde es Sehr helfen, ich bekomme momentan nicht einmal eine temperatur angezeigt.

    es währe prima wen da noch etwas zum befüllen kommen könnte.

    mfg Tobi

    Antworten
    • Leif sagte:

      Hallo Frank,

      du musst nur den Datenpunkt des Sensors abgreifen, z.B.:
      dom.GetObject(„BidCos-RF.SERIENNUMMER_DES_SENSORS:1.TEMPERATURE“).Value();

      In dem Skript unten habe ich statt der Seriennummer „HVL.Wunderground“ eingetragen, da dies ein Virtuelles Gerät ist und keine Nummer hat. Also z.B. LEQ0123456 oder OEQ01234567.
      Anschließend musst du noch mitteilen, was du abrufen möchtest, z.B. die Temperatur mit „.TEMPERATURE“.
      Damit man vorher schon sehen kann ob alles klappt, lasse ich mit die erstellte Variable mit „WriteLine(list_zeile1);“ anzeigen.
      Also einfach unter Programme und Verknüpfungen auf der CCU den Knopf Script testen drücken und probieren, bis du keine Fehlermeldung mehr bekommst und ein plausibler Wert angezeigt wird…
      Viel Erfolg

      Antworten
  2. Leif sagte:

    Hallo zusammen,

    hier ein Beispiel für die Temperatur:

    ! ———-
    !LCD 2004 Script
    ! ———-

    var temp = dom.GetObject(„HVL.Wunderground:1.TEMPERATURE“).State();

    string list_zeile1;
    string list_zeile2;

    ! ———-
    !Temperatur
    ! ———-
    list_zeile1 = list_zeile1 + „Temp:“;
    temp = temp.ToString(1);
    list_zeile1 = list_zeile1 + temp;
    list_zeile1 = list_zeile1 + „°C“;

    ! ———-
    !Ausgabe
    ! ———-

    ! clear
    string stdout;
    string stderr;
    system.Exec(„wget -q -O – ‚http://192.168.0.89/control?cmd=lcdcmd,clear'“, &stdout, &stderr);

    ! Ausgabe
    string stdout;
    string stderr;
    system.Exec(„wget -q -O – ‚http://192.168.0.89/control?cmd=lcd,1,1,“#list_zeile1#“‚“, &stdout, &stderr)

    ! ———-
    !Debug
    ! ———-

    WriteLine(list_zeile1);

    Hat jemand eine Idee wie man die Sonderzeichen (z.B. °) darstellen kann?

    Antworten
    • Micha sagte:

      Das “ ° “ geht mit “ ß „. Es ist mir aber noch nicht gelungen Umlaute darzustellen. Hat da vielleicht einer eine Idee?

      Antworten
      • Frank Raddau sagte:

        Hi Micha,
        danke für den Tipp mit dem Grad Zeichen, habe die Brille aufgesetzt und ein Grad Zeichen entdeckt, nochmals vielen Dank,

        Antworten
  3. Frank Raddau sagte:

    Hallo Sebastian,
    super Sache, eine Frage möchte mir die Daten meines HM Kombisensor anzeigen lassen, habe aber kein Plan von Scripte schreiben, hast Du evtl. einen Tipp?

    Antworten
    • Christian sagte:

      Hallo, ich hänge da auch fest. Aber zunächst einmal vielen Dank für diesen tollen Artikel.

      Ich lade den Tempertaur Wert von Netatmo in eine Varible:

      string temp = dom.GetObject(„CUxD.CUX9002002:1.TEMPERATURE“).Value().ToString(1);

      Jetzt ist die Frage wir der der Befehl aussieht das in den URL Aufruf dann die Variable temp mit gesendet wird.

      Kann mir da bitte einer weiter helfen ?

      Grüße

      Antworten
      • Frank Raddau sagte:

        Hallo Christian,
        jetzt funktioniert es! Danke!
        Kleines Problem noch, ich habe ein Display mit 4 Zeilen, die Temperatur wird mir in Zeile1 angezeigt und Die Luftfeuchte in Zeile2, jedoch wird wenn es aktualisiert, wird erst die Temperatur in Zeile 1 angezeigt und dann die Luftfeuchte in Zeile 2, dabei geht die Temperatur in Zeile 1 weg und die Luftfeuchte bleibt in Zeile 2 stehen.

        Antworten
  4. Mathias sagte:

    Danke für den Tipp!
    Ich denke, dass man es zum Auslesen von Temperaturen, offenen Fenstern sehr gut einsetzen kann.
    Aber zur Statusanzeige für eine Alarmanlage völlig unbrauchbar.
    Szenario: ich will die Balkontüre öffnen. Ich gehe zum Balkon, um zu lesen, dass die Alarmanlage scharf ist.
    Nun muß ich zur Eingangstüre, um unscharf zu schalten.
    Besser wäre dieses Projekt: https://github.com/jp112sdl/WemosD1_HomeMatic_StatusDisplay/wiki/Housing_MW
    Da sieht man gleich vom weiten, ob die LED rot oder grün ist.

    Antworten

Dein Kommentar

An Diskussion beteiligen?
Hinterlasse uns Deinen Kommentar!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

* Die Checkbox für die Zustimmung zur Speicherung ist nach DSGVO zwingend. Dieses Formular speichert Ihren Namen, Ihre Email Adresse sowie den Inhalt, damit wir die Kommentare auf unsere Seite auswerten können. Weitere Informationen finden Sie auf unserer Seite der Datenschutzbestimmungen.

Ich akzeptiere die Speicherung der Daten.