Hallo,
von meinen homematic devices gibt es Module, die trotz gesetztem Register cyclicInfoMsg=on keinen Status der Batterie senden. Typen sind HM-SEC-RHS und manchmal HM-SEC-SCO.
Betroffen sind auch HM-RC-4-3, HM-MOD-EM-8 (kein Register cyclicInfoMsg). Effekt ist dann, dass der letzte ermittelte Batteriestatus z. Bsp. "ok" solange im Reading "battery" stehen bleibt, bis eine mechanische Aktivierung erfolgt. Das Problem ist dabei, sollte die Batterie zwischen der letzten Aktivierung und der aktuellen Betätigung leer geworden sein, bekomme ich das erst mit, wenn ich das device betätige und die Status-Led oder das battery Reading beachte. Nur, Fenstergriffe und Fernbedienungen betätigen auch andere, ist halt blöd wenn der Rollladen nicht mehr runter geht. (Achtung, WAF Alarm ;) )
Ich habe mir damit beholfen, dass ich für jedes Modul das sich so verhält den Zeitstempel der letzten Batterieprüfung erfasse und über ein AT ihn von der aktuellen Zeit subtrahiere, ist die Differenz > 1,5 Tage erscheint eine Meldung im FTUI.
Da ich das für jedes device individuell machen muss, heißt das, den gleichen Code mehrfach ablegen, nicht unbedingt elegant.
Jetzt wäre die Frage, gibt es andere Lösungen (die ich nicht kenne) die ein Gerät zwingend auffordern den Batteriestatus zu melden, unabhängig ob das device auf cyclicInfoMsg reagiert oder nicht?
Die Lösung dürfte sich sowieso nicht auf cyclicInfoMsg stützen, da wie beschrieben nicht mal alle devices dieses Register haben.
Grüße Joachim
Beispiele
list 00_UG_HzgKeller_Hzg_Umwaelzpumpe (HM-MOD-EM-8)
Internals:
CFGFN ./FHEM/include/fhem_untergeschoss.cfg
DEF 667A04
FUUID 5c587ad3-f33f-8c2a-8fb7-c69bbc6de57a0559
IODev myHmUART
NAME 00_UG_HzgKeller_Hzg_Umwaelzpumpe
NOTIFYDEV global
NR 354
NTFY_ORDER 50-00_UG_HzgKeller_Hzg_Umwaelzpumpe
STATE 00_UG_HzgKeller_Hzg_Umwaelzpumpe_Btn_02 Long
TYPE CUL_HM
channel_01 00_UG_HzgKeller_Hzg_Umwaelzpumpe_Btn_01
channel_02 00_UG_HzgKeller_Hzg_Umwaelzpumpe_Btn_02
channel_03 00_UG_HzgKeller_Hzg_Umwaelzpumpe_Btn_03
channel_04 00_UG_HzgKeller_Hzg_Umwaelzpumpe_Btn_04
channel_05 00_UG_HzgKeller_Hzg_Umwaelzpumpe_Btn_05
channel_06 00_UG_HzgKeller_Hzg_Umwaelzpumpe_Btn_06
channel_07 00_UG_HzgKeller_Hzg_Umwaelzpumpe_Btn_07
channel_08 00_UG_HzgKeller_Hzg_Umwaelzpumpe_Btn_08
READINGS:
2020-09-04 15:18:22 Batt_timestamp_HzgKeller_Hzg_Umwaelzpumpe 2020-07-28 14:16:19
2018-10-13 20:17:07 CommandAccepted yes
2018-10-13 20:17:06 D-firmware 1.1
2018-10-13 20:17:06 D-serialNr PEQ0105622
2019-01-13 20:57:17 Ende_Umwaelzpumpe_aktiv
2018-10-13 20:16:52 PairedTo 0x4C3DF4
2018-10-13 19:12:20 R-pairCentral 0x4C3DF4
2018-10-13 20:16:52 RegL_00. 02:01 05:00 0A:4C 0B:3D 0C:F4 12:00 14:03 18:00 00:00
2020-09-04 15:18:22 Time_Umlaufpumpe_aktiv
2020-05-20 14:24:53 alive yes
2020-07-28 14:16:19 battery ok
2020-09-04 15:18:22 cfgState ok
2020-05-20 14:24:53 powerOn 2020-05-20 14:24:53
2020-05-20 14:24:53 recentStateType info
2020-07-28 14:16:19 state 00_UG_HzgKeller_Hzg_Umwaelzpumpe_Btn_02 Long
2019-02-06 13:47:47 trigger Long_210
2019-02-06 13:47:47 trigger_cnt 210
helper:
HM_CMDNR 229
cfgChkResult No regs found for:-ret--ret-00_UG_HzgKeller_Hzg_Umwaelzpumpe type:remote - -ret-list:peer register :value-ret- 0: ledMode :off-ret- 0: localResDis :off-ret- 0: lowBatLimitBA2 :0 V-ret- 0: pairCentral :0x4C3DF4-ret- 0: transmDevTryMax :3-ret- -ret- -ret-
mId 00D9
peerFriend
peerOpt -:remote
regLst 0
rxType 16
cmds:
TmplKey :no:1599214653.86064
TmplTs 1599214653.86064
cmdKey 0:1:0::00_UG_HzgKeller_Hzg_Umwaelzpumpe:00D9:00:
cmdLst:
assignHmKey noArg
clear [(readings|trigger|register|oldRegs|rssi|msgEvents|{msgErrors}|attack|all)]
deviceRename -newName-
fwUpdate -filename- [-bootTime-]
getConfig noArg
getDevInfo noArg
getRegRaw (List0|List1|List2|List3|List4|List5|List6) [-peerChn-]
raw -data- [...]
regBulk -list-.-peerChn- -addr1:data1- -addr2:data2-...
regSet [(prep|{exec})] -regName- -value- [-peerChn-]
reset noArg
tplDel -tplDel-
tplSet_0 -tplChan-
unpair noArg
lst:
condition closed,open
peer
peerOpt
tplChan
tplDel
tplPeer
rtrvLst:
cmdList [({short}|long)]
deviceInfo [({short}|long)]
param -param-
reg -addr- -list- [-peerChn-]
regList noArg
regTable noArg
regVal -addr- -list- [-peerChn-]
saveConfig [-filename-]
tplInfo noArg
expert:
def 1
det 0
raw 1
tpl 0
io:
newChn +667A04,00,00,00
rxt 2
vccu VCCU
p:
667A04
00
00
00
prefIO:
myHmUART
mRssi:
mNo
prt:
bErr 0
sProc 0
q:
qReqConf
qReqStat
role:
dev 1
rssi:
shadowReg:
tmpl:
nb:
cnt 1
Attributes:
IODev myHmUART
IOgrp VCCU:myHmUART
autoReadReg 3_onChange
event-on-update-reading .*
expert defReg,rawReg
firmware 1.1
icon sani_pump
model HM-MOD-EM-8
room Hzg-Keller
serialNr PEQ0105622
subType remote
userReadings Time_Umlaufpumpe_aktiv {ReadingsTimestamp("00_UG_HzgKeller_Hzg_Umwaelzpumpe","myHmUART_TIME","")},
Batt_timestamp_HzgKeller_Hzg_Umwaelzpumpe {ReadingsTimestamp("00_UG_HzgKeller_Hzg_Umwaelzpumpe","battery","")}
webCmd getConfig:clear msgEvents
list 50_Aussen_Remote_Control1_Main (HM-RC-4-3)
Internals:
DEF 6C746F
FUUID 5ead9aef-f33f-8c2a-56ce-1e5a6c1e6e0e3e72
IODev myHmUART
NAME 50_Aussen_Remote_Control1_Main
NOTIFYDEV global
NR 2200
NTFY_ORDER 50-50_Aussen_Remote_Control1_Main
STATE CMDs_done
TYPE CUL_HM
channel_01 50_Aussen_Remote_Control1_Main_Btn_01
channel_02 50_Aussen_Remote_Control1_Main_Btn_02
channel_03 50_Aussen_Remote_Control1_Main_Btn_03
channel_04 50_Aussen_Remote_Control1_Main_Btn_04
READINGS:
2020-09-04 14:25:45 Activity dead
2020-09-04 15:18:24 Batt_timestamp_50_Aussen_Remote_Control1_Main 2020-08-23 10:23:48
2020-09-03 17:43:03 CommandAccepted yes
2020-09-03 17:43:01 D-firmware 1.1
2020-09-03 17:43:01 D-serialNr QEQ0215000
2020-09-03 17:43:01 R-pairCentral set_0x4C3DF4
2020-08-23 10:23:48 battery ok
2020-09-04 15:18:24 cfgState updating
2020-09-03 17:43:03 commState CMDs_done
2020-09-03 17:43:03 state CMDs_done
helper:
HM_CMDNR 106
mId 00D4
peerFriend
peerOpt -:remote
regLst 0
rxType 28
cfgChk:
idRc01 RegL_00.
cmds:
TmplKey :no:1599214664.44626
TmplTs 1599214664.44626
cmdKey 0:1:0::50_Aussen_Remote_Control1_Main:00D4:01:
cmdLst:
assignHmKey noArg
clear [(readings|trigger|register|oldRegs|rssi|msgEvents|{msgErrors}|attack|all)]
deviceRename -newName-
fwUpdate -filename- [-bootTime-]
getConfig noArg
getDevInfo noArg
getRegRaw (List0|List1|List2|List3|List4|List5|List6) [-peerChn-]
raw -data- [...]
regBulk -list-.-peerChn- -addr1:data1- -addr2:data2-...
regSet [(prep|{exec})] -regName- -value- [-peerChn-]
reset noArg
tplDel -tplDel-
tplSet_0 -tplChan-
unpair noArg
lst:
condition slider,0,1,255
peer
peerOpt
tplChan
tplDel
tplPeer
rtrvLst:
cmdList [({short}|long)]
deviceInfo [({short}|long)]
param -param-
reg -addr- -list- [-peerChn-]
regList noArg
regTable noArg
regVal -addr- -list- [-peerChn-]
saveConfig [-filename-]
tplInfo noArg
expert:
def 1
det 0
raw 1
tpl 0
io:
newChn +6C746F,00,00,00
rxt 2
vccu VCCU
p:
6C746F
00
00
00
prefIO:
myHmUART
mRssi:
mNo
prt:
bErr 0
sProc 0
q:
qReqConf 00
qReqStat
role:
dev 1
rssi:
shadowReg:
tmpl:
Attributes:
IODev myHmUART
IOgrp VCCU:myHmUART
actCycle 002:00
actStatus dead
autoReadReg 4_reqStatus
expert defReg,rawReg
firmware 1.1
icon it_remote
model HM-RC-4-3
room 50_Aussenbereich
serialNr QEQ0215000
subType remote
userReadings Batt_timestamp_50_Aussen_Remote_Control1_Main {ReadingsTimestamp("50_Aussen_Remote_Control1_Main","battery","")}
webCmd getConfig:clear msgEvents
list 00_UG_Technikraum_FensterGriff (HM-SEC-RHS)
Internals:
CFGFN ./FHEM/include/fhem_untergeschoss.cfg
DEF 5D3E0A
FUUID 5c587ad2-f33f-8c2a-66c3-5cf08626ae78a7e5
IODev myHmUART
NAME 00_UG_Technikraum_FensterGriff
NOTIFYDEV global
NR 279
NTFY_ORDER 50-00_UG_Technikraum_FensterGriff
STATE closed
TYPE CUL_HM
chanNo 01
READINGS:
2020-09-04 14:15:42 Activity dead
2020-09-04 15:18:22 Batt_timestamp_Technikraum_FensterGriff 2020-09-02 19:47:11
2019-11-03 14:52:29 CommandAccepted yes
2019-10-15 21:09:27 D-firmware 2.4
2019-10-15 21:09:27 D-serialNr OEQ0965637
2020-09-04 15:18:22 Differenz 0
2020-03-30 17:28:43 PairedTo 0x4C3DF4
2020-03-30 17:28:43 R-cyclicInfoMsg on
2020-03-31 17:20:12 R-eventDlyTime 2 s
2020-03-30 17:28:43 R-pairCentral 0x4C3DF4
2020-03-31 17:20:12 R-sign off
2020-03-30 17:28:43 RegL_00. 00:00 02:01 09:01 0A:4C 0B:3D 0C:F4 10:01 14:06
2020-03-31 17:20:12 RegL_01. 00:00 08:00 20:6C 21:02 22:64 30:06
2020-09-04 15:18:22 Zeit1 1599225502
2020-09-04 15:18:22 Zeit2 1599225502
2020-09-02 19:47:11 alive yes
2020-09-02 19:47:11 battery ok
2020-09-04 15:18:22 cfgState ok
2020-09-02 19:47:11 commState CMDs_done
2020-09-02 19:47:11 contact closed (to VCCU)
2020-09-02 19:47:11 recentStateType info
2020-09-02 19:47:11 sabotageError off
2020-09-02 19:47:11 state closed
2020-08-19 21:56:05 trigger_cnt 153
helper:
HM_CMDNR 207
mId 0030
peerFriend peerAct,peerVirt
peerOpt 4:threeStateSensor
regLst 0,1,4p
rxType 20
cmds:
TmplKey :no:1599214655.20156
TmplTs 1599214655.20156
cmdKey 1:1:0::00_UG_Technikraum_FensterGriff:0030:01:
cmdLst:
assignHmKey noArg
clear [(readings|trigger|register|oldRegs|rssi|msgEvents|{msgErrors}|attack|all)]
deviceRename -newName-
fwUpdate -filename- [-bootTime-]
getConfig noArg
getDevInfo noArg
getRegRaw (List0|List1|List2|List3|List4|List5|List6) [-peerChn-]
peerBulk -peer1,peer2,...- [({set}|unset)]
peerChan -btnNumber- -actChn- [({single})] [({set}|unset)] [actor|remote|both]
peerSmart -peerOpt-
raw -data- [...]
regBulk -list-.-peerChn- -addr1:data1- -addr2:data2-...
regSet [(prep|{exec})] -regName- -value- [-peerChn-]
reset noArg
sign [(on|{off})]
tplDel -tplDel-
tplSet_0 -tplChan-
unpair noArg
lst:
condition closed,open,tilted
peer
peerOpt 00_UG_Freizeitraum_Rollladen,00_UG_Technikraum_Rollladen,10_EG_Esszimmer_HzgThermostat_WindowRec,10_EG_Esszimmer_HzgThermostat_remote,10_EG_Esszimmer_Rollladen,10_EG_Esszimmer_Stehlampe_Sw,10_EG_Esszimmer_Wand_HzgThermostat_WindowRec,10_EG_Esszimmer_Wand_HzgThermostat_remote,10_EG_Flur_HzgThermostat_WindowRec,10_EG_Flur_HzgThermostat_remote,10_EG_Flur_Stehlampe_Sw,10_EG_Kueche_HzgThermostat_WindowRec,10_EG_Kueche_HzgThermostat_remote,10_EG_Kueche_Rollladen_Norden,10_EG_Kueche_Rollladen_Westen,10_EG_Toilette_HzgThermostat_WindowRec,10_EG_Toilette_HzgThermostat_remote,10_EG_Vorratsraum_HzgThermostat_WindowRec,10_EG_Vorratsraum_HzgThermostat_remote,10_EG_WohnZimmer_Rollladen_Erker_Nord,10_EG_WohnZimmer_Rollladen_Erker_Sued,10_EG_WohnZimmer_Rollladen_Westen,10_EG_Wohnzimmer_HzgThermostat_Erker_Nord_WindowRec,10_EG_Wohnzimmer_HzgThermostat_Erker_Nord_remote,10_EG_Wohnzimmer_HzgThermostat_Erker_Sued_WindowRec,10_EG_Wohnzimmer_HzgThermostat_Erker_Sued_remote,10_EG_Wohnzimmer_HzgThermostat_Westen_WindowRec,10_EG_Wohnzimmer_HzgThermostat_Westen_remote,10_EG_Wohnzimmer_Temp_Regler_WindowRec,10_EG_Wohnzimmer_Temp_Regler_remote,20_DG_AZ_Dad_HzgThermostat_Erker_WindowRec,20_DG_AZ_Dad_HzgThermostat_Erker_remote,20_DG_AZ_Dad_HzgThermostat_Westen_WindowRec,20_DG_AZ_Dad_HzgThermostat_Westen_remote,20_DG_AZ_Dad_Temp_Regler_WindowRec,20_DG_AZ_Dad_Temp_Regler_remote,20_DG_AZ_Mam_HzgThermostat_WindowRec,20_DG_AZ_Mam_HzgThermostat_remote,20_DG_Badezimmer_Handtuch_HzgThermostat_WindowRec,20_DG_Badezimmer_Handtuch_HzgThermostat_remote,20_DG_Badezimmer_HzgThermostat_WindowRec,20_DG_Badezimmer_HzgThermostat_remote,20_DG_Balkonzimmer_HzgThermostat_WindowRec,20_DG_Balkonzimmer_HzgThermostat_remote,20_DG_Flur_Sirene_Arm,20_DG_Flur_Sirene_Panic,20_DG_Flur_Sirene_Sen_01,20_DG_Flur_Sirene_Sen_02,20_DG_Flur_Stehlampe_Sw,20_OG_Schlafzimmer_Rollladen,50_Aussen_Licht_Eingang,50_Aussen_Schaltmodul01_NordSeite_Sw_01,50_Aussen_Schaltmodul01_NordSeite_Sw_02,50_Aussen_Schaltmodul01_Wasserhahn_Sw_01,50_Aussen_Schaltmodul01_Wasserhahn_Sw_02,50_Aussen_Schaltmodul01_Wasserhahn_Sw_03,50_Aussen_Schaltmodul01_Wasserhahn_Sw_04,VCCU_Btn1
tplChan
tplDel
tplPeer
rtrvLst:
cmdList [({short}|long)]
deviceInfo [({short}|long)]
param -param-
reg -addr- -list- [-peerChn-]
regList noArg
regTable noArg
regVal -addr- -list- [-peerChn-]
saveConfig [-filename-]
tplInfo noArg
expert:
def 1
det 0
raw 1
tpl 0
io:
newChn +5D3E0A,00,00,00
rxt 2
vccu VCCU
p:
5D3E0A
00
00
00
prefIO:
myHmUART
mRssi:
mNo
prt:
bErr 0
sProc 0
q:
qReqConf
qReqStat
role:
chn 1
dev 1
rssi:
shadowReg:
tmpl:
Attributes:
IODev myHmUART
IOgrp VCCU:myHmUART
actCycle 001:05
actStatus dead
autoReadReg 4_reqStatus
devStateIcon tilted:fts_window_1w_tilt@red open:fts_window_1w_open_left_anchor@red closed:fts_window_1w_closed_left_anchor@green
expert defReg,rawReg
firmware 2.4
icon fts_window_1w_closed_left_anchor
model HM-SEC-RHS
peerIDs 00000000,
room 00_Untergeschoss->Technikraum
serialNr OEQ0965637
subType threeStateSensor
userReadings Batt_timestamp_Technikraum_FensterGriff {ReadingsTimestamp("00_UG_Technikraum_FensterGriff","battery","")},
Zeit1 {int(time())},
Zeit2 {time_str2num(ReadingsTimestamp("00_UG_Technikraum_FensterGriff","Batt_timestamp_Technikraum_FensterGriff",""))},
Differenz {ReadingsVal("00_UG_Technikraum_FensterGriff","Zeit1",0) - ReadingsVal("00_UG_Technikraum_FensterGriff","Zeit2",0)}
Bei diesen typen gibt es keine möglichkeiten, das device anzusprechen. Man kann nur reagieren aus sicht der zentrale.
Man kann bei den devices manuell actcycle setzen. Actiondetector meldet das device dann dead, wenn im geforderten Zeitrahmen keine msg des device kommt.
Ich setze bei allen devices das attribut. Typisch auf 2 tage, manchmal 5.
Das ist ein schwacher Ersatz. Aber mehr ist mir nicht eingefallen. Und kaputt geht nichts, da ja nichts blockiert wird.
bei deinem rhs muss ein problem existieren, da das battery reading zu alt ist.
wenn das register cyclicInfoMsg=on gesetzt ist, sendet der rhs ziehmlich genau alle 24 std eine info message mit bat status.
65 min für attr actCycle macht hier überhaupt keinen sinn.
default sind 28 std.
den actiondetector hast du scheinbar nicht verstanden.
mögliche probleme:
1. entweder dein fhem oder die ios haben "aussetzer", wodurch nicht alle messages vom device empfangen werden.
2. der funk ist zu schlecht.
3. die register anzeige in fhem ist nicht aktuell.
die reale eistellung ist "off", zb durch ein reset am gerät.
zeig mal je ein list aller io's und der vccu.
lösch mal die fhem daten vom device (set clear all) und lese sie erneut ein (set getConfig plus set statusRequest).
die fernbedienung rc-4-3 kann angeblich "wakeup".
insofern sollte da eigentlich mehr möglich sein, denke ich.
hast du mal einen channel mit der vccu gepeert?
ich würde die fb mal sniffen, ob sie irgend welche messages regelmässig sendet.
hast du sie schon mal an einer ccu angelernt?
welche einstellungen werden dort angeboten/angezeigt?
zum em8 würde mir noch folgendes einfallen:
falls noch ein eingang frei ist, könnte man diesen über eine zeitschaltuhr (zb alle 24 std) extern schalten/triggern.
Tja, was soll ich sagen, es gibt viele Dinge auf dieser Welt die ich nicht verstehe, mag sein, dass der actiondetector auch dazu gehört.
Nur er hilft mir bei meinem Problem nicht weiter, die Tatsache, dass zu einem bestimmten Zeitpunkt ein Gerät alive oder dead ist und mir in einer readings group angezeigt wird, sagt noch nichts über den Batteriestatus aus.
Und er hilft mir auch nicht weiter wenn der actCycle bei dem einen device automatisch beim pairen angelegt wird und bei dem nächsten Gerät dann manuell angelegt werden muss. Aber das ist ja nicht die einzige Unzulänglichkeit und Inkonsistenz von eQ3 Modulen.
Ich habe momentan Geräte (HM-RC-4-3, HM-MOD-EM-8 oder HM-SEC-RHS) die interessiert ein eingestellter actCycle gar nicht (und cyclicInfoMsg kann auch nicht jedes device), sie melden sich nicht und sie aktualisieren den Zeitstempel der Batterieprüfung auch nicht. Da hilft mir der actiondetector als passiver Sammler leider nicht weiter, dead heißt ja nicht unbedingt "Batterie leer"
Vielen Dank für die Vorschläge, die werde ich einmal abarbeiten, Sonderwege je nach Gerät möchte ich nicht gehen, irgendwann verzettelt man sich, ich werde dann meine Routine zur Ermittlung der Zeitstempel der letzten Abfrage zum Batteriestatus verwenden.
Grüße Joachim