Fhem: LCD 2004 Display mit ESPEasy (Teil 2)

fhemMein letzter Blog-Beitrag über das LCD 2004 Display mit ESPEasy ist auf großer Resonanz gestoßen. Zur Erinnerung: Ihr hängt dieses Modul (ESP 8266, NodeMcu, WeMos, Witty-Board mit einem LCD Display) in Euer WLAN und mit etwas Scripting habt ihr alle Informationen von Euren Sensoren auf dem Display gezeigt. Es kamen aber einige Fragen auf, wie man mit Fhem das Display zum „Scrollen“ bringen kann.
Blog-Leser Carsten hat sich dazu ein paar Gedanken gemacht, nachgeschaut was es im Fhem-Plugin Bereich so gibt und ich habe dazu noch ein kleines YouTube-Video gemacht. In meinem Video sind natürlich andere IP-Adressen zu sehen.

4x20 Zeichen LCD-Display mit 8266 Witty-Board

4×20 Zeichen LCD-Display mit 8266 Witty-Board

 

fhem lcd 2004

 

Hier die Informationen von Carsten:

Ich habe mich zunächst mal eines nicht „eingecheckten“ Moduls bedient: DLCD
Dort habe ich meine Sensorwerte in einem Reading zusammenfassen lassen. Diese werden als Event in FHEM immer wieder abgefragt und im Reading ausgegeben. Man kann die Intervalle einstellen.

Link für DLCD: http://www.fhemwiki.de/wiki/DLCD
(oben ein Bild für die Readings und Internals von DLCD)

Dann habe ich mich des Hilfsmoduls DOIF bedient und folgendes zusammengebastelt:

Automation aus DLCD heraus mit DOIF

Hier wird also z.B., wenn als Event „scrollingState: 1“ erscheint, das Reading aus „Line 1“ (aus dem DLCD Modul) geholt und auf das Display ausgegeben.
Jetzt muß man natürlich ein wenig mit Leerzeichen herumspielen, damit sich die Werte auch über das gesamte Display ausbreiten und nicht von den
vorherigen Werten „gestört“ werden, denn die Zeilen löschen sich ja nicht nach der Ausgabe.[sgmb id=“1″]

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

10 Antworten zu Fhem: LCD 2004 Display mit ESPEasy (Teil 2)

  1. Jan sagt:

    Hallo Robin,
    Aktion wird ausgeführt und läuft auch ohne Probleme.
    Hat mich nur gewundert das error da steht.
    Vielen Dank im Voraus

  2. Robin sagt:

    Hallo Jan,
    schaue ich nach, wird denn die Aktion ausgeführt?
    Ich glaube das ist nur eine Statusmeldung.
    LG
    /robin

  3. Jan sagt:

    Hallo,
    also die Kombi aus DLCD und DOIF läuft super.
    Macht auch was es soll, allerdings bekomme ich im DOIF immer folgenden Fehler:
    bei Readings:
    error
    {system(„wget -q -O- ‚http://192.168.1.14/control?cmd=lcd,4,1,“.ReadingsVal(„Display1″,“Line4″,“n.n“).“‚“)}: -1
    keine ahnung wo das :-1 herkommt.
    Habe jemand evtl ne idee?
    Vielen Dank im Voraus

  4. Carsten sagt:

    Hallo Jan,
    Hast Du das attr „CheckReadingEvent“ auf 1 gesetzt?

  5. Jan sagt:

    Hallo,
    Die Kombi aus DLCD und DOIF läuft.
    Allerdings habe ich das Problem, wenn doif gesendet hat, stellt er um auf cmd_2.
    Danach passiert nix mehr. Keine Aktualisierung.
    Jemand ne Idee, wie ich es abstellen kann?
    Vielen Dank im Voraus.

  6. Robin sagt:

    Hallo Lenoxef,
    ich bin da nicht mehr im Thema, aber schaue mal in die Doku des Plugins rein, da müsste es erklärt sein.
    Ich kann mich dran erinnern das es ganz einfach war, Werte (Readings) dort zuzuweisen.

    LG
    /robin

  7. lenoxef sagt:

    Wo kommt denn dieses „scrollingState“ her und wie weise ich dort werte zu?

  8. Carsten sagt:

    Hallo Peter,
    Was mir adhoc auffällt, ist, das Du im DOIF Aufruf

    define Display1_doif DOIF ([Display1:“scrollingState: 1″]) ({system(„wget -q -O- ‚http://192.168.1.26/control?cmd=lcd,1,1,“.ReadingsVal(„Display1″,“Line1″,“n.n“).“‚“);;return 0})

    vor dem http, ein normales Komma gesetzt hast, anstatt ein ‚ . Das passiert häufig bei copy and paste. Ich kann Dir, falls noch gewünscht gerne mal die Readings und attributes meines DLCD Moduls zukommen lassen, damit Du eine Idee davon bekommst.
    Gruß Carsten

  9. Peter sagt:

    Hallo Carsten,
    habe versucht Deine DOIF-Idee (mit DLCD) zu realisieren, bereits mit dem Kommando:
    define Display1_doif DOIF ([Display1:“scrollingState: 1″]) ({system(„wget -q -O- ‚http://192.168.1.26/control?cmd=lcd,1,1,“.ReadingsVal(„Display1″,“Line1″,“n.n“).“‚“);;return 0})
    DOELSEIF ([Display1:“scrollingState: 2″]) ({system(„wget -q -O- ‚http://192.168.1.26/control?cmd=lcd,2,1,“.ReadingsVal(„Display1″,“Line2″,“n.n“).“‚“)})
    (mit angepasster IP) steigt mein FHEM aus, den Vorgang habe ich mehrfach wiederholt und immer das selbe Problem. Nun komme ich allerdings mit der Einstellung im DLCD Modul nicht ganz klar.
    Wäre es möglich, dass Du mir ein Beispiel für meinen Fenstersensor .
    „HM_FS_Bad:state:open“
    mal zur Verfügung stellst ?
    Grüsse von Peter

  10. Edi77 sagt:

    Hallo,

    Das ist auch eine Möglichkeit ein lcd/oled anzusteuern.
    Man kann das aber auch ganz ohne Modul und einfach mit http Aufruf machen.

    define OLED_ESP67 dummy
    define esp_oled67 at +*00:01 {\
    my $temp=(ReadingsVal („KS300″,“temperature“,“0″));;\
    my $humi=(ReadingsVal („KS300″,“humidity“,“0″));;\
    my $wind=(ReadingsVal („KS300″,“wind“,“0″));;\
    my $rain=(ReadingsVal („KS300″,“rain“,“0″));;\
    my $pressnn=(ReadingsVal („BMP180OUTDOOR“,“pressure-nn“,“0″));;\
    my $energieb=(ReadingsVal („POWERZAEHLER“,“power“,“0″));;\
    my $energiee=(ReadingsVal („POWERZAEHLER“,“feed_L1″,“0″));;\
    # Log 3, „set OLED_ESP67: $temp$humi“;;\
    {GetHttpFile(„192.x.x.x:80″,“/control?cmd=lcdcmd,clear“)};;\
    {GetHttpFile(„192.x.x.x:80″,“/control?cmd=lcd,1,1,Temp:+$temp+Hum:+$humi“)};;\
    {GetHttpFile(„192.x.x.x:80″,“/control?cmd=lcd,2,1,Wi:+$wind+Re:+$rain“)};;\
    {GetHttpFile(„192.x.x.x:80″,“/control?cmd=lcd,3,1,hPa:+$pressnn“)};;\
    {GetHttpFile(„192.x.x.x:80″,“/control?cmd=lcd,4,1,B:+$energieb+E:+$energiee+Watt“)};;\
    }
    attr esp_oled67 verbose 0

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.