Homematic Klingelsensor HM-Bell

Begonnen von DL8EI Ralph, 01 Juni 2023, 13:02:58

Vorheriges Thema - Nächstes Thema

DL8EI Ralph

Homematic Klingelsensor HM-Bell
- ein tolles Teil für eine universelle Verwendung, wenn man ein wenig "um die Ecke" denkt.

Originalbeschreibung:
https://wiki.fhem.de/wiki/HomeMatic_HomeBrew-Klingelsensor_HM-Bell

Hardware gibts hier:
https://forum.fhem.de/index.php?topic=129326

Hallo,
habe mich mal mit dem HM-Bell befasst. Das folgende kam dabei heraus.
Ich weiß, dass das vielleicht in die WIKI gehört, aber damit kenne ich mich nicht aus. Vielleicht mag es ein Auskenner dorthin verlegen.

Meine prima funktionierende Konfiguration;
define HM_deiner CUL_HM deiner
attr HM_deiner .mId ...
attr HM_deiner IOgrp VCCU:HmUART
attr HM_deiner autoReadReg 4_reqStatus
attr HM_deiner expert rawReg
attr HM_deiner firmware 2.4
attr HM_deiner model HM-LC-SW2-FM
attr HM_deiner room HM_Bell
attr HM_deiner serialNr ...
attr HM_deiner webCmd getDevInfo:getConfig:clear msgEvents
-------------------
define FileLog_HM_deiner FileLog ./log/FileLog_HM_deiner.log HM_deiner:(MISSING.ACK|RESPONSE.TIMEOUT:RegisterRead.*|powerOn.*)
attr FileLog_HM_deiner room HM_Bell
-------------------
define wd_HM_deiner watchdog HM_deiner:CMDs_done 01:02:00 SAME {my $pre = ReadingsVal("HM_deiner_Sw_01","state","0");;;; fhem("set HM_deiner_Sw_01 ".$pre);;;; fhem("set HM_deiner getDevInfo")}
attr wd_HM_deiner comment Zur Überwachung, ob das Teil noch lebt. Damit getDevInfo funktioniert muss 1mal ein (hier sinnloser) Befehl ausgeführt werden.
attr wd_HM_deiner autoRestart 1
attr wd_HM_deiner room HM_Bell
------------------------
define HM_deiner_Sw_01 CUL_HM ...
attr HM_deiner_Sw_01 model HM-LC-SW2-FM
attr HM_deiner_Sw_01 peerIDs ...
attr HM_deiner_Sw_01 room HM_Bell
attr HM_deiner_Sw_01 webCmd statusRequest:off:on
----------------------------
define HM_deiner_Sw_02 CUL_HM ...
attr HM_deiner_Sw_02 model HM-LC-SW2-FM
attr HM_deiner_Sw_02 peerIDs ...
attr HM_deiner_Sw_02 room HM_Bell
attr HM_deiner_Sw_02 webCmd statusRequest:on:off
----------------------------
# nur zur Info, Du darfst auch mit was anderem signalisieren
# define GPIO_19 RPI_GPIO 19
# attr GPIO_19 direction output
# attr GPIO_19 restoreOnStartup yes
# attr GPIO_19 room HM_Bell
# attr GPIO_19 comment Hier hängt ein Piepser dran
----------------------------
define wd_GPIO_19 watchdog GPIO_19:on 00:00:01 SAME set GPIO_19 off
attr wd_GPIO_19 autoRestart 1
attr wd_GPIO_19 room HM_Bell
attr wd_GPIO_19 comment Piepser soll nur kurz piepen.
---------------------------------       
define di_HM_deiner DOIF ([HM_deiner_Sw_02:"^on$"] or [HM_deiner_Sw_02:"^off$"]) (set GPIO_19 on-for-timer 0.25)
attr di_HM_deiner comment ... oder eine andere auszulösende Funktion wie Camera on
attr di_HM_deiner do always
attr di_HM_deiner room HM_Bell
----------------------
define di_HM_deiner_MisAck DOIF ([HM_deiner:"^MISSING.ACK$"] or [HM_deiner:"^RESPONSE.TIMEOUT:RegisterRead$"]){DebianMail('empfänger.mailadresse@provider','^ Alarm $DEVICE $EVENT',(ReadingsTimestamp("$DEVICE","state","0")));;;; fhem("set GPIO_19 blink 3 0.25")}
attr di_HM_deiner_MisAck room HM_Bell
attr di_HM_deiner_MisAck comment Nachricht versenden, wenns klemmt und 3mal piepsen
------------------------------------
define di_HM_deiner_SerNr DOIF ([HM_deiner:"^D-serialNr:*"]) ()
attr di_HM_deiner_SerNr disable 0
attr di_HM_deiner_SerNr room HM_Bell
attr di_HM_deiner_SerNr comment Falls man etwas mit der SerienNummer machen will

Der Vergleichbarkeit halber hier noch die Ergebnisse vom EventMonitor:2023-06-01 11:42:25 DOIF di_HM_deiner_MisAck cmd_nr: 2
2023-06-01 11:42:25 DOIF di_HM_deiner_MisAck cmd: 2
2023-06-01 11:42:25 DOIF di_HM_deiner_MisAck cmd_event: HM_deiner
2023-06-01 11:42:25 DOIF di_HM_deiner_MisAck cmd_2
2023-06-01 11:42:25 CUL_HM HM_deiner commState: CMDs_done
2023-06-01 11:42:25 CUL_HM HM_deiner powerOn: 2023-06-01 11:42:25
2023-06-01 11:42:25 CUL_HM HM_deiner CMDs_done
2023-06-01 11:42:25 CUL_HM HM_deiner_Sw_01 commState: CMDs_done
2023-06-01 11:42:25 CUL_HM HM_deiner_Sw_01 deviceMsg: off (to VCCU)
2023-06-01 11:42:25 CUL_HM HM_deiner_Sw_01 level: 0
2023-06-01 11:42:25 CUL_HM HM_deiner_Sw_01 pct: 0
2023-06-01 11:42:25 CUL_HM HM_deiner_Sw_01 off
2023-06-01 11:42:25 CUL_HM HM_deiner_Sw_01 timedOn: off
2023-06-01 11:42:25 CUL_HM HM_deiner_Sw_02 commState: CMDs_done
2023-06-01 11:42:25 CUL_HM HM_deiner commState: CMDs_done
2023-06-01 11:42:25 CUL_HM HM_deiner CMDs_done
2023-06-01 11:42:25 CUL_HM HM_deiner_Sw_01 commState: CMDs_done
2023-06-01 11:42:25 DOIF di_HM_deiner cmd_nr: 1
2023-06-01 11:42:25 DOIF di_HM_deiner cmd: 1
2023-06-01 11:42:25 DOIF di_HM_deiner cmd_event: HM_deiner_Sw_02
2023-06-01 11:42:25 DOIF di_HM_deiner cmd_1
2023-06-01 11:42:25 CUL_HM HM_deiner_Sw_02 commState: CMDs_done
2023-06-01 11:42:25 CUL_HM HM_deiner_Sw_02 deviceMsg: off (to VCCU)
2023-06-01 11:42:25 CUL_HM HM_deiner_Sw_02 level: 0
2023-06-01 11:42:25 CUL_HM HM_deiner_Sw_02 pct: 0
2023-06-01 11:42:25 CUL_HM HM_deiner_Sw_02 off
2023-06-01 11:42:25 CUL_HM HM_deiner_Sw_02 timedOn: off
2023-06-01 11:42:26 CUL_HM HM_deiner commState: CMDs_pending
2023-06-01 11:42:26 CUL_HM HM_deiner_Sw_01 commState: CMDs_pending
2023-06-01 11:42:26 CUL_HM HM_deiner_Sw_02 commState: CMDs_pending
2023-06-01 11:42:26 CUL_HM HM_deiner CMDs_pending
...
2023-06-01 11:42:29 CUL_HM HM_deiner_Sw_01 commState: CMDs_done
2023-06-01 11:42:29 CUL_HM HM_deiner_Sw_02 commState: CMDs_done
2023-06-01 11:43:29 CUL_HM HM_deiner cfgState: ok
2023-06-01 11:43:29 CUL_HM HM_deiner_Sw_01 cfgState: ok
2023-06-01 11:43:29 CUL_HM HM_deiner_Sw_02 cfgState: ok
2023-06-01 11:43:37 CUL_HM HM_deiner commState: CMDs_pending
2023-06-01 11:43:37 CUL_HM HM_deiner_Sw_01 commState: CMDs_pending
2023-06-01 11:43:37 CUL_HM HM_deiner_Sw_02 commState: CMDs_pending
2023-06-01 11:43:37 CUL_HM HM_deiner CMDs_pending
2023-06-01 11:43:37 CUL_HM HM_deiner_Sw_01 set_off noArg
2023-06-01 11:43:37 CUL_HM HM_deiner commState: CMDs_processing...
2023-06-01 11:43:37 CUL_HM HM_deiner_Sw_01 commState: CMDs_processing...
2023-06-01 11:43:37 CUL_HM HM_deiner_Sw_02 commState: CMDs_processing...
2023-06-01 11:43:37 CUL_HM HM_deiner_Sw_01 trigLast: fhem:02
2023-06-01 11:43:37 CUL_HM HM_deiner commState: CMDs_done
2023-06-01 11:43:37 CUL_HM HM_deiner CMDs_done
2023-06-01 11:43:37 CUL_HM HM_deiner_Sw_01 commState: CMDs_done
2023-06-01 11:43:37 CUL_HM HM_deiner_Sw_01 deviceMsg: off (to VCCU)
2023-06-01 11:43:37 CUL_HM HM_deiner_Sw_01 level: 0
2023-06-01 11:43:37 CUL_HM HM_deiner_Sw_01 pct: 0
2023-06-01 11:43:37 CUL_HM HM_deiner_Sw_01 off
2023-06-01 11:43:37 CUL_HM HM_deiner_Sw_01 timedOn: off
2023-06-01 11:43:37 CUL_HM HM_deiner_Sw_02 commState: CMDs_done
2023-06-01 11:43:37 DOIF di_HM_deiner_SerNr cmd_nr: 1
2023-06-01 11:43:37 DOIF di_HM_deiner_SerNr cmd: 1
2023-06-01 11:43:37 DOIF di_HM_deiner_SerNr cmd_event: HM_deiner
2023-06-01 11:43:37 DOIF di_HM_deiner_SerNr cmd_1
2023-06-01 11:43:37 CUL_HM HM_deiner D-firmware: 2.4
2023-06-01 11:43:37 CUL_HM HM_deiner D-serialNr: HMBELLdeine
Fernmelde-Opa übernahm FHEM-Installation und kämpft sich so durch.
Installation hat FS20, Homematic und einge exotische Teile.

DL8EI Ralph

#1
Nachtrag:
musste leider feststellen, dass nach einem Stromausfall und Spannungswiederkehr es nicht mehr am Gong oder sonstwo Extern klingelt, das gesetzte Relais abgefallen ist und ohne Kick nicht wieder anzieht.
Darum hier nun der Kick:
define di_HM_deiner_PwrON DOIF ([HM_deiner:"^powerOn:.*$"]) (set HM_deiner_Sw_01 on)
attr di_HM_deiner_PwrON wait 5    <--- Wichtig, nicht vergessen
attr di_HM_deiner_PwrON do always
attr di_HM_deiner_PwrON room HM_Bell
Zum "powerOn" sollte man noch wissen, dass der nicht immer kommt.
Habe nicht herausfinden können, warum das so ist.

Zum Testen kann man das künstlich kitzeln, indem man
auf HM_deiner getDevInfo und getConfig anwendet und die 2 Switches je einmal schaltet
und danach den Stromausfall herbeiführt. Beim Wiedereinschalten kommt dann powerOn mit seinem Datum und Zeit.
Fernmelde-Opa übernahm FHEM-Installation und kämpft sich so durch.
Installation hat FS20, Homematic und einge exotische Teile.