HB-Dis-EP-42BW

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

Vorheriges Thema - Nächstes Thema

martinp876

Korrekt - das Leerzeichen ist nicht möglich... habe ich wohl vor Verschicken ausversehen eingebracht :)

Das 2. war auch falsch - bitte durch:
$HMConfig::culHmChanGets {"HB-DIS-EP-42BW01"} ={ "disp42Channel01" =>"[on|off|6.0..30.0]"
                                               };
$HMConfig::culHmSubTypeGets{display42}        ={ "disp42_1"        =>"-ontime-"
                                                ,"disp42_2"        =>""
                                               };
$HMConfig::culHmModelGets{"HB-DIS-EP-42BW"}   ={ "disp42ModelCmd"  =>"[off|0.0..99.0]"
                                               };

ersetzen.

Faktich kannst du neue Tyen oder Models erzeugen und diesen Kommandos zu weisen.
Besser man hält es einfach und  definiert nur Model und Model-Channel Kommandos (set/get)

Loctotex

#16
@martin, so richtig will das bei mir nicht. Die CUL_HM_SetdisplayEP42 wird durchlaufen wenn ich set HM_F34300_Dis_11 displayEP42 test:test:test aufrufe. Es wird aber nichts gesendet.

ist das   push @cmds,"11xADDRESSx80${chn}$_" foreach (unpack('(A28)*',$snd)); richtig?

Loctotex

#17
Ich hab mir mal ein paar Logausgaben gebaut.
@Martin rufe ich meine alte Funktion mit "displayEP42 a:" in der 10_CUL_HM auf liegt folgendes auf dem cmdStack:

2020.07.28 19:35:19 1: CUL_HM_PushCmdStack cmd:  ++A011121212F34300800B0212610A122D13800A122D13800A
2020.07.28 19:35:19 1: CUL_HM_PushCmdStack cmd:  ++A011121212F34300800B122D13800A122D13800A122D1380
2020.07.28 19:35:19 1: CUL_HM_PushCmdStack cmd:  ++A011121212F34300800B0A122D13800A122D13800A122D13
2020.07.28 19:35:19 1: CUL_HM_PushCmdStack cmd:  ++A011121212F34300800B800A122D13800A03


rufe ich die Neue in der HBConfig_HBdis auf, liegt das hier auf dem cmdStack:

2020.07.28 19:35:14 1: CUL_HM_PushCmdStack cmd:  ++A011121212F3430080F343000212610A122D13800A122D13800A
2020.07.28 19:35:14 1: CUL_HM_PushCmdStack cmd:  ++A011121212F3430080F34300122D13800A122D13800A122D1380
2020.07.28 19:35:14 1: CUL_HM_PushCmdStack cmd:  ++A011121212F3430080F343000A122D13800A122D13800A122D13
2020.07.28 19:35:14 1: CUL_HM_PushCmdStack cmd:  ++A011121212F3430080F34300800A122D13800A03


Das kann nix großes mehr sein. Werd morgen nochmal schauen. Mir fehlt grad etwas Zeit.

Da ist doch der Kanal falsch  :o

HBConfig_HBdis:
my $chn = unpack 'A6A2',$hash->{DEF}.'01';; 
Der ist hier schon falsch.

Edit:
my $chn = (unpack 'A6A2',$hash->{DEF}.'01')[1];

so müsste es passen.

Edit2:

Ja so gehts.
beim reload HBConfig_HBdis.pm bekomme ich:
Undefined subroutine &main::HMConfig_HBdis_Initialize called at fhem.pl line 2652.

Muss ich Initialize zwangsweise implementieren?

die HBConfig_HBdis lade ich die Tage hoch. Muss noch ein wenig aufräumen.

Loctotex

#18
Mit der angehängten HBConfig_HBdis und dem aktuellen Stand aus dem SVN sollte es laufen.
Ich werd demnächst noch ein paar Optimierungen machen um nicht so viel Daten senden zu müssen.

Das ganze funktioniert so:
displayEP42 Zeile1,0,on,0:Zeile,1,on,1
In der ersten Zeile wird 'Zeile1' mit Icon alles in schwarz angezeit.
In der zweiten Zeile wird 'Zeile2' mit Icon alles in Farbe angezeigt.

man kann die Icons und Farben auch weglassen. Dann wird kein Icon und der Text in schwarz angezeigt.

Es lässt sich auch der Text mit HexCode vermischen:
displayEP42 Temp\0x3A:15\0x2C5\_°C:
In der ersten Zeile wird 'Temp:' angezeigt. \0x3A ist der Doppelpunkt. Der Hexcode muss mit \ escaped werden. Alternativ kann man den Doppelpunkt auch mit \: eingeben.
In der zweiten Zeile wird '15,5 °C' angezeigt. \_ ist das Leerzeichen, \0x2C das Komma.




Horti

Hi Loctotex,

ich würde mal gerne wieder einen Anlauf unternehmen, mein Display über CUL_HM direkt einzubinden.

Hast Du denn noch irgendwelche Änderungen vorgenommen? Würde Dein Modul mit der aktuellen FHEM-Version funktionieren?

Loctotex

Zitat von: Horti am 05 Oktober 2020, 22:59:59
Hi Loctotex,

ich würde mal gerne wieder einen Anlauf unternehmen, mein Display über CUL_HM direkt einzubinden.

Hast Du denn noch irgendwelche Änderungen vorgenommen? Würde Dein Modul mit der aktuellen FHEM-Version funktionieren?

Hi Horti,
die Version sollte so laufen. Ich habe bei mir nur noch eine Optimierung drin. Damit werden nur Änderungen übertragen.

Horti

Hi,

Danke für die Info! Planst Du die auch noch irgendwann mal zur Verfügung zu stellen?

Sehe ich das richtig, dass Du nur komplette Texte überträgst und von den auf dem Display gespeicherten Texten keinen Gebrauch machst? Und Links-/Rechstsausrichtung auch nicht unterstützt? Werden denn die Tasterkanäle ausgewertet? Sorry für die vielen Fragen, will Deine Leisung nicht schmälern ;) Versuche nur abzuschätzen, ob ich damit auskomme.

Loctotex

Zitat von: Horti am 07 Oktober 2020, 18:14:06
Hi,

Danke für die Info! Planst Du die auch noch irgendwann mal zur Verfügung zu stellen?

Sehe ich das richtig, dass Du nur komplette Texte überträgst und von den auf dem Display gespeicherten Texten keinen Gebrauch machst? Und Links-/Rechstsausrichtung auch nicht unterstützt? Werden denn die Tasterkanäle ausgewertet? Sorry für die vielen Fragen, will Deine Leisung nicht schmälern ;) Versuche nur abzuschätzen, ob ich damit auskomme.

Kann ich demnächst gern noch hochladen. Es sollte alles funktionieren. Ausrichtung, Taster, gespeicherte Texte, Farbe usw...

Horti

OK, super, ging ja aus Deiner Erklärung nicht hervor!

Dann warte ich gespannt auf die Aktualisierung.

Danke und Gruß

Loctotex

Hier ist die neue Version  :)

Horti

Vielen Dank, ich habe nun mein Display zum Unmut der Mitbewohner von der CCU abgelernt und an FHEM angelernt. Mit ein bisschen Rumprobiererei, der Doku zu "displayWM", dieses Threads und Quellcode-Querlesen war ich in der Lage, das Display grundsätzlich zu befüllen.

Folgendes ist mir dabei aufgefallen:

  • in der Zeile 37 gibt es "text1,icon10", sollte es hier nicht "text10,icon10" heissen? Ich bin noch nicht bist zur Zeile 10 auf meinem Display vorgedrungen, deswegen konnte ich noch keine Auswirkungen davon spüren
  • "displayEP42 help" bringt mein FHEM dermaßen aus dem Tritt, dass es ein paar Minuten nicht ansprechbar ist. Ich vermute mal, dass Zeile 89 hier ins Nichts führt?
  • Das Reading "R-alignmentEP42" zeigt beim gesetzten "AlignCenterIconRight" "undef lit:1" an, scheint aber zu funktionieren. Ist es nur ein Anzeigeproblem?

Folgende Sachen konnte ich bis jetzt nicht umsetzen:

  • Fixtexte: finde keinen Hinweis darauf in Deinem Quellcode (was ja bei mienen Perl-Kenntnissen nichts heißen muss), auch die Doku zu displayWM ist heir leider keine Hilfe
  • Das Helper-Script von Tom Major erlaubt auch folgendes:
    ZitatAb Version 0.50 kann man für Texte die x-Position angeben um z.B. eine Darstellung in Spalten zu erreichen.
          Dies geht mit @pxx, xx gibt hier die Anfangsposition des Textes in % der Displaybreite an.
    Ist das auch irgendwie möglich?

Für heute war es das erstmal mit dem Testen. Demnächst kann es dann weitergehen mit dem Umstellen der HMCCU-basierten DOIFs.

Loctotex

#26
Zitat von: Horti am 07 Oktober 2020, 23:08:10
Vielen Dank, ich habe nun mein Display zum Unmut der Mitbewohner von der CCU abgelernt und an FHEM angelernt. Mit ein bisschen Rumprobiererei, der Doku zu "displayWM", dieses Threads und Quellcode-Querlesen war ich in der Lage, das Display grundsätzlich zu befüllen.

Folgendes ist mir dabei aufgefallen:

  • in der Zeile 37 gibt es "text1,icon10", sollte es hier nicht "text10,icon10" heissen? Ich bin noch nicht bist zur Zeile 10 auf meinem Display vorgedrungen, deswegen konnte ich noch keine Auswirkungen davon spüren
  • "displayEP42 help" bringt mein FHEM dermaßen aus dem Tritt, dass es ein paar Minuten nicht ansprechbar ist. Ich vermute mal, dass Zeile 89 hier ins Nichts führt?
  • Das Reading "R-alignmentEP42" zeigt beim gesetzten "AlignCenterIconRight" "undef lit:1" an, scheint aber zu funktionieren. Ist es nur ein Anzeigeproblem?

Folgende Sachen konnte ich bis jetzt nicht umsetzen:

  • Fixtexte: finde keinen Hinweis darauf in Deinem Quellcode (was ja bei mienen Perl-Kenntnissen nichts heißen muss), auch die Doku zu displayWM ist heir leider keine Hilfe
  • Das Helper-Script von Tom Major erlaubt auch folgendes:Ist das auch irgendwie möglich?

Für heute war es das erstmal mit dem Testen. Demnächst kann es dann weitergehen mit dem Umstellen der HMCCU-basierten DOIFs.

Hey Danke fürs Testen. 
"text1,icon10" ist natürlich falsch, ist auch nur ein Text der angezeigt wird, habe es nochmal vereinfacht.
"displayEP42 help"  Da ist tatsächlich die helpText() verloren gegangen. Habe es jetzt doch da wieder eingebaut.

Den Fehler mit dem "alignmentEP42" habe ich auch. Es ist aber nur ein Anzeigeproblem, funktionieren tut es.
ich dachte es ist mit
$HMConfig::culHmRegDefine{"alignmentEP42"}              = {a=>145.0, s=>1  , l=>1,  min=>0,  max=>3,    c=>'lit',p=>'n', f=>'',  u=>'',    d=>1,  t=>"Alignment", lit => {AlignRight => 0, AlignCenterIconRight => 1, AlignCenterIconLeft => 3, AlignLeft => 2}};
erledigt. Hier werde ich aber nochmal schauen müssen.

Die Fixtexte können im jeweiligen Kanal mit "text" gesetzt werden und in  displayEP42  \0x80 für den Ersten \0x81 für den Zweiten usw benutzt werden.
@pxx usw sollte auch direkt so gehen.



Horti

Hi,

danke weiterhin für Deine Geduld :)

Zitat von: Loctotex am 08 Oktober 2020, 16:51:04
Die Fixtexte können im jeweiligen Kanal mit "text" gesetzt werden und in  alignmentEP42  \0x80 für den Ersten \0x81 für den Zweiten usw benutzt werden.
@pxx usw sollte auch direkt so gehen.

Wie man die Fixtexte setzen kann, habe ich schon rausbekommen, aber wie kann ich sie zur Anzeige nutzen? Bzw. kann ich sie mit Freitext kombinieren?

Kannst Du vielleicht auch einfach ein paar Beispiele von Dir ohne großartige Erklärungen posten?

@pxx wird dann direkt von der Firmware des Displays interpretiert?

Tom Major

Früher: FHEM 5.x
Jetzt: RaspberryMatic / ioBroker

Loctotex

#29
Oben muss es natürlich displayEP42 heißen.
\_ wird als Leerzeichen  \: wird als Doppelpunkt und \\ wird als Backslash interpretiert.

"das\_ist\_ein\_Test"  wird zu "das ist ein Test"

wenn du in Fixtext eins und zwei "ist" und "ein" schreibst ergibt
das\_\0x80\_\0x81\_Test auch "das ist ein Test"   Hier habe ich aber grad noch ein Bug gefunden. Hier wird die Länge falsch gezählt. Das werde ich am Wochenende Fixen. nach dem T wird der Text verworfen.

Du kannst auch alle Zeichen als Hex übergeben
\0x3A Ergibt z.b. einen Doppelpunkt.
möchtest du tatsächlich "\0x3A" auf das Display schreiben, musst du "\\0x3A" senden.