Guten Abend,
ich hab etwas Schwierigkeiten mit einem DOIF in Kombination mit einem Xiami Schalter welcher als HUE Device angelernt ist.
Wie bei den Readings zu sehen ist wird Stündlich Batterie und Reachable aktualisiert und wenn der Schalter Gedrückt wird (mögliche Kombination ist 1002, 2002 und 3002) wird das State aktualisiert. Aber mein DOIF Reagiert bei dem Batterie/Reachable Aktualisierung und Triggert das DOIF.
Ich hab versucht mit den beiden event-on- zu arbeiten und auf das state zu verweisen, allerdings reagiert das DOIF immer noch auf die Reading Veränderung bei Battery/Reachable und hat um 21:58 das Licht eingeschaltet.
Wo liegt mein Denkfehler? Jemand einen Tipp? Auslösen soll das DOIF egal ob man auf Schalter 1 oder 2 drückt. Schalter Kombination 3 (beide gleichzeitig) ist ohne Funktion.
Vielen Dank!
Schalter
Internals:
DEF sensor 19 IODev=deCONZ
ID S19
INTERVAL
IODev deCONZ
NAME FL_EG.Schalter
NR 284
STATE 1002
TYPE HUEDevice
lastupdated 2018-09-13 21:08:35
manufacturername LUMI
modelid lumi.sensor_86sw2
name Wandsender 2-fach
on 1
reachable 1
type ZHASwitch
uniqueid 00:15:8d:00:01:f4:80:f1-01-0006
READINGS:
2018-09-13 21:58:39 battery 100
2018-09-13 21:58:39 reachable true
2018-09-13 21:08:35 state 1002
helper:
devtype S
reachable 0
update_timeout 1
setList:
Attributes:
IODev deCONZ
room Flur EG
DOIF
Internals:
DEF ([FL_EG.Schalter] == "1002") (set FL_EG.Licht1 toggle)
DOELSEIF
([FL_EG.Schalter] == "2002") (set FL_EG.Licht1 toggle)
MODEL FHEM
NAME FL_EG.Licht_Xiaomi_Schalter
NR 285
NTFY_ORDER 50-FL_EG.Licht_Xiaomi_Schalter
STATE disabled
TYPE DOIF
READINGS:
2018-09-13 21:58:39 Device FL_EG.Schalter
2018-09-13 21:58:39 cmd 1
2018-09-13 21:58:39 cmd_event FL_EG.Schalter
2018-09-13 21:58:39 cmd_nr 1
2018-09-13 21:58:39 e_FL_EG.Schalter_STATE 1002
2018-09-13 22:00:09 last_cmd cmd_1
2018-09-13 22:00:09 mode disabled
2018-09-13 22:00:09 state disabled
Regex:
attr:
cmdState:
wait:
waitdel:
condition:
0 InternalDoIf($hash,'FL_EG.Schalter','STATE') == "1002"
1 InternalDoIf($hash,'FL_EG.Schalter','STATE') == "2002"
devices:
0 FL_EG.Schalter
1 FL_EG.Schalter
all FL_EG.Schalter
do:
0:
0 set FL_EG.Licht1 toggle
1:
0 set FL_EG.Licht1 toggle
2:
helper:
event battery: 100,reachable: true
globalinit 1
last_timer 0
sleeptimer -1
timerdev FL_EG.Schalter
timerevent battery: 100,reachable: true
triggerDev FL_EG.Schalter
DOIF_eventas:
cmd_nr: 1
cmd: 1
cmd_event: FL_EG.Schalter
state: cmd_1
timerevents:
battery: 100
reachable: true
timereventsState:
battery: 100
reachable: true
triggerEvents:
battery: 100
reachable: true
triggerEventsState:
battery: 100
reachable: true
internals:
0 FL_EG.Schalter:STATE
1 FL_EG.Schalter:STATE
all FL_EG.Schalter:STATE
itimer:
readings:
trigger:
uiState:
uiTable:
Attributes:
do always
event-on-change-reading state
room Flur EG
Du musst das state-Reading angeben statt den Status:
([FL_EG.Schalter:state] == "1002")
Edit: Strings werden übrigens mit eq verglichen und nicht mit ==, also
([FL_EG.Schalter:state] eq "1002")