Ich habe heute ein Update gemacht wg. der neuen Möglichkeiten bei ESPEasy (Ausgabe von Leerzeichen, Löschen einer Zeile ohne "clear").
Das Handling dazu ist mir aber nicht wirklich klar, die Hinweise in der Commandref dazu habe ich leider auch nicht wirklich verstanden.
Kleinigkeit am Rande: Wenn das attr displayTextEncode nicht vorhanden ist, kann man es setzen. Ist es bereits definiert und möchte man den Wert ändern, bekomme ich folgende Fehlermeldung:
ESPEasy_ESP_G14: displayTextEncode must be: 0,1
Abhilfe: jeweils attr displayTextEncode löschen - danach kann man es auf den gewünschten Wert setzen.
Meine Testanweisung:
set <esp> oled 6 1 Test%20A%20B%20C
Setze ich das Attribut auf 0, werden jetzt Leerzeichen ausgegeben. Prima.
Was fehlt jetzt, damit die Zeile vor Ausgabe gelöscht wird?
Das attr displayTextWidth steht bereits auf 16.
Wenn ich die Commanref richtig verstehe, brauche ich "displayTextEncode 0", damit ich Leerzeichen bekomme. Dann kann ich aber keine Zeile löschen, da dafür anscheinend "displayTextEncode 1" vorausgesetzt wird.
2. Frage: Auf einem LCD gebe ich ab Spalte 16 den aktuellen Stromverbrauch aus. Der ist meistens 3-stellig, manchmal aber auch 4-stellig. Ein Problem habe ich, wenn ein Wechsel vom 4-stelligen zu einem 3-stelligen Wert kommt. Die letzte Stelle bleibt stehen, obwohl mittlerweile ungültig. Bisher behelfe ich mich immer mit einem "lcdcmd clear" aber vielleicht gibt es ja auch eine bessere Lösung dafür.
Schön wäre es, nicht nur eine komplette Zeile mit Leerzeichen überschreiben zu können sondern auch einen Bereich innerhalb einer Zeile (von Pos - bis Pos).
LG
Holger
Zitat von: Omega am 21 April 2017, 10:06:55
Das Handling dazu ist mir aber nicht wirklich klar, die Hinweise in der Commandref dazu habe ich leider auch nicht wirklich verstanden.
Wenn Du die Vorgehensweise verstanden hast, dann nehme ich gerne einen Patch an, der es besser beschreibt.
Zitat
Kleinigkeit am Rande: Wenn das attr displayTextEncode nicht vorhanden ist, kann man es setzen. Ist es bereits definiert und möchte man den Wert ändern, bekomme ich folgende Fehlermeldung:
Das scheint kein ESPEasy Modul Problem zu sein. Tritt bei mir auch seit dem heutigen Update auf. Ich würde eher auf FHEMWEB tippen, da es über telnet weiterhin problemos funktioniert. Ein ähnliches Problem wurde heute auch schon in einem anderen Thread gemeldet.
Zitat
Meine Testanweisung:
set <esp> oled 6 1 Test%20A%20B%20C
Setze ich das Attribut auf 0, werden jetzt Leerzeichen ausgegeben. Prima.
Wenn displayTextEncode enabled ist (attr nicht gesetzt oder auf 1), dann encodet das Modul die übergebenen Strings selbst, auch die enthaltenen Leerzeichen. Da Du den String aber schon selbst url encodet hast, dann mußt Du das Attr disablen. Dann kannst Du aber auch nicht das neue Feature displayTextWidth nutzen, das den unbeschriebenen Teil der Zeile löscht.
Gedacht ist das Feature so:
attr <esp> displayTextEncode 1 # oder nicht setzen
attr <esp> displayTextWidth 16 #Zeilenlänge 16 Buchstaben
set <esp> oled 1 5 Test 1 2 3
Der Text "Test 1 2 3" wird in Zeile 1 ab Position 5 ausgegeben. Alles vor und nach dem String wird mit Leerzeichen aufgefüllt und somit gelöscht.
Zitat
2. Frage: Auf einem LCD gebe ich ab Spalte 16 den aktuellen Stromverbrauch aus. Der ist meistens 3-stellig, manchmal aber auch 4-stellig. Ein Problem habe ich, wenn ein Wechsel vom 4-stelligen zu einem 3-stelligen Wert kommt.
Genau das macht displayTextWidth.
Danke für die ausführlichen Erläuterungen.
Da sich displayTextWith immer auf die ganze Zeile auswirkt, muss ich also beim Update eines Readings den konstanten Text in der Zeile auch immer mit ausgeben. Meine Idee war halt, nur den sich ggf. ändernden Bereich zu leeren, bevor der aktuelle Reading-Wert ausgegeben wird.
Zitat von: Omega am 21 April 2017, 12:41:06
Danke für die ausführlichen Erläuterungen.
Wie schon gesagt: einen Patch für die commanref nehme ich gerne an, wenn er es besser beschreibt.
Zitat von: Omega am 21 April 2017, 12:41:06
Da sich displayTextWith immer auf die ganze Zeile auswirkt, muss ich also beim Update eines Readings den konstanten Text in der Zeile auch immer mit ausgeben. Meine Idee war halt, nur den sich ggf. ändernden Bereich zu leeren, bevor der aktuelle Reading-Wert ausgegeben wird.
Worin liegt der Vorteil? Geschwindigkeit des Displayupdates?
Davon abgesehen: bisher nutzen alle Modulbefehle, die Daten zum ESP schicken, die original Befehlssyntax der Plugins. Das würde ich ungerne ändern. Mir fällt adhoc auch keine Möglichkeit ein, den zusätzlich benötigten Parameter zu übergeben ohne die Syntax zu ändern.
Zitat von: Omega am 21 April 2017, 10:06:55
Kleinigkeit am Rande: Wenn das attr displayTextEncode nicht vorhanden ist, kann man es setzen. Ist es bereits definiert und möchte man den Wert ändern, bekomme ich folgende Fehlermeldung:
ESPEasy_ESP_G14: displayTextEncode must be: 0,1
Abhilfe: jeweils attr displayTextEncode löschen - danach kann man es auf den gewünschten Wert setzen.
Das Problem ist mit der aktuellen fhemweb.js Version (14057) aus dem svn behoben. Kommt morgen per Update oder ab jetzt im svn.