Hallo,
ich habe einen EnOcean Taster (Nodon), welcher auf meiner Terasse das Licht ein- resp ausschaltet.
Nun möchte ich, dass wenn am Abend meine Terassenkamera (Arlo) aktiviert ist, dass diese ausgeschaltet wird, sobald ich das Licht mit dem Taster anmache. Und wenn ich das Licht wieder ausmache, soll es dann wieder aktivieren.
Mein DOIF sieht wie folgt aus:
(["Aktor_L_Terasse_NodOn6$:^buttons:.pressed$"]
and [?Timer_Arlo_DOIF:cmd_nr] eq "3"
and [?Aktor_L_Terasse_NodOn6] eq "off")
(set Arlo_BasisSecurity disarm)
(set Steingarten_D_FUD61 on)
DOELSEIF
(["Aktor_L_Terasse_NodOn6$:^buttons:.pressed$"]
and [?Timer_Arlo_DOIF:cmd_nr] eq "3"
and [?Aktor_L_Terasse_NodOn6] eq "on")
(set Arlo_BasisSecurity mode Aussen)
(set Steingarten_D_FUD61 off)
Wenn ich nun drücke, passiert nix. Auch keine Fehlermeldung. Es geht lediglich das Licht an, wie immer.
Hier noch ein Listing:
Internals:
DEF (["Aktor_L_Terasse_NodOn6$:^buttons:.pressed$"]
and [?Timer_Arlo_DOIF:cmd_nr] eq "3"
and [?Aktor_L_Terasse_NodOn6] eq "off")
(set Arlo_BasisSecurity disarm)
(set Steingarten_D_FUD61 on)
DOELSEIF
(["Aktor_L_Terasse_NodOn6$:^buttons:.pressed$"]
and [?Timer_Arlo_DOIF:cmd_nr] eq "3"
and [?Aktor_L_Terasse_NodOn6] eq "on")
(set Arlo_BasisSecurity mode Aussen)
(set Steingarten_D_FUD61 off)
FUUID 5ca0c351-f33f-8001-c97a-cbb23a6a202beee2
MODEL FHEM
NAME Sitzplatz_Lampe_DOIF
NR 648
NTFY_ORDER 50-Sitzplatz_Lampe_DOIF
STATE initialized
TYPE DOIF
VERSION 18890 2019-03-13 18:56:41
Helper:
DBLOG:
cmd:
Logging:
TIME 1554498751.08733
VALUE 0
mode:
Logging:
TIME 1554498751.08733
VALUE enabled
state:
Logging:
TIME 1554498756.35002
VALUE checkall
READINGS:
2019-04-05 23:12:31 cmd 0
2019-04-05 23:12:31 mode enabled
2019-04-05 23:12:31 state initialized
Regex:
accu:
cond:
:
0:
"Aktor_L_Terasse_NodOn6$:^buttons:.pressed$" Aktor_L_Terasse_NodOn6$:^buttons:.pressed$
1:
"Aktor_L_Terasse_NodOn6$:^buttons:.pressed$" Aktor_L_Terasse_NodOn6$:^buttons:.pressed$
condition:
0 ::EventDoIf('Aktor_L_Terasse_NodOn6$',$hash,'^buttons:.pressed$',0) and ::ReadingValDoIf($hash,'Timer_Arlo_DOIF','cmd_nr') eq "3" and ::InternalDoIf($hash,'Aktor_L_Terasse_NodOn6','STATE') eq "off"
1 ::EventDoIf('Aktor_L_Terasse_NodOn6$',$hash,'^buttons:.pressed$',0) and ::ReadingValDoIf($hash,'Timer_Arlo_DOIF','cmd_nr') eq "3" and ::InternalDoIf($hash,'Aktor_L_Terasse_NodOn6','STATE') eq "on"
devices:
do:
0:
0 set Arlo_BasisSecurity disarm
1 set Steingarten_D_FUD61 on
1:
0 set Arlo_BasisSecurity mode Aussen
1 set Steingarten_D_FUD61 off
2:
helper:
globalinit 1
last_timer 0
sleeptimer -1
triggerDev
internals:
0 Aktor_L_Terasse_NodOn6:STATE
1 Aktor_L_Terasse_NodOn6:STATE
all Aktor_L_Terasse_NodOn6:STATE
itimer:
readings:
uiState:
uiTable:
Attributes:
do always
room 01_Automatisierung
was mach ich falsch?
lg c
Vermutlich hat ein Operand nicht den gewünschten Wert. Du könntest einen Log-Befehl in die Bedingung einbauen, der die Operanden ausgibt, dann kannst Du das prüfen.
(Log 1, ReadingsVal(...)."|".<usw.>; <Hier die Bedingung>; <oder hier den Log-Befehl>)
Funktioniert die direkte Befehlaausführung per set-Befehl?
Zitat von: Ellert am 06 April 2019, 15:43:26
Vermutlich hat ein Operand nicht den gewünschten Wert. Du könntest einen Log-Befehl in die Bedingung einbauen, der die Operanden ausgibt, dann kannst Du das prüfen.
(Log 1, ReadingsVal(...)."|".<usw.>; <Hier die Bedingung>; <oder hier den Log-Befehl>)
Funktioniert die direkte Befehlaausführung per set-Befehl?
Die direkte Befehlsausführung per set-Befehl kann hier gar nicht funktionieren, da ["Aktor_L_Terasse_NodOn6$:^buttons:.pressed$"] ein reiner Ereignistrigger mit and-Verknüpfung ist, beide Bedingungen sind dann garantiert nicht wahr.
danke für die Worte. Wie kann ich dieses Problem lösen.
Ich muss auf "pressed" triggern, und zwar nur wenn das Licht aus ist. Auf "on" kann ich nicht triggern, da ich bei Motion der Cam die Lampe einschalte um beim Aufnehmen der Motion zusätzlich Licht zu haben. Und wenn ich da auf "on" triggere würde es grad wieder die Cam ausschalten. Also, es muss eine manuelle Betätigung des Schalters sein (also pressed) damit das geht.
Aber eben, ich komm da nicht weiter..
Zitat von: Damian am 06 April 2019, 22:01:44
Die direkte Befehlsausführung per set-Befehl kann hier gar nicht funktionieren, da ["Aktor_L_Terasse_NodOn6$:^buttons:.pressed$"] ein reiner Ereignistrigger mit and-Verknüpfung ist, beide Bedingungen sind dann garantiert nicht wahr.
Das verstehe ich nicht ganz. "...pressed" ist ja ein Ereignis Trigger, aber es wird dann in der and Verknüpfung den STATE geprüft? Warum sollten die nicht beide gleichzeitig wahr sein?
Zitat von: Damian am 06 April 2019, 22:01:44
Die direkte Befehlsausführung per set-Befehl kann hier gar nicht funktionieren, da ["Aktor_L_Terasse_NodOn6$:^buttons:.pressed$"] ein reiner Ereignistrigger mit and-Verknüpfung ist, beide Bedingungen sind dann garantiert nicht wahr.
Bisher wurde doch bei set <DOIF-Name> cmd_<x> die Bedingung nicht geprüft. Aber man kann testen, ob die Befehle funktionieren.
Zitat von: Ellert am 07 April 2019, 16:25:15
Bisher wurde doch bei set <DOIF-Name> cmd_<x> die Bedingung nicht geprüft. Aber man kann testen, ob die Befehle funktionieren.
Du hast Recht, da habe ich wohl checkall im Kopf gehabt.
Da in den Readings des DOIFs keine Events festgehalten wurden, wurden offenbar keine passenden Events geliefert.
Ich denke, da muss man einfach mal im Eventmonitor sich die vermeintlichen Events genauer anschauen.
guten Abend
nun geht es. Ich habe es wie folgt gelöst.
(["Aktor_L_Terasse_NodOn6$:^buttons:.pressed$"]
and [?Timer_Arlo_DOIF:cmd_nr] eq "3"
and [?Aktor_L_Terasse_NodOn6:dim] ==0)
(set Arlo_BasisSecurity disarm)
(set Steingarten_D_FUD61 on)
DOELSEIF
(["Aktor_L_Terasse_NodOn6$:^buttons:.pressed$"]
and [?Timer_Arlo_DOIF:cmd_nr] eq "3"
and [?Aktor_L_Terasse_NodOn6:dim] >=1)
(set Arlo_BasisSecurity mode Aussen)
(set Steingarten_D_FUD61 off)
Ich beobachte den Zustand aus dem Reading "dim" mit "and [?Aktor_L_Terasse_NodOn6:dim] ==0" anstelle von "and [?Aktor_L_Terasse_NodOn6] eq "off"", siehe oben. Es klappt. Aber wieso es nicht mit mit dem UrsprungsDOIF ging, weiss ich immer noch nciht.
danke für die Hilfen.
lg c