Mein 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.
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″]
Hallo Robin,
Aktion wird ausgeführt und läuft auch ohne Probleme.
Hat mich nur gewundert das error da steht.
Vielen Dank im Voraus
Hallo Jan,
schaue ich nach, wird denn die Aktion ausgeführt?
Ich glaube das ist nur eine Statusmeldung.
LG
/robin
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
Hallo Jan,
Hast Du das attr „CheckReadingEvent“ auf 1 gesetzt?
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.
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
Wo kommt denn dieses „scrollingState“ her und wie weise ich dort werte zu?
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
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
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