Hallo zusammen,
ich stehe gerade wie der Ochs' vorm Berg. Mein simples DoIf will nicht auslösen, das Licht will nicht angehen.
Wenn die Haustür aufgeht (abgefragt über den optischen Homematic Sensor) soll ein Licht angehen und solange eingeschaltet bleiben, bis die Türe wieder geschlossen wird. Dann soll mit einer Verzögerund von 15 Sekunden das Licht wieder ausgehen.
(
[WinSensOptEingang01] eq "open"
)
(
set 0.Aussen.HUELight.Eingang pct 100%,
set 0.Aussen.HUELight.Eingang on
)
DOELSEIF
(
[WinSensOptEingang01] eq "closed"
)
(
sleep 15;
set 0.Aussen.HUELight.Eingang off
)
DOELSE()
Ich möchte das nicht über 2 Notifys machen, da ich das DoIf später noch um weitere Konditionen (bspw. Uhrzeit) erweitern will.
Die Namen meiner Geräte sind definitv korrekt.
Mag mir jemand einen Hinweis geben, was ich übersehe warum es nicht funktioniert?
Hi,
Also bei mir heißt die Abfrage DOIF ([fenster_arbeitszimmer:state] eq "open" ) (set ... )
Grüße
Nils
Statt sleep kannst du das wait Attribut nutzen, aberposte mal ein list des DOIF
Mit ":state" habe ich es auch schon versucht...
Hier das List:
Internals:
DEF (
[WinSensOptEingang01:state] eq "open"
)
(
set 0.Aussen.HUELight.Eingang pct 100%;
set 0.Aussen.HUELight.Eingang on
)
DOELSEIF
(
[WinSensOptEingang01:state] eq "closed"
)
(
sleep 15;
set 0.Aussen.HUELight.Eingang off
)
DOELSE()
NAME Aussenlicht.WinSensOptEingang01.DoIf
NR 213
NTFY_ORDER 50-Aussenlicht.WinSensOptEingang01.DoIf
STATE cmd_2
TYPE DOIF
Readings:
2017-03-08 20:14:04 Device WinSensOptEingang01
2017-03-08 19:41:16 cmd 2
2017-03-08 19:41:16 cmd_event WinSensOptEingang01
2017-03-08 19:41:16 cmd_nr 2
2017-03-08 20:14:04 e_WinSensOptEingang01_state closed
2017-03-08 19:41:16 state cmd_2
Condition:
0 ReadingValDoIf($hash,'WinSensOptEingang01','state') eq "open"
1 ReadingValDoIf($hash,'WinSensOptEingang01','state') eq "closed"
Devices:
0 WinSensOptEingang01
1 WinSensOptEingang01
all WinSensOptEingang01
Do:
0:
0 set 0.Aussen.HUELight.Eingang pct 100%; set 0.Aussen.HUELight.Eingang on
1:
0 sleep 15; set 0.Aussen.HUELight.Eingang off
2:
0
Helper:
event alive: yes,battery: ok,contact: closed (to HMLAN1),sabotageError: off,closed
globalinit 1
last_timer 0
sleeptimer -1
timerdev WinSensOptEingang01
timerevent alive: yes,battery: ok,contact: closed (to HMLAN1),sabotageError: off,closed
triggerDev WinSensOptEingang01
timerevents:
alive: yes
battery: ok
contact: closed (to HMLAN1)
sabotageError: off
closed
timereventsState:
alive: yes
battery: ok
contact: closed (to HMLAN1)
sabotageError: off
state: closed
triggerEvents:
alive: yes
battery: ok
contact: closed (to HMLAN1)
sabotageError: off
closed
triggerEventsState:
alive: yes
battery: ok
contact: closed (to HMLAN1)
sabotageError: off
state: closed
Internals:
Itimer:
Readings:
0 WinSensOptEingang01:state
1 WinSensOptEingang01:state
all WinSensOptEingang01:state
Regexp:
0:
1:
All:
State:
Trigger:
Attributes:
room Eingang
Du musst hier nicht den Fall posten der funktioniert, sondern den, der nicht funktioniert, also Status "open".
Zitat von: Damian am 08 März 2017, 20:42:09
Du musst hier nicht den Fall posten der funktioniert, sondern den, der nicht funktioniert, also Status "open".
Sorry, ich verstehe nicht was Du meinst. Vermutlich stehe ich als Anfänger da gerade auf dem Schlauch.
Ich sollte ein List vom DoIf posten, das habe ich getan.
Außerdem zu Anfang eben die DEF des DoIf.
Zitat von: Grml am 08 März 2017, 21:26:37
Sorry, ich verstehe nicht was Du meinst. Vermutlich stehe ich als Anfänger da gerade auf dem Schlauch.
Ich sollte ein List vom DoIf posten, das habe ich getan.
Außerdem zu Anfang eben die DEF des DoIf.
Öffne die Tür bzw den Kontakt den Du im DOIF verarbeitest. und wenn die Tür/das Fenster offen ist, machst Du ein list.
Es geht doch darum das es nicht geht wenn die Tür offen ist, dein List vom Device war aber bei geschlossener Tür.
Ach, jetzt verstehe ich... sorry! Wird geliefert...
EDIT: Hier stand Quatsch (bzw. ein List vom falschen Device)
Nah dran ;-) Ein List vom DOIF während des nicht-funktionierens wäre schön...
Oh man... Ich bin heute so dämlich... Jetzt habe ich das List vom Sensor statt vom DoIf gepostet... Ich glaube ich sollte eher ins Bett als daran noch rumzubasteln...
Hier das List vom DoIf während die Türe offen ist
ZitatInternals:
DEF (
[WinSensOptEingang01:state] eq "open"
)
(
set 0.Aussen.HUELight.Eingang pct 100%;
set 0.Aussen.HUELight.Eingang on
)
DOELSEIF
(
[WinSensOptEingang01:state] eq "closed"
)
(
sleep 15;
set 0.Aussen.HUELight.Eingang off
)
DOELSE()
NAME Aussenlicht.WinSensOptEingang01.DoIf
NR 213
NTFY_ORDER 50-Aussenlicht.WinSensOptEingang01.DoIf
STATE cmd_1
TYPE DOIF
Readings:
2017-03-08 21:56:36 Device WinSensOptEingang01
2017-03-08 21:56:36 cmd 1
2017-03-08 21:56:36 cmd_event WinSensOptEingang01
2017-03-08 21:56:36 cmd_nr 1
2017-03-08 21:56:36 e_WinSensOptEingang01_state open
2017-03-08 21:56:36 state cmd_1
Condition:
0 ReadingValDoIf($hash,'WinSensOptEingang01','state') eq "open"
1 ReadingValDoIf($hash,'WinSensOptEingang01','state') eq "closed"
Devices:
0 WinSensOptEingang01
1 WinSensOptEingang01
all WinSensOptEingang01
Do:
0:
0 set 0.Aussen.HUELight.Eingang pct 100%; set 0.Aussen.HUELight.Eingang on
1:
0 sleep 15; set 0.Aussen.HUELight.Eingang off
2:
0
Helper:
event battery: ok,contact: open (to HMLAN1),open,trigDst_37A0F0: noConfig,trigger_cnt: 109
globalinit 1
last_timer 0
sleeptimer -1
timerdev WinSensOptEingang01
timerevent battery: ok,contact: open (to HMLAN1),open,trigDst_37A0F0: noConfig,trigger_cnt: 109
triggerDev WinSensOptEingang01
timerevents:
battery: ok
contact: open (to HMLAN1)
open
trigDst_37A0F0: noConfig
trigger_cnt: 109
timereventsState:
battery: ok
contact: open (to HMLAN1)
state: open
trigDst_37A0F0: noConfig
trigger_cnt: 109
triggerEvents:
battery: ok
contact: open (to HMLAN1)
open
trigDst_37A0F0: noConfig
trigger_cnt: 109
triggerEventsState:
battery: ok
contact: open (to HMLAN1)
state: open
trigDst_37A0F0: noConfig
trigger_cnt: 109
Internals:
Itimer:
Readings:
0 WinSensOptEingang01:state
1 WinSensOptEingang01:state
all WinSensOptEingang01:state
Regexp:
0:
1:
All:
State:
Trigger:
Attributes:
room Eingang