Guten Abend,
ich komme nicht mehr weiter. Ich habe folgendes notify, um von einer Reihe von unterschiedlichen Sendern (WebUI und Apps über Fake-FS20-Schalter, HM- und FS20-Wandtaster, HM-Fernbedienung RC19) Elektro- und einen Solarrollladen zu steuern:
define Notify_Velux notify Vel_.*:(on.*|off.*) {\
my $rollladen = substr($NAME,0,6);;\
my $befehl = substr($EVENT,0,3);;\
my $off = "Sw_".$rollladen."_off";;\
my $on = "Sw_".$rollladen."_on";;\
my $kanalname = "Sw_".$rollladen."_".$befehl;;\
if ($rollladen eq "Vel_WC") { fhem("set $kanalname on-for-timer 1")}\
elsif (ReadingsVal($off, "state", "") eq "on-for-timer 60") { fhem("set $off off")}\
elsif (ReadingsVal($on, "state", "") eq "on-for-timer 60") { fhem("set $on off")}\
else {fhem("set $kanalname on-for-timer 60")};;\
}
attr Notify_Velux room Notify
Alle entsprechenden Sender(-kanäle) heissen Vel_XX_..., wobei XX den jeweiligen Rollladen individuell definiert.
Das "if" fängt den Solarrollladen ab, in dessen Fall nur ein 1-Sekunden-Impuls an die an einen FS20-Schaltaktor angelötete Velux-Fernbedienung geschickt wird.
Die beiden "elsif" haben die Aufgabe, einen bereits in Fahrt befindlichen Rollladen durch erneuten Druck der entsprechenden (WebUI-, FB-)Taste zu stoppen. Entsprechende notifies setzen die on-for-timer auch in fhem nach Ablauf des Timers zurück (die "at" im Eventlog, s.u.).
EDIT: Die Befehle gehen an ein FS20 SM8, die Kanäle sind in dieser Art benannt: define Sw_Vel_HA_on FS20 1c11 3113. /EDIT
Das funktioniert alles bestens, mit den Tastern des FS20 SM8, fiktiven FS20MS-Schaltern im WebUI und mit der HM-RC19-Fernbedienung, mit den trigger-Befehlen für den HM-6fach-Wandtaster - aber nicht mit dem HM-6fach-Wandtaster selbst. Bei diesem geht es manchmal, manchmal bewegt sich nichts, oft schalten die Relais innerhalb einer Sekunde ein und wieder aus.
Und ich komme nicht darauf, woran das liegt. Ich habe mit der Regexp experimentiert, konnte aber nicht herausfinden, wie man etwa Klammern als Textelemente ("(to broadcast)") verwenden kann.
Die HM-RC19 ist so definiert
define RC19 CUL_HM 107841
attr RC19 IODev hmusb
attr RC19 autoReadReg 0_off
attr RC19 expert 2_full
attr RC19 firmware 1.0
attr RC19 model HM-RC-19
attr RC19 msgRepeat 1
attr RC19 room CUL_HM
attr RC19 serialNr EEQ0035939
attr RC19 subType remote
attr RC19 webCmd getConfig:clear msgEvents
define FileLog_RC19 FileLog ./log/RC19-%Y.log RC19
attr FileLog_RC19 logtype text
attr FileLog_RC19 room CUL_HM
...
# RC1 Button 3
define Vel_HA_RC19_B3 CUL_HM 10784103
attr Vel_HA_RC19_B3 eventMap Short:off Long:off
attr Vel_HA_RC19_B3 model HM-RC-19
attr Vel_HA_RC19_B3 peerIDs 00000000,
attr Vel_HA_RC19_B3 room WC
#RC2 Button 4
define Vel_HA_RC19_B4 CUL_HM 10784104
attr Vel_HA_RC19_B4 eventMap Short:on Long:on
attr Vel_HA_RC19_B4 model HM-RC-19
attr Vel_HA_RC19_B4 room WC
attr Vel_HA_RC19_B4 setList off on
attr Vel_HA_RC19_B4 webCmd off:on
Der Wandtaster ist so definiert:
define HM_3037DC CUL_HM 3037DC
attr HM_3037DC IODev hmusb
attr HM_3037DC autoReadReg 0_off
attr HM_3037DC expert 2_full
attr HM_3037DC msgRepeat 1
attr HM_3037DC firmware 1.2
attr HM_3037DC model HM-PB-6-WM55
attr HM_3037DC room CUL_HM
attr HM_3037DC serialNr LEQ1179322
attr HM_3037DC subType remote
attr HM_3037DC webCmd getConfig:clear msgEvents
define FileLog_HM_3037DC FileLog ./log/HM_3037DC-%Y.log HM_3037DC
attr FileLog_HM_3037DC logtype text
attr FileLog_HM_3037DC room CUL_HM
define Vel_HA_Btn_01 CUL_HM 3037DC01
attr Vel_HA_Btn_01 eventMap Short:off Long:off
attr Vel_HA_Btn_01 model HM-PB-6-WM55
attr Vel_HA_Btn_01 peerIDs 00000000,
define Vel_HA_Btn_02 CUL_HM 3037DC02
attr Vel_HA_Btn_02 eventMap Short:on Long:on
attr Vel_HA_Btn_02 model HM-PB-6-WM55
attr Vel_HA_Btn_02 peerIDs 00000000,
Aus dem Eventlog werde ich nicht schlau. Im Fall der funktionierenden Fernbedienung RC19 sieht das so aus (*** = meine Kommentare):
***runterfahren***
2015-10-10 16:56:54 CUL_HM RC19 battery: ok
2015-10-10 16:56:54 CUL_HM RC19 Vel_HA_RC19_B3 Short
2015-10-10 16:56:54 at Sw_Vel_HA_off_off Next: 16:57:54
2015-10-10 16:56:54 Global global DEFINED Sw_Vel_HA_off_off
2015-10-10 16:56:54 Global global ATTR Sw_Vel_HA_off_off room WC
2015-10-10 16:56:55 FS20 Sw_Vel_HA_off on-for-timer 60
2015-10-10 16:56:55 CUL_HM Vel_HA_RC19_B3 off (to broadcast)
2015-10-10 16:56:55 CUL_HM Vel_HA_RC19_B3 trigger: Short_119
2015-10-10 16:56:55 CUL_HM Vel_HA_RC19_B3 trigger_cnt: 119
***hochfahren***
2015-10-10 16:58:04 CUL_HM RC19 battery: ok
2015-10-10 16:58:04 CUL_HM RC19 Vel_HA_RC19_B4 Short
2015-10-10 16:58:04 at Sw_Vel_HA_on_off Next: 16:59:04
2015-10-10 16:58:04 Global global DEFINED Sw_Vel_HA_on_off
2015-10-10 16:58:04 Global global ATTR Sw_Vel_HA_on_off room WC
2015-10-10 16:58:04 FS20 Sw_Vel_HA_on on-for-timer 60
2015-10-10 16:58:04 CUL_HM Vel_HA_RC19_B4 on (to broadcast)
2015-10-10 16:58:04 CUL_HM Vel_HA_RC19_B4 trigger: Short_90
2015-10-10 16:58:04 CUL_HM Vel_HA_RC19_B4 trigger_cnt: 90
***Case stoppen: Start ausfahren***
2015-10-10 16:59:38 CUL_HM RC19 battery: ok
2015-10-10 16:59:38 CUL_HM RC19 Vel_HA_RC19_B3 Short
2015-10-10 16:59:38 at Sw_Vel_HA_off_off Next: 17:00:38
2015-10-10 16:59:38 Global global DEFINED Sw_Vel_HA_off_off
2015-10-10 16:59:38 Global global ATTR Sw_Vel_HA_off_off room WC
2015-10-10 16:59:38 FS20 Sw_Vel_HA_off on-for-timer 60
2015-10-10 16:59:38 CUL_HM Vel_HA_RC19_B3 off (to broadcast)
2015-10-10 16:59:38 CUL_HM Vel_HA_RC19_B3 trigger: Short_120
2015-10-10 16:59:38 CUL_HM Vel_HA_RC19_B3 trigger_cnt: 120
***Case stoppen: erneuter Tastendruck zum Anhalten***
2015-10-10 16:59:46 CUL_HM RC19 battery: ok
2015-10-10 16:59:46 CUL_HM RC19 Vel_HA_RC19_B3 Short
2015-10-10 16:59:46 FS20 Sw_Vel_HA_off off
2015-10-10 16:59:46 CUL_HM Vel_HA_RC19_B3 off (to broadcast)
2015-10-10 16:59:46 CUL_HM Vel_HA_RC19_B3 trigger: Short_121
2015-10-10 16:59:46 CUL_HM Vel_HA_RC19_B3 trigger_cnt: 121
Im Fall des nicht richtig funktionierenden HM-PB-6-WM55 Wandtasters ist alles ziemlich ähnlich, nur dass dieser nicht "to broadcast" wie die RC19 sendet (der ich das bislang auch nicht abgewöhnen konnte), sondern "to hmusb":
***Tastendruck runter***
2015-10-10 22:38:22 CUL_HM HM_3037DC Vel_HA_Btn_01 Short
2015-10-10 22:38:22 at Sw_Vel_HA_off_off Next: 22:39:22
2015-10-10 22:38:22 Global global MODIFIED Sw_Vel_HA_off_off
2015-10-10 22:38:22 FS20 Sw_Vel_HA_off on-for-timer 60
2015-10-10 22:38:22 CUL_HM Vel_HA_Btn_01 off (to hmusb)
2015-10-10 22:38:22 CUL_HM Vel_HA_Btn_01 trigDst_424242: noConfig
2015-10-10 22:38:22 CUL_HM Vel_HA_Btn_01 trigger: Short_150
2015-10-10 22:38:22 CUL_HM Vel_HA_Btn_01 trigger_cnt: 150
***erneut Tastendruck runter, sollte stoppen, stoppt kurz, fährt dann weiter runter***
2015-10-10 22:38:28 CUL_HM HM_3037DC battery: ok
2015-10-10 22:38:28 CUL_HM HM_3037DC CMDs_done
2015-10-10 22:38:28 CUL_HM HM_3037DC Vel_HA_Btn_01 Short
2015-10-10 22:38:28 FS20 Sw_Vel_HA_off off
2015-10-10 22:38:28 CUL_HM Vel_HA_Btn_01 off (to hmusb)
2015-10-10 22:38:28 CUL_HM Vel_HA_Btn_01 trigDst_424242: noConfig
2015-10-10 22:38:28 CUL_HM Vel_HA_Btn_01 trigger: Short_151
2015-10-10 22:38:28 CUL_HM Vel_HA_Btn_01 trigger_cnt: 151
2015-10-10 22:38:28 CUL_HM HM_3037DC battery: ok
2015-10-10 22:38:28 CUL_HM HM_3037DC CMDs_done
2015-10-10 22:38:28 CUL_HM HM_3037DC Vel_HA_Btn_01 Short
2015-10-10 22:38:28 at Sw_Vel_HA_off_off Next: 22:39:28
2015-10-10 22:38:28 Global global MODIFIED Sw_Vel_HA_off_off
2015-10-10 22:38:28 FS20 Sw_Vel_HA_off on-for-timer 60
2015-10-10 22:38:29 CUL_HM Vel_HA_Btn_01 off (to hmusb)
2015-10-10 22:38:29 CUL_HM Vel_HA_Btn_01 trigDst_424242: noConfig
2015-10-10 22:38:29 CUL_HM Vel_HA_Btn_01 trigger: Short_151
2015-10-10 22:38:29 CUL_HM Vel_HA_Btn_01 trigger_cnt: 151
Ich wäre für jeden Hinweis darauf, was ich falsch mache (vermutlich in der Regexp?), sehr dankbar.
Viele Grüße
Martin
Ein Reset des Wandtasters hat alle Probleme gelöst.