HB-Dis-EP-42BW

Begonnen von Loctotex, 15 Juli 2020, 20:26:00

Vorheriges Thema - Nächstes Thema

Loctotex

Nein mit regset geht es nicht, das hatte ich falsch in Erinnerung. Mit regbulk würde es gehen. Ich schau mir das morgen an.

tndx

Danke, dann warte ich so lange!

Loctotex

#47
Dem Display werden von Fhem nur Änderungen übertragen. Sendest du zweimal dem Display die gleiche Zeile, ist die zweite Nachricht leer.
Hier wird der Fixtext 1 in Zeile 1 angezeigt. Ist der Fixtext leer, ist auch die Zeile leer.
set HM_F34300_Dis_11 displayEP42 \0x80

Sendest du nun den Fixtext, bekommt das Display erstmal den Fixtext mit. Bei mir wird noch nichts geupdatet. (sollte es? ich muss hier mal in den Code schauen)
\_ ist ein Leerzeichen
set HM_F34300_Dis_01 text AA\_BB CC\__DD

Sendet du ihm nun nochmal das \0x80 wird eine Zeile ohne Inhalt gesendet. \0x80 steht ja schon drin. Das Display wird zwar neu aufgebaut, aber es ändert sich nichts.
set HM_F34300_Dis_11 displayEP42 \0x80

Sendest du ihm erst etwas anderes:   (hier würde es auch reichen das entsprechende Reading mit etwas anderem zu überschreiben.)
set HM_F34300_Dis_11 displayEP42 dummy
und dann
set HM_F34300_Dis_11 displayEP42 \0x80
steht AA BB in der ersten Zeile.

Ich könnte für die Fixtexte eine Ausnahme einbauen. Dann würden die Zeilen mit Fixtexten immer neu übertragen. Das würde aber mehr Nachrichten kosten. Eigentlich wäre es schöner, wenn das Display sich bei Änderung der Fixtexte selber updaten würde.

tndx

Hi,

ich bin mir nicht sicher, ob Deine Ausführung mir galt, ich kann darin nichts zu meinem eigenlichen Problem entdecken, dass in den Fixtexten Umlaute oder Sonderzeichen offenbar für Probleme sorgen. Oder stehe ich auf dem Schlauch?

Hast Du bei Dir versucht
set HM_F34300_Dis_01 text Dach: Lüftungsanl.:
oder
set HM_F34300_Dis_01 text Licht\_Dach:\_an Licht\_Dach:\_aus
einzugeben?

Du wirst feststellen, dass in dem Display nicht das ankommt, was Du erwartest, jedenfalls solange man FHEM glauben kann. Ich habe es in der Tat noch nicht versucht auf dem Display auszugeben, da ich der Anzeige in FHEM vertraut habe. Das wäre noch einen Versuch wert...

Loctotex

#49
Achso, ich dachte es handelt sich nur um ein Aktualisierungsproblem.

Das Problem sind nicht die Sonderzeichen, sondern dass der Text bei 12 Zeichen abgeschnitten wird, da die Funktion vom HM-Dis-EP-WM55 kommt. Ich versuche das mal anzupassen, werde ich aber heut nicht mehr schaffen. Es dürfen max. 16 Zeichen sein. 

tndx

Dann liegt die Grenze eher bei 11 Zeichen, es kommt nämlich "Lüftungsanl" an, und das hat nur 11 Zeichen. Interessanterweise kommt aber "0123456789ab" an, was 12 Zeichen hat. Werden Umlaute anders gezählt?

Loctotex

Tatsache, bei den Umlauten gibts auch ein Problem. Allerdings hat das HM-Dis-EP-WM55 damit auch Probleme, da bekomme ich nur Pixelfehler.

Loctotex

Ich habe die text Funktion entfernt und eine eigene textEP42 eingebaut. Diese sollte alle 16 Zeichen übertragen. Umlaute und manche Sonderzeichen musst du anders angeben:
     
[ => Ä"     
# => Ö"     
$ => Ü"     
{ => ä"     
| => ö"     
} => ü"     
' => ="
~ => ß"

Das ist allerdings etwas firmwarespezifisches. Es gilt für displayEP42 und textEP42.

Die displayEP42 nimmt nun 100 Zeichen pro Zeile an.

Bei weiteren Bugs, gern melden :)

tndx

#53
Ich habe heute wieder ein bisschen mit dem Display rumgespielt. Leider bekommen ich die neue "textEP42" Funktion nicht angezeigt, "reload" und "shutdown restart" helfen leider nicht...
Ansonsten bin ich darüber gestolpert, dass Konma nicht in einem Text vorkommen darf, auch nicht escaped, sondern nur als "\0x2C". Würde es nicht mehr Sinn machen, dass auch vom Modul mit zu handeln, genau so wie die Umlaute auch? Ich kann das natürlich in myUtils auslagern, aber ich schätze, Du hast einen besseren Überblick, was alles ersetzt werden muss ;)

Edit: OK, ich sehe, das mit dem Komma stand schon weiter oben

tndx

Ich habe heute meine DOIFs portiert, beide Displays nebeneinader gestellt und sie quasi gleichzeitig befüllen lassen. Im direkten Vergleich fällt auf, dass das über HMCCU befüllte Display früher fertig ist. Das kann natürlich daran liegen, dass FHEM die Display nacheinander anspricht und 2-3 Sekunden zwischen dem Abarbeiten der beiden Anweisungen vergehen. Aber das kann ich mir fast nicht vorstellen, auch wenn mein FHEM auf einem Raspi 3 läuft. Die Display-HW und SW ist ansonsten identisch, bleibt wirklich nur die unterschiedliche Ansteuerung FHEM - FHEM/HMCCU. Damit kann ich aber leben, zumal ja nur ein Display übrig bleiben soll, nach Möglichkeit das von FHEM angetriebene.

Von diesem Ziel bin ich aber immer noch ein Stück entfernt, denn ich habe zwar mittlerweile textEP42 zur Verfügung, aber es überträgt immer noch nicht mehr als 12 Zeichen und hat Probleme mit den Umlauten. Kannst Du bitte noch mal schauen, oder übersehe ich irgendwas?

Loctotex

Hast du die Umlaute auch ersetzt oder schickst du die im Klartext? Wie ist das eigentlich in der ccu? Müssen die Umlaute ohne Script auch ersetzt werden? Ich habe leider keine ccu.

tndx

#56
Ich habe hier mittlerweile alles mögliche ausprobiert. Weder mit Klartext noch ersetzt funktioniert es richtig. Das mit 12 Zeichen lässt sich aber auch ganz ohne Umlaute nachweisen:

set dis_1 textEP42 0123456789ABCDEF 0123456789ABCDEF

überträgt 0123456789AB 0123456789AB.

Weder bei der Befüllung der Fixtexte mit der CCU noch bei der Befüllung des Displays mit Toms Script muss ich mir ansonsten Gedanken um irgendwelche Ersetzungen machen, das machen sie wohl unter der Haube.

Wenn ich die Fixtexte in der CCU befülle, dann erscheint in der CCU nach dem Übertragen der Werte die ersetzte Version: ich gebe "Lüftungsanl.:" ein, nach der erfolgreichen Übertragung erscheint im Feld "L}ftungsanl.:".

BTW: wie ist eigentlich die "Adresse" der Fixtexte der Kanäle 6-10? Ich hätte gedacht 0x90-0x99, aber zumindest die 0x98 und 0x99 bekomme ich nicht angezeigt.

Tom Major

Zitat von: tndx am 20 Oktober 2020, 23:41:36

Weder bei der Befüllung der Fixtexte mit der CCU noch bei der Befüllung des Displays mit Toms Script muss ich mir ansonsten Gedanken um irgendwelche Ersetzungen machen, das machen sie wohl unter der Haube.


Die Ersetzungen der Umlaute mache ich hier:
https://github.com/TomMajor/SmartHome/blob/master/HB-Dis-EP-42BW/Script_Helper/epaper42.tcl#L184
Früher: FHEM 5.x
Jetzt: RaspberryMatic / ioBroker

Loctotex

Zitat von: tndx am 20 Oktober 2020, 23:41:36
Ich habe hier mittlerweile alles mögliche ausprobiert. Weder mit Klartext noch ersetzt funktioniert es richtig. Das mit 12 Zeichen lässt sich aber auch ganz ohne Umlaute nachweisen:

set dis_1 textEP42 0123456789ABCDEF 0123456789ABCDEF

überträgt 0123456789AB 0123456789AB.

Das funktioniert bei mir problemlos. Was steht denn bei dir in den Readings text1 und text2?
Zitat von: tndx am 20 Oktober 2020, 23:41:36
Weder bei der Befüllung der Fixtexte mit der CCU noch bei der Befüllung des Displays mit Toms Script muss ich mir ansonsten Gedanken um irgendwelche Ersetzungen machen, das machen sie wohl unter der Haube.
Das kann ich auch noch einbauen :) .
Zitat von: tndx am 20 Oktober 2020, 23:41:36
BTW: wie ist eigentlich die "Adresse" der Fixtexte der Kanäle 6-10? Ich hätte gedacht 0x90-0x99, aber zumindest die 0x98 und 0x99 bekomme ich nicht angezeigt.
Die Fixtexte der Kanäle 6-10 sind 0x8A - 0x93. Hinter 0x ist immer Hex ;)

tndx

#59
Zitat von: Loctotex am 21 Oktober 2020, 19:11:00
Das funktioniert bei mir problemlos. Was steht denn bei dir in den Readings text1 und text2?

Das ist offenbar das Problem. In den Readings steht:
text1    0123456789AB    2020-10-20 23:37:51
text2    0123456789AB    2020-10-20 23:37:51


Ausgegeben wird auf dem Display jedoch jeweils die ganze Zeichenkette. Anzeigeproblem im FHEM-Modul?
Dann probiere ich das gleich mit den Umlauten noch mal aus. Kann sein, dass ich mich dann teilweise habe von den falschen Readings irreführen lassen.

Nachtrag:
Ich habe nun folgendes ausgeführt:
set dis_10 textEP42 L}ftungsanl.: Temp

In FHEM wird Folgendes angezeigt:
text1    L}ftungsanl.    2020-10-21 22:21:06
text2    Temp    2020-10-21 22:21:06

Man beachte den fehlenden Doppelpunkt.

Anschließend habe ich Folgendes ausgeführt:
set dis_11 displayEP42 ::::::::\0x93:\0x92

Angezeigt auf dem Display wird Folgendes (nur Zeile 9 und 10):
Temp
Lsanl.:


Damit solltest Du das Problem auch bei Dir reproduzieren können.

Zitat von: Loctotex am 21 Oktober 2020, 19:11:00
Das kann ich auch noch einbauen :) .

Das wäre schon Luxus :) Ich komme im Moment zurecht, ist allerdings verwirrend, dass manche Zeichen ersetzt werden und manche nicht: Punkt muss und sollte man nicht escapen, Doppelpunkt kann man escapen und Komma geht nur als Hex-Code... Aber das ich Jammern auf hohem Niveau ;)

Zitat von: Loctotex am 21 Oktober 2020, 19:11:00
Die Fixtexte der Kanäle 6-10 sind 0x8A - 0x93. Hinter 0x ist immer Hex ;)

Ja, das war gestern schon spät :)