Fhem: LCD 2004 Display mit ESPEasy als Statusanzeige

fhemViele Blog-Leser nehmen Telegram (-> Blog-Beitrag, Blog-Beitrag) oder Pushover (-> Blog-Beitrag) , um Statusmeldungen auf ihr Smartphone auszugeben. Beispielsweise: Alarmanlage ein- oder ausgeschaltet, Außentemperatur 25 Grad, Blumen müssen gegossen werden, Stau auf der A3 – Fahrdauer 59 min. Sowas und viel mehr kann man mit Fhem scripten. Ich habe Euch ja schon genügend Beispiele dafür gezeigt. Eine Alternative zu Telegram, eMail oder Pushover ist das legendäre LED-Display in Form eines Bilderrahmens, welches ich schon mittlerweile in 3 Ausführungen (MySensors, 433 MHz-Empfänger, ESP8266) gebaut habe. Ich habe für diese LED-Bilderrahmen eine sehr gute Resonanz bekommen. Viele von Euch bauen diese Bilderrahmen häufig nach. Grund: Nicht jeder möchte dauernd auf das Smartphone schauen, oder hat sogar keins.

lcd2004 espeasy esp8266 1

Nun habe ich in meiner Grabbelkiste ein paar alte LCD – Displays gefunden. Diese Displays gibt es in verschiedenen Geschmacksrichtungen: 2-zeilig mit 20 Zeichen oder auch 4-zeilig mit 20 Zeichen, wahlweise mit blauen oder grüner Hintergund-Beleuchtung. Zur einfachen Anzeige von: Stau: 54 min Fahrdauer, oder Balkon: 27 Grad reicht dieses Display völlig aus. Man kann ja es auch quasi dynamisch laufen lassen, und so bei jedem neuen Event eines Devices (Temperatursensor, usw.) das Display von selbst updaten lassen.

espeasy lcd 2004 fhem

Im folgenden zeige ich Euch die benötigten Bauteile für dieses coole Gadget und auch die notwendige Software. Wie alles bei mir im Blog: Stay creative und macht selber was draus.

Börsenkurse auf einem 4x20 Zeichen Display

Börsenkurse auf einem 4×20 Zeichen Display, Fhem Modul: Stockquotes

Bauteile:
LCD-Display, Typ 2004, kaufen bei Amazon.de (-> Link)
I2C-Schnittstelle, kaufen bei Amazon.de (-> Link)
NodeMCU (oder ein ESP8266 Baustein mit 2 GPIOs), kaufen bei Amazon.de (-> Link)
oder mein Lieblings-Board ( Witty -> Amazon.de (-> Link))
Wichtig: Lötkenntnisse müssen vorhanden sein. (Löten vom i2C an LCD-Display nötig)

Begrenztes Angebot: Ich habe die Bauteile für dieses Projekt noch vorrätig, wie abgebildet:
LCD 1602 : 2 zeilig 16 Zeichen
LCD 2004: 4 zeilig 20 Zeichen (3 Euro mehr)
notwendiger I2C Baustein (fertig angelötet)
Kabel
Wahlweise Witty – Board  oder WeMos Modul
Ich kann euch das komplette Set aus meiner Testumgebung, fertig geflashed, I2C-Baustein an dem LCD1602 gelötet für 23,50 Euro inkl. Versand anbieten. Inklusive Test. Oder auch als Einzelteile für Bastler. 3D-Gehäuse aus PETG (siehe hier) auf Anfrage.

Software für den ESP8266 Baustein:
Als Software verwenden wir hier die ESP-Easy Software. Wie der ESP 8266-Baustein geflashed wird, habe ich Euch in früheren Blog-Beiträgen gezeigt. (hier, hier, hier, hier)

Einmal geflashed und ins eigene WLAN genommen, könnt ihr komfortabel mit der ESP-Easy-Software das LCD 2004 Display konfigurieren.

i2c lcd 2004


LCD 2004 Display mit 3D- gedrucktem Rahmen – Preis auf Anfrage

Hierzu ruft ihr die Administrator-Oberfläche auf und wählt bei Settings 2 freie GPIO-Ports für SDA und SCL vom ESP 8266 aus (Hardware -> Hardware-Settings). Diese verbindet ihr mit der I2C Schnittstelle des LCD-Displays. Ich habe für mein Witty-Board GPIO 0 und GPIO 5 genommen. Als Device sucht ihr euch in der Vielzahl der Sensoren den LCD2004 aus der Liste aus und wählt GPIO5 und GPIO0 in den Drop-downs für SDA und SCL  aus.

gpio hardware settings espeasy

Einen Funktionscheck könnt ihr machen, indem ihr unter Tools -> I2C-Scan eine Antwort bekommt. Die Adresse 0x27 müsst ihr dann unter Devices -> I2C- Adress eintragen.

espeasy i2c check

 

Einen kurzen lokalen Display-Test könnt ihr machen, indem ihr in den ersten beiden Textfeldern einen kurzen Text eingebt. Nach einem Neustart des ESP-8266 Bausteins meldet sich das Display mit dem Text ESP Easy und dem Text, den ihr eingegeben habt.

Verbindung mit Fhem:
Anhand der einfachen Übertragung von Texten könnt ihr das Display sofort ausprobieren.
Wie in der Doku von ESP-Easy beschrieben, könnt ihr die Texte einfach per HTTP übertragen (-> Doku ESPEasy)

In Fhem fügt in Script solchen Programm-Code ein:

system("wget -q -O- 'http://192.168.178.52/control?cmd=lcdcmd,on'");
system("wget -q -O- 'http://192.168.178.52/control?cmd=lcd,2,1,Strom: wenig '");

Beispiel für eine Übertragung von Temperaturwerten von LaCrosse-Temperatursensoren (-> Blog-Beitrag):

{system("wget -q -O- 'http://192.168.178.52/control?cmd=lcd,2,1,".ReadingsVal("04Thermo","temperature","n.n")."'")} (danke André)

Bitte auch Teil 2 von dem Blog-Beitrag lesen!

 

Blog-Leser-Fotos:

Michael hat das LCD Display in einem halbdurchlässigen Spiegel eingebaut und zeigt „im Vorbeigehen“ immer aktuelle Temperaturen und Stromverbrauch an

Dieser Beitrag wurde unter Fhem-Hausautomation abgelegt und mit verschlagwortet. Setze ein Lesezeichen auf den Permalink.

25 Antworten zu Fhem: LCD 2004 Display mit ESPEasy als Statusanzeige

  1. Anton sagt:

    Hallo,
    mit folgender Url kann im LCD Display 2004 °C (Grad Celsius) dargestellt werden.

    http://192.168.1.120/control?cmd=lcd,1,1,Temp%A0:%A022.2%C2%B0C

    Leerzeichen = %A0
    °C = %C2%B0C%0D%0A

    Vielleicht hilft das dem einen oder anderen!

    Gruß Anton

  2. Thomas sagt:

    Kann man die LCD 2004 I2C auch mit 3,3V von die ESP12 betrieben?
    Bis jetzt bei mir noch nicht gelungen.
    Soll man „level shiffter“ anwenden?
    Wie connect ich diese?
    Danke für die beratung.
    Thomas

  3. Robin sagt:

    dann liegt es wohl an der Namensgebung.

    vielleicht hier mal nachsehen: https://www.letscontrolit.com/wiki/index.php/LCDDisplay

  4. Reimund sagt:

    Hallo Reimund,
    bekommst du vom DS18B20 Werte?
    Funktioniert das LCD2004? einfach mal „test“ in dem Textfeld reinschreiben.
    LG
    /robin

    Ja Werte werden angezeigt.
    Und ja test wird auch angezeigt im Display

  5. Robin sagt:

    Hallo Reimund,
    bekommst du vom DS18B20 Werte?
    Funktioniert das LCD2004? einfach mal „test“ in dem Textfeld reinschreiben.
    LG
    /robin

  6. Reimund sagt:

    Brauche bitte Hilfe.
    Habe am Nodemcu einen DHT und einen DS18b20 angeschlossen.
    Display ist ein LCD2004.
    Name der Sensoren
    Dallas1
    und DHT

    Wie bekomme ich die Temperatur am Display angezeigt.
    Bekomme es nicht hin
    Das obere ist für das Aquarium
    Das unter Raum.

  7. Pingback: Vergleich: Sonoff Schalter mit Original und Tasmota-Firmware und Alexa / Google-Home und Fhem | Robins Blog – Technik und Multimedia

  8. Robin sagt:

    Hallo Denis,
    In jedem LCD 1602 Display habe ich einen WeMos D1 Mini verbaut, siehe auch Blog-Beitrag: https://blog.moneybag.de/fhem-lcd-display-1602-fuer-feinstaubsensor-sds011/ und dort das Youtube Video.
    In meinen letzen Tests mit ältere ESP Firmware wurde nur ein LCD Display gefunden, und ja ich habe am i2c Baustein einen anderen Port gejumpert.

    LG
    /robin

  9. Denis sagt:

    Hallo Robin,

    erst mal vielen Dank für deinen Blog.

    Eine Frage hätte ich zu dem Bild mit den 4 LCDs im Bilderrahmen:

    Wird da pro LCD ein ESP8266 Baustein genutzt? Oder gibt es mit ESP-Easy die Möglichkeit mehrere Displays anzusteuern?

    Grüße,

    Denis

  10. Robin sagt:

    Hallo Robert,
    Direkt an 5 V. Das 1602 und 2004 LCD-Display braucht 5 V.
    SCA und SCL an Wemos 5 V und Masse und gut ist. Die Displays laufen bei mir schon Monate.

    LG
    /robin

  11. Robert sagt:

    Hallo,
    schöne und inspirierende Anleitung.
    Darf ich mal fragen, wie ihr das Display am nodemcu angeschlossen habt? 5v oder 3v und direkt oder über ein Levelshifter? Ich habe es derzeit direkt angeschlossen bin allerdings skeptisch, was die Haltbarkeit dieser Lösung angeht, da der ESP8266 ja nur 3v am GPIO verträgt…

    Viele Grüße

  12. Robin sagt:

    Hallo Jan,
    bei meinem Stromcounter hab ich das so gemacht:

    esa2000WZ_43CB:actual.* {
    my $raw_total = sprintf( "%.2f", ReadingsVal ("esa2000WZ_43CB","raw_total",0) );
    my $day = sprintf("%.2f", ReadingsVal ("esa2000WZ_43CB","day",0) );
    my $day_last = sprintf( "%.2f", ReadingsVal ("esa2000WZ_43CB","day_last",0) );
    fhem("set StromcounterLCD lcdcmd clear");
    fhem("set StromcounterLCD lcd 1 1 Stromverbrauch.IP:27");
    fhem("set StromcounterLCD lcd 2 1 Gesamt:$raw_total");
    fhem("set StromcounterLCD lcd 3 1 Gestern:$day_last");
    fhem("set StromcounterLCD lcd 4 1 Heute:$day");

    Das Display ist aus meinem Youtube-Video: https://www.youtube.com/watch?time_continue=2&v=ydrh2I_boR0

    Ich habe noch einige LCD2004 Displays mit Controller hier liegen, wer noch eins haben möchte, möge sich melden.
    LG
    /robin

  13. Jan sagt:

    Hallo Robin,
    nochmal Vielen Dank,
    Display läuft, zwar noch nicht perfekt, aber immer hin.
    Habe es über notify gebastelt.
    Warmwasser:temperature:.* {system(„wget -q -O- ‚http://192.168.178.69/control?cmd=lcd,2,1,Warmwasser „.ReadingsVal(„Warmwasser“,“temperature“,“n.n“).“‚“)}
    Zwar wenig umständlich aber läuft.
    Das einzige Problem ist, das meine 1-Wire Sensoren 4 Nachkommastellen anzeigen. 🙁
    Hat da jemand evtl. eine Idee, wie ich es auf 1 oder 2 Nachkommastellen umstellen kann? Vielen Dank

  14. Robin sagt:

    Hallo Jan,
    steht im Blog-Beitrag drin: Entweder per http. oder mit einem Plugin von fhem
    https://blog.moneybag.de/fhem-lcd-2004-display-mit-espeasy-teil-2/
    im forum steht es auch: https://forum.fhem.de/index.php?topic=55728.0

    LG
    /robin

  15. Jan Buben sagt:

    Hallo,
    Ist eine super Sache. Habe alles nachgebaut wie beschrieben.
    Display funktioniert auch super.
    Allerdings probiere ich schon seit Tagen eine Verbindung mit Fhem herzustellen.
    Ohne Erfolg 🙁
    Bitte dringend um Hilfe, brauch ich noch irgendwas spezielles in Fhem?
    Oder wie „verbinde“ ich espeasy mit fhem?
    Vielen Dank im Voraus.
    Gruß Jan

  16. Nicky sagt:

    Hallo,

    Bei mir wird anscheinend als falscher Zeichensatz benutzt wie kann ich das ändern.

  17. Robin sagt:

    Hallo Reimund,
    kann ich auch nicht helfen. ich habe nur einen BMP180 hier, aber keine Testschaltung aufgebaut.

    LG
    /robin

  18. Reimund sagt:

    Leider auch nicht.
    Dann wird
    bmp280#tmp Grad im Display angezeigt.
    Mit dem DS12b80 hat es funktioniert

  19. Robin sagt:

    Hallo Reimund,

    versuche mal bmp280#tmp

    LG
    /robin

  20. Reimund sagt:

    Danke funktioniert. Allerdings noch ein Problem.
    Habe nun einen BMP280 angeschlossen.
    Name bmp280
    Value Name 1 : tmp

    Im Display habe ich folgendes:
    1. Zeile. %systime%
    2. Zeile [bmp280#temp] Grad
    Bekomme die Zeit angezeigt. Dann aber nur Grad
    Keine Temperatur Anzeige.
    Um Web wird aber alles korrekt angezeigt.
    Wo mache ich da noch einen Fehler ?

  21. Robin sagt:

    Hallo Reimund,
    einfach an 5 V anlöten!
    Ansonsten gibt es auf der Rückseite ein blaues Potentiometer (= ja alte Schreibweise), da etwas dran drehen.
    LG
    /robin

  22. Reimund sagt:

    Habe das LCD 1602 . Kann abe die Schrift kaum erkennen. total blass.
    Betreibe es an 3.3 Volt am Nodemcu
    Was kann das sein

  23. Markus sagt:

    Hallo Robin,

    ich habe versucht das ganze nachzubauen, scheitere jetzt aber leider an der Umsetzung softwareseitig.
    Leider werde ich aus diesem Satz „In Fhem fügt in Script solchen Programm-Code ein:“ nicht ganz schlau…

    Wenn ich das {system("wget -q -O- 'http://192.168.178.52/control?cmd=lcd,2,1,".ReadingsVal("04Thermo","temperature","n.n")."'")} anpasse und in fhem reintippe bekomme ich auch eine korrekte Ausgabe auf meinem Display. Allerdings weiß ich jetzt nicht wie man das ganze automatisch abfragen bzw. sich aktualisieren lässt.

    Vielen Dank schonmal!

    Liebe Grüße,

    Markus

  24. Pingback: Fhem: LCD 2004 Display mit ESPEasy (Teil 2) | Robins Blog – Technik und Multimedia

  25. Carsten Fickenzer sagt:

    Hallo Robin,
    Ich würde mich für ein fertig geflashtes Set interessieren, wobei ich schon vorhabe, das ganze auch noch selbst nachzubauen. Wieder mal ein sehr interessanter Beitrag.
    Falls noch vorhanden, wäre es nett, wenn Du Dich meldest.

    Gruß Carsten

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.