HM-Dis-EP-WM55

Begonnen von OliWee, 14 Mai 2016, 16:48:43

Vorheriges Thema - Nächstes Thema

h2owater

Ja, das funktioniert. Erst blinkt die LED und dann ist nach ein paar Sekunden das Display aktualisiert.

h2owater


Dentec

Hallo,

habe es inzwischen geschafft, das Display per Skript zu steuern, so daß ich mehrere Seiten mit verschiedenen Anzeigen durchblättern kann.
Ausserdem  lasse ich alle 10 Minuten die Anzeige automatisch aktualisieren. (Will man dies in kürzeren Abständen machen, kommt man schnell ans "DutyCycleLimit" und muss warten...)
Auch das Einblenden von Aktionen wie z.B. "Haustüre wurde geöffnet", begleitet durch ein kurzes Piepsen funktionieren jetzt.
Geholfen hat mir das Skript von DrTob im homematic-Forum: http://homematic-forum.de/forum/viewtopic.php?f=31&t=31672&sid=cc2207d579b68bbf47f4de2c1c105d25#p293254



rufus999

Hallo,

könnte jemand bitte genauer erklären wie das o.g. Script eingesetzt werden muss um auf dem Display Zustände von einigen HM devices anzeigen zu können?
Habe das leider nicht verstanden.

Gruß rufus999

zap

Nun, das Script kann auf einer CCU2 als Reaktion auf einen Zustand ausgeführt werden. Die entsprechenden Variablen können entweder mit festen Texten gefüllt werden oder man füllt sie mit dem Zustand bzw. Wert von CCU Geräten oder Systemvariablen (in diesem Fall muss das Script entsprechend erweitert werden).
2xCCU3, Fenster, Rollläden, Themostate, Stromzähler, Steckdosen ...)
Entwicklung: FHEM auf AMD NUC (Ubuntu)
Produktiv inzwischen auf Home Assistant gewechselt.
Maintainer: FULLY, Meteohub, HMCCU, AndroidDB

h2owater

Geht entsprechendes (zB. mit Symbolen) auch mit fhem?

zap

#21
Ich habe das Homematic CCU Script mal in eine Perl Funktion übersetzt. Die Funktion erzeugt einen kodierten String, der an den Datenpunkt SUBMIT in Kanal 3 des Displays geschrieben werden muss. Mit HMCCU geht das einfach mit "set datapoint 3.SUBMIT {EncodeEPDisplay(...)}". Keine Ahnung, wie man das in CUL_HM übergeben kann. Vielleicht schaut sich das Martin mal an.

Mit dem Script können nur die 3 Zeilen in der Mitte des Displays gesetzt werden. Die erste und letze Zeile muss per Config-Parameter gesetzt werden (ich glaube, in CUL_HM sind das Register). In HMCCU geht das über den Befehl "set config".

Zu den Parametern:

msg = [Zeile],[Iconname][;...]
snd = Soundfolge (zulässige Strings siehe Code)
rep = Anzahl Wiederholungen (0-15, 0=Unendlich)
pause = Abstand zwischen Tönen (1-160)
sig = Signalname (zulässige Strings siehe Code)

In msg können bis zu 3 Zeilen getrennt durch Semikolon angegeben werden. Zulässige Iconnames siehe Code. Wenn kein Icon angezeigt werden soll, muss das Komma trotzdem angegeben werden.

Beispiele für msg:

Zeile1,
Zeile1,ico_open
Zeile1,ico_open;Zeile2,
Zeile1,;Zeile2,ico_close


sub EncodeEPDisplay ($$$$$)
{
my ($msg, $snd, $rep, $pause, $sig) = @_;

# set defaults
$msg   = '' if (!defined ($msg));
$snd   = 'snd_off' if (!defined ($snd));
$rep   = 1 if (!defined ($rep));
$pause = 10 if (!defined ($pause));
$sig   = 'sig_off' if (!defined ($sig));

my %disp_icons = (
ico_off    => '0x80', ico_on => '0x81', ico_open => '0x82', ico_closed => '0x83',
ico_error  => '0x84', ico_ok => '0x85', ico_info => '0x86', ico_newmsg => '0x87',
ico_svcmsg => '0x88'
);

my %disp_sounds = (
snd_off        => '0xC0', snd_longlong => '0xC1', snd_longshort  => '0xC2',
snd_long2short => '0xC3', snd_short    => '0xC4', snd_shortshort => '0xC5',
snd_long       => '0xC6'
);

my %disp_signals = (
sig_off => '0xF0', sig_red => '0xF1', sig_green => '0xF2', sig_orange => '0xF3'
);

my $cmd = '0x02,0x0A';

# Lines are separated by semicolon, empty lines are supported
my @disp_lines = split (';', $msg, -1);
my $c = 0;

foreach my $line (@disp_lines) {
# Split line into text and icon part separated by comma
my ($t, $i) = split (',', $line, -1);
return undef if (!defined ($i));

if ($t ne '' || $i ne '') {
$cmd .= ',0x12';

# Hex code
if ($t =~ /^0x[0-9A-F]{2}$/) {
$cmd .= ','.$t;
}
# Predefined text code text0-9
elsif ($t =~ /^text([0-9])$/) {
$cmd .= sprintf (",0x8%1X", $1);
}
# Convert string to hex codes
else {
$t = substr ($t, 0, 12);
foreach my $ch (split ('', $t)) {
$cmd .= sprintf (",0x%02X", ord ($ch));
}
}

# Icon
if ($i ne '' && exists ($disp_icons{$i})) {
$cmd .= ',0x13,'.$disp_icons{$i};
}
}

$cmd .= ',0x0A';
$c++;
last if ($c == 3);
}

# Fill up empty lines
for (my $n=$c; $n<3; $n++) {
$cmd .= ',0x0A';
}

# Sound
$snd = 'snd_off' if (!exists ($disp_sounds{$snd}));
$cmd .= ',0x14,'.$disp_sounds{$snd}.',0x1C';

# Repeat
$rep = 15 if ($rep > 15);
if ($rep == 0) {
$cmd .= ',0xDF';
}
else {
$cmd .= sprintf (",0x%02X", 0xD0+$rep-1);
}
$cmd .= ',0x1D';

# Pause
$pause = 1 if ($pause < 1);
$pause = 160 if ($pause > 160);
$cmd .= sprintf (",0xE%1X,0x16", int(($pause-1)/10));

# Signal
$sig = 'sig_off' if (!exists ($disp_signals{$sig}));
$cmd .= ','.$disp_signals{$sig}.',0x03';

return $cmd;
}
2xCCU3, Fenster, Rollläden, Themostate, Stromzähler, Steckdosen ...)
Entwicklung: FHEM auf AMD NUC (Ubuntu)
Produktiv inzwischen auf Home Assistant gewechselt.
Maintainer: FULLY, Meteohub, HMCCU, AndroidDB

peterk_de

Ich hab meinen Eben zusammengebaut - und poste mal das obligatorische list:



   lastMsg    No:32 - t:10 s:4BD4C4 d:34EF21 021DFBB5F2F1D64500
   protCmdDel 109
   protIOdly  1 last_at:Heute um 18:36 Uhr
   protLastRcv Heute um 19:51 Uhr
   protResnd  28908 last_at:Heute um 19:51 Uhr
   protResndFail 3 last_at:Heute um 19:51 Uhr
   protSnd    160 last_at:Heute um 19:51 Uhr
   protState  CMDs_done_Errors:1
   rssi_at_system.hmcfgusb cnt:122 min:-71 lst:-69 max:-53 avg:-63.77
   rssi_at_system.hmlan cnt:159 min:-81 max:-67 lst:-80 avg:-69.54
   system.hmcfgusb_MSGCNT 122
   system.hmcfgusb_RAWMSG E4BD4C4,0000,B657278F,FF,FFBB,32A0104BD4C434EF21021DFBB5F2F1D64500
   system.hmcfgusb_RSSI -69
   system.hmcfgusb_TIME Heute um 19:51 Uhr
   system.hmlan_MSGCNT 159
   system.hmlan_RAWMSG RC67C9ED8,0001,0044B830,FF,FFB0,32A0104BD4C434EF21021DFBB5F2F1D64500
   system.hmlan_RSSI -80
   system.hmlan_TIME Heute um 19:51 Uhr
   Helper:
     Dblog:
       D-firmware:
         Dblog:
           TIME       1467909407.40412
           VALUE      1.0
       D-serialnr:
         Dblog:
           TIME       1467909407.40412
           VALUE      NEQ0711783
       R-paircentral:
         Dblog:
           TIME       1467909414.83673
           VALUE      0x34EF21
       R-powersupply:
         Dblog:
           TIME       1467909414.83673
           VALUE      bat
       Battery:
         Dblog:
           TIME       1467912980.80044
           VALUE      ok
       State:
         Dblog:
           TIME       1467913906.03229
           VALUE      RESPONSE TIMEOUT:RegisterRead
   Readings:
     Heute um 19:51 Uhr   CommandAccepted yes
     Heute um 18:36 Uhr   D-firmware      1.0
     Heute um 18:36 Uhr   D-serialNr      NEQ0711783
     Heute um 18:37 Uhr   PairedTo        0x34EF21
     Heute um 18:36 Uhr   R-displayInvert off
     Heute um 18:36 Uhr   R-pairCentral   0x34EF21
     Heute um 18:36 Uhr   R-powerSupply   bat
     Heute um 18:36 Uhr   R-wakeupBehavMsg on
     Heute um 18:36 Uhr   R-wakeupBehavior on
     Heute um 18:37 Uhr   RegL_00.          02:01 05:00 08:01 0A:34 0B:EF 0C:21 14:03 21:03  00:00
     Heute um 19:36 Uhr   battery         ok
     Heute um 19:51 Uhr   state           RESPONSE TIMEOUT:RegisterRead
   Helper:
     HM_CMDNR   50
     cSnd       0134EF214BD4C40303,0134EF214BD4C403040001003903
     mId        00FB
     rxType     6
     Expert:
       def        1
       det        1
       raw        1
       tpl        1
     Io:
       newChn     +4BD4C4,00,01,00
       nextSend   1467913904.11262
       prefIO
       rxt        0
       vccu
       p:
         4BD4C4
         00
         01
         00
     Mrssi:
       mNo        32
       Io:
         system.hmlan
   LASTInputDev system.hmlan
   MSGCNT     281
   NAME       HM_4BD4C4
   NR         13753
   STATE      RESPONSE TIMEOUT:RegisterRead
   TYPE       CUL_HM
   channel_01 HM_4BD4C4_Dis_01
   channel_02 HM_4BD4C4_Dis_02
   channel_03 HM_4BD4C4_Key_01
   channel_04 HM_4BD4C4_Key_02
   channel_05 HM_4BD4C4_Key_03
   channel_06 HM_4BD4C4_Key_04
   channel_07 HM_4BD4C4_Key_05
   channel_08 HM_4BD4C4_Key_06
   channel_09 HM_4BD4C4_Key_07
   lastMsg    No:32 - t:10 s:4BD4C4 d:34EF21 021DFBB5F2F1D64500
   protCmdDel 109
   protIOdly  1 last_at:2016-07-07 18:36:48
   protLastRcv 2016-07-07 19:51:44
   protResnd  28908 last_at:2016-07-07 19:51:43
   protResndFail 3 last_at:2016-07-07 19:51:46
   protSnd    160 last_at:2016-07-07 19:51:44
   protState  CMDs_done_Errors:1
   rssi_at_system.hmcfgusb cnt:122 min:-71 lst:-69 max:-53 avg:-63.77
   rssi_at_system.hmlan cnt:159 min:-81 max:-67 lst:-80 avg:-69.54
   system.hmcfgusb_MSGCNT 122
   system.hmcfgusb_RAWMSG E4BD4C4,0000,B657278F,FF,FFBB,32A0104BD4C434EF21021DFBB5F2F1D64500
   system.hmcfgusb_RSSI -69
   system.hmcfgusb_TIME 2016-07-07 19:51:44
   system.hmlan_MSGCNT 159
   system.hmlan_RAWMSG RC67C9ED8,0001,0044B830,FF,FFB0,32A0104BD4C434EF21021DFBB5F2F1D64500
   system.hmlan_RSSI -80
   system.hmlan_TIME 2016-07-07 19:51:44
   Helper:
     Dblog:
       D-firmware:
         Dblog:
           TIME       1467909407.40412
           VALUE      1.0
       D-serialnr:
         Dblog:
           TIME       1467909407.40412
           VALUE      NEQ0711783
       R-paircentral:
         Dblog:
           TIME       1467909414.83673
           VALUE      0x34EF21
       R-powersupply:
         Dblog:
           TIME       1467909414.83673
           VALUE      bat
       Battery:
         Dblog:
           TIME       1467912980.80044
           VALUE      ok
       State:
         Dblog:
           TIME       1467913906.03229
           VALUE      RESPONSE TIMEOUT:RegisterRead
   Readings:
     2016-07-07 19:51:37   CommandAccepted yes
     2016-07-07 18:36:47   D-firmware      1.0
     2016-07-07 18:36:47   D-serialNr      NEQ0711783
     2016-07-07 18:37:25   PairedTo        0x34EF21
     2016-07-07 18:36:54   R-displayInvert off
     2016-07-07 18:36:54   R-pairCentral   0x34EF21
     2016-07-07 18:36:54   R-powerSupply   bat
     2016-07-07 18:36:54   R-wakeupBehavMsg on
     2016-07-07 18:36:54   R-wakeupBehavior on
     2016-07-07 18:37:25   RegL_00.          02:01 05:00 08:01 0A:34 0B:EF 0C:21 14:03 21:03  00:00
     2016-07-07 19:36:20   battery         ok
     2016-07-07 19:51:46   state           RESPONSE TIMEOUT:RegisterRead
   Helper:
     HM_CMDNR   50
     cSnd       0134EF214BD4C40303,0134EF214BD4C403040001003903
     mId        00FB
     rxType     6
     Expert:
       def        1
       det        1
       raw        1
       tpl        1
     Io:
       newChn     +4BD4C4,00,01,00
       nextSend   1467913904.11262
       prefIO
       rxt        0
       vccu
       p:
         4BD4C4
         00
         01
         00
     Mrssi:
       mNo        32
       Io:
         system.hmcfgusb -69
         system.hmlan -78
     Prt:
       bErr       0
       sProc      0
     Q:
       qReqConf
       qReqStat
     Role:
       dev        1
     Rpt:
       IO         system.hmlan
       flg        A
       ts         1467913904.00667
       ack:
         HASH(0x876c270)
         32800234EF214BD4C400
     Rssi:
       At_system.hmcfgusb:
         avg        -63.7704918032787
         cnt        122
         lst        -69
         max        -53
         min        -71
       At_system.hmlan:
         avg        -69.5471698113207
         cnt        159
         lst        -80
         max        -67
         min        -81
     Shadowreg:
     Tmpl:
Attributes:
   IODev      system.hmlan
   IOgrp      system.ccu:system.hmlan
   autoReadReg 4_reqStatus
   expert     251_anything
   firmware   1.0
   model      HM-Dis-EP-WM55
   msgRepeat  1
   room       CUL_HM
   serialNr   NEQ0711783
   subType    pushButton
   webCmd     getConfig:clear msgEvents


Die Taster funktionieren, das Display zur Anzeige von irgendwas zu bewegen ist mir allerdings noch nicht gelungen, ich fürchte, da ist noch n bissel kaputt ;(
FHEM auf Ubuntu-VM / 2xNUC Proxmox Cluster
UI: HomeKit, TabletUI, Grafana
IOdevs: 2xHueBridge, RaspiMatic-CCU, CUL868, 2xHarmonyHub, 6xRaspi-Roomnode mit CO2, VOC und lepresenced
Devices: 107xHomematic(IP), 96xPhilips Hue, 17xTECHEM, 12xBTLE, 8xSONOS, 2xHomeConnect, 1xShelly 3em, 1xNanoleaf ...

peterk_de

Ich korrigiere:

set meinDisplay_Dis_01 text Hallo
set meinDisplay_Dis_02 text Huhu

klappt - siehe Bild :-)
FHEM auf Ubuntu-VM / 2xNUC Proxmox Cluster
UI: HomeKit, TabletUI, Grafana
IOdevs: 2xHueBridge, RaspiMatic-CCU, CUL868, 2xHarmonyHub, 6xRaspi-Roomnode mit CO2, VOC und lepresenced
Devices: 107xHomematic(IP), 96xPhilips Hue, 17xTECHEM, 12xBTLE, 8xSONOS, 2xHomeConnect, 1xShelly 3em, 1xNanoleaf ...

zap

Freu Dich mal nicht zu früh. Man kann das Display über die Register bzw. Configparameter ansprechen (das hast Du gemacht). Damit kann man die oberen und die unteren beiden Zeilen beschreiben, jedoch nicht die mittlere. Auch Icons, Sounds oder Signale werden nicht unterstützt.

Das geht eben nur über den Datenpunkt SUBMIT im Kanal 3, und der akzeptiert nur Hex codierte Strings. Hier kannst Du wiederum nur die mittleren 3 Zeilen beschreiben, jedoch nicht die oberste und die unterste.
2xCCU3, Fenster, Rollläden, Themostate, Stromzähler, Steckdosen ...)
Entwicklung: FHEM auf AMD NUC (Ubuntu)
Produktiv inzwischen auf Home Assistant gewechselt.
Maintainer: FULLY, Meteohub, HMCCU, AndroidDB

peterk_de

Ist mir schon klar dass da noch was fehlt - aber dafür dass das Martin blind und ohne Gerät zusammengezimmert hat ist es schonmal klasse. Und interessanterweise reicht es für meinen Use Case so schon vollkommen aus und ist viel besser als das olle OLED-Ding ... man macht set, es blinkt n bissel und paar Sekunden später ist der Text da, ich bin begeistert :-)
FHEM auf Ubuntu-VM / 2xNUC Proxmox Cluster
UI: HomeKit, TabletUI, Grafana
IOdevs: 2xHueBridge, RaspiMatic-CCU, CUL868, 2xHarmonyHub, 6xRaspi-Roomnode mit CO2, VOC und lepresenced
Devices: 107xHomematic(IP), 96xPhilips Hue, 17xTECHEM, 12xBTLE, 8xSONOS, 2xHomeConnect, 1xShelly 3em, 1xNanoleaf ...

zap

Von der Geschwindigkeit bin ich etwas enttäuscht, aber sonst ein echter Fortschritt gegenüber dem OLED Teil. Das ist schlicht unbrauchbar weil man es nicht per Software aktivieren kann.

Ich hätte es gerne doppelt so groß, aber vielleicht kommt ja zukünftig noch was ...
2xCCU3, Fenster, Rollläden, Themostate, Stromzähler, Steckdosen ...)
Entwicklung: FHEM auf AMD NUC (Ubuntu)
Produktiv inzwischen auf Home Assistant gewechselt.
Maintainer: FULLY, Meteohub, HMCCU, AndroidDB

peterk_de

@zap, das kann ich so unterschreiben. Die Lücke "4-7 Zoll Display mit Akkulaufzeit > 1 Jahr" hatte ich zwischenzeitlich mal versucht mit einem eBook-reader zu schließen, das war aber leider keine einmal-aufsetzen-und-läuft-dauerhaft-Lösung ... und die anderen Anzeigen von Homematic sind ja dahingehend auch Schrott. Vielleicht liest ja jemand von eq3 mit: Macht das mal, Jungs, ihr könnt das ;-)

Zum Thema langsam, ja das stimmt. Für Anzeigen, die sich mit einem Tastendruck auf den Schalter ändern sollen, definitiv für meinen Geschmack ZU langsam und dafür nicht zu empfehlen. Da ich mir damit aber nur ein paar Wetter- und Raumklimadaten im Bad anzeigen lassen möchte und die Schaltwippe eigentlich dort nicht brauche, ist das für mich jetzt nicht relevant. Aber die eierlegende Wollmilchsau ist halt auch das Ding wieder nicht :-(
FHEM auf Ubuntu-VM / 2xNUC Proxmox Cluster
UI: HomeKit, TabletUI, Grafana
IOdevs: 2xHueBridge, RaspiMatic-CCU, CUL868, 2xHarmonyHub, 6xRaspi-Roomnode mit CO2, VOC und lepresenced
Devices: 107xHomematic(IP), 96xPhilips Hue, 17xTECHEM, 12xBTLE, 8xSONOS, 2xHomeConnect, 1xShelly 3em, 1xNanoleaf ...

zap

Hab meins neben die Haustür gehängt. Ziel ist, beim Verlassen des Hauses zu warnen, wenn noch irgendwo ein Fenster offen ist.

Usecase 1: Wenn Haustür geöffnet wird und noch ein Fenster offen ist, gibt das Display einen Warnton aus und zeigt die offenen Fenster an (max. 3 wg. der 3 Zeilen).
Problem: Man ist schnell genervt wenn das Ding piepst obwohl man nur mal schnell den Briefkasten leeren oder den Müll rausbringen will. Der Beacon an meinem Schlüssel als weiteres Kriterium ist da auch keine Lösung, da der Bluetooth Empfang bis vor die Haustür reicht.

Usecase 2: Man verwendet die Tasten als "Prüfe, ob alle Fenster zu sind" bzw. "Leaving Home" Tasten. Das dauert dann halt ein paar Sekunden, bis das Resultat angezeigt wird. Das hat sich trotzdem als recht praktikabel erwiesen.

Ich muss mal mit den 10 möglichen vordefinierten Texten experimentieren. Dabei wird statt dem Text wenige Byte an das Display geschickt. Vielleicht geht das schneller.
2xCCU3, Fenster, Rollläden, Themostate, Stromzähler, Steckdosen ...)
Entwicklung: FHEM auf AMD NUC (Ubuntu)
Produktiv inzwischen auf Home Assistant gewechselt.
Maintainer: FULLY, Meteohub, HMCCU, AndroidDB

peterk_de

So also ich hab jetzt meine Bastelei damit abgeschlossen- läuft. Auch peering mit nem Dimmer klappt problemlos.

Was auffällt ist das im Vergleich zum TC-EU sehr viel kontrastreichere Bild, das Display ist viel weißer durch das ePaper-Display und auch deutlich besser ablesbar. Hab mal ein Bild angehängt.

Symbole und die Mittlere Zeile wäre noch Nice-to-Have. Aktualisierung bei mir alle 20 Minuten falls was geändert wurde macht keine Probleme bezüglich Funklast.
FHEM auf Ubuntu-VM / 2xNUC Proxmox Cluster
UI: HomeKit, TabletUI, Grafana
IOdevs: 2xHueBridge, RaspiMatic-CCU, CUL868, 2xHarmonyHub, 6xRaspi-Roomnode mit CO2, VOC und lepresenced
Devices: 107xHomematic(IP), 96xPhilips Hue, 17xTECHEM, 12xBTLE, 8xSONOS, 2xHomeConnect, 1xShelly 3em, 1xNanoleaf ...