Hallo,
ich habe bei mir ein DOIF gesetzt um meine Gateways zu überwachen. Ich habe dies wie folgt gemacht:
Internals:
DEF ([TCM_ESP3_0] ne "initialized")
(set Monitoring_Dummy Gateway warning)
(set Pushover msg title="Gateway" message="Warning: EnOcean")
DOELSEIF
([CUL] ne "Initialized")
(set Monitoring_Dummy Gateway warning)
(set Pushover msg title="Gateway" message="Warning: CUL")
DOELSEIF
([LGW_Gateway] ne "opened")
(set Monitoring_Dummy Gateway warning)
(set Pushover msg title="Gateway" message="Warning: LGW")
DOELSEIF
([ZWDongle_1] ne "initialized")
(set Monitoring_Dummy Gateway warning)
(set Pushover msg title="Gateway" message="Warning: ZWDongle")
DOELSEIF
([mqtt] ne "active")
(set Monitoring_Dummy Gateway warning)
(set Pushover msg title="Gateway" message="Warning: MqTT")
DOELSEIF
([Netatmo] ne "ok")
(set Monitoring_Dummy Gateway warning)
(set Pushover msg title="Gateway" message="Warning: Netatmo")
DOELSEIF
([SIP] ne "initialized")
(set Monitoring_Dummy Gateway warning)
(set Pushover msg title="Gateway" message="Warning: SIP")
DOELSEIF
([PoolController] ne "OK")
(set Monitoring_Dummy Gateway warning)
(set Pushover msg title="Gateway" message="Warning: PoolController")
DOELSEIF
([GardenaSystem] ne "connected to cloud")
(set Monitoring_Dummy Gateway warning)
(set GardenaSystem getToken)
(set Pushover msg title="Gateway" message="Warning: GardenaSystem")
DOELSE
(set Monitoring_Dummy Gateway OK)
(set Pushover msg title="Gateway" message="ALLES OK")
MODEL FHEM
NAME Gateway_Check_DOIF
NR 658
NTFY_ORDER 50-Gateway_Check_DOIF
STATE Alles OK
TYPE DOIF
READINGS:
2018-12-26 22:29:39 Device mqtt
2018-12-16 17:32:54 cmd 10.2
2018-12-16 17:32:54 cmd_event set_cmd_10
2018-12-16 17:32:54 cmd_nr 10
2018-12-16 17:32:54 cmd_seqnr 2
2018-12-26 22:18:41 e_GardenaSystem_STATE no token available
2018-12-26 22:13:44 e_LGW_Gateway_STATE opened
2018-12-26 22:15:07 e_Netatmo_STATE Connected
2018-12-26 22:28:39 e_PoolController_STATE OK
2018-12-26 22:13:39 e_SIP_STATE initialized
2018-12-26 22:13:38 e_TCM_ESP3_0_STATE initialized
2018-12-26 22:29:39 e_mqtt_STATE active
2018-12-16 17:30:41 mode enabled
2018-12-16 17:32:54 state Alles OK
2018-12-26 22:19:39 wait_timer no timer
Regex:
attr:
cmdState:
0:
EnOcean
1:
CUL
2:
LGW
3:
ZWDongle
4:
mqtt
5:
Netatmo
6:
SIP
7:
PoolController
8:
GardenaSystem
9:
Alles OK
wait:
0:
600
0
1:
600
0
2:
600
0
3:
600
0
4:
600
0
5:
600
0
6:
600
0
7:
600
0
8:
900
0
0
9:
600
0
waitdel:
condition:
0 ::InternalDoIf($hash,'TCM_ESP3_0','STATE') ne "initialized"
1 ::InternalDoIf($hash,'CUL','STATE') ne "Initialized"
2 ::InternalDoIf($hash,'LGW_Gateway','STATE') ne "opened"
3 ::InternalDoIf($hash,'ZWDongle_1','STATE') ne "initialized"
4 ::InternalDoIf($hash,'mqtt','STATE') ne "active"
5 ::InternalDoIf($hash,'Netatmo','STATE') ne "ok"
6 ::InternalDoIf($hash,'SIP','STATE') ne "initialized"
7 ::InternalDoIf($hash,'PoolController','STATE') ne "OK"
8 ::InternalDoIf($hash,'GardenaSystem','STATE') ne "connected to cloud"
devices:
0 TCM_ESP3_0
1 CUL
2 LGW_Gateway
3 ZWDongle_1
4 mqtt
5 Netatmo
6 SIP
7 PoolController
8 GardenaSystem
all TCM_ESP3_0 CUL LGW_Gateway ZWDongle_1 mqtt Netatmo SIP PoolController GardenaSystem
do:
0:
0 set Monitoring_Dummy Gateway warning
1 set Pushover msg title="Gateway" message="Warning: EnOcean"
1:
0 set Monitoring_Dummy Gateway warning
1 set Pushover msg title="Gateway" message="Warning: CUL"
2:
0 set Monitoring_Dummy Gateway warning
1 set Pushover msg title="Gateway" message="Warning: LGW"
3:
0 set Monitoring_Dummy Gateway warning
1 set Pushover msg title="Gateway" message="Warning: ZWDongle"
4:
0 set Monitoring_Dummy Gateway warning
1 set Pushover msg title="Gateway" message="Warning: MqTT"
5:
0 set Monitoring_Dummy Gateway warning
1 set Pushover msg title="Gateway" message="Warning: Netatmo"
6:
0 set Monitoring_Dummy Gateway warning
1 set Pushover msg title="Gateway" message="Warning: SIP"
7:
0 set Monitoring_Dummy Gateway warning
1 set Pushover msg title="Gateway" message="Warning: PoolController"
8:
0 set Monitoring_Dummy Gateway warning
1 set GardenaSystem getToken
2 set Pushover msg title="Gateway" message="Warning: GardenaSystem"
9:
0 set Monitoring_Dummy Gateway OK
1 set Pushover msg title="Gateway" message="ALLES OK"
helper:
event connection: active
globalinit 1
last_timer 0
sleepdevice GardenaSystem
sleepsubtimer 0
sleeptimer -1
timerdev mqtt
timerevent connection: active
triggerDev mqtt
bm:
DOIF_Get:
cnt 2
dmx -1000
dtot 0
dtotcnt 0
mTS 26.12. 22:24:23
max 1.9073486328125e-05
tot 3.69548797607422e-05
mAr:
HASH(0x551c6b8)
Gateway_Check_DOIF
?
DOIF_Notify:
cnt 670
dmx -1000
dtot 0
dtotcnt 0
mTS 26.12. 22:15:07
max 0.0464432239532471
tot 0.244683027267456
mAr:
HASH(0x551c6b8)
HASH(0x349ea18)
DOIF_Set:
cnt 11
dmx -1000
dtot 0
dtotcnt 0
mTS 26.12. 22:21:29
max 0.000237941741943359
tot 0.00128865242004395
mAr:
HASH(0x551c6b8)
Gateway_Check_DOIF
?
timerevents:
connection: active
timereventsState:
connection: active
triggerEvents:
connection: active
triggerEventsState:
connection: active
internals:
0 TCM_ESP3_0:STATE
1 CUL:STATE
2 LGW_Gateway:STATE
3 ZWDongle_1:STATE
4 mqtt:STATE
5 Netatmo:STATE
6 SIP:STATE
7 PoolController:STATE
8 GardenaSystem:STATE
all TCM_ESP3_0:STATE CUL:STATE LGW_Gateway:STATE ZWDongle_1:STATE mqtt:STATE Netatmo:STATE SIP:STATE PoolController:STATE GardenaSystem:STATE
itimer:
perlblock:
readings:
trigger:
uiState:
uiTable:
Attributes:
alias Gateway DOIF
cmdState EnOcean|CUL|LGW|ZWDongle|mqtt|Netatmo|SIP|PoolController|GardenaSystem|Alles OK
group 04_Monitoring
icon monitoring-system
room 01_Automatisierung
wait 600,0:600,0:600,0:600,0:600,0:600,0:600,0:600,0:900,0,0:600,0:
Das Problem ist nun, und ich verstehe es nicht, dass einige Gateways einen anderen Wert haben, aber leider reagiert das DOIF nicht darauf. Also z.B. das Device GardenaSystem wird auf "connected to cloud" getriggert, aber es hat nun den Wert "no token available" und nix passiert. Das selbe beim Device Netatmo. Triggert auf "ok", hat aber den Wert "connected"...
Komme irgendwie nicht auf den Fehler....
danke für die Sichthilfe.. ;) Lg c
Das Problem bei Deinem DOIF ist, dass die Timer eines Zweiges abgebrochen werden, wenn ein anderer Zweig schaltet.
Zitat2018-12-26 22:18:41 e_GardenaSystem_STATE no token available
Der zu diesem Zeitpunkt startende Timer wird um
Zitat2018-12-26 22:28:39 e_PoolController_STATE OK
abgebrochen.
Lösung: Für jedes Gateway ein DOIF erstellen.
Hallo Ellert, hmm, wieder was gelernt.. Danke. Ok, dann muss halt pro Gateway ein DOIF hin.. ;)