Hallo, ich habe folgendes DOIF:
Internals:
DEF ([{sunrise("HORIZON=4","3600")}-{sunset("HORIZON=4","-3600")}])
(set KNX02.O10_Aktor_Schlafzimmer_Wasserbett on)
{log_telegram("0","$SELF","Sonnenaufgang, Aktor Wasserbett on","alarmbot")}
DOELSE
(set KNX02.O10_Aktor_Schlafzimmer_Wasserbett off)
(set alarmbot message ibims)
{log_telegram("0","$SELF","Sonnenaufgang, Aktor Wasserbett off","alarmbot")}
FUUID 5c844719-f33f-4040-b6f4-278167cc6fff20e4
MODEL FHEM
NAME DF_switchWasserbett
NR 579
NTFY_ORDER 50-DF_switchWasserbett
STATE cmd_2
TYPE DOIF
VERSION 18706 2019-02-23 21:48:22
READINGS:
2019-03-12 17:57:15 cmd 2.2
2019-03-12 17:57:15 cmd_event set_cmd_2
2019-03-12 17:57:15 cmd_nr 2
2019-03-12 17:57:15 cmd_seqnr 2
2019-03-12 17:57:08 mode enabled
2019-03-12 17:57:15 state cmd_2
2019-03-12 17:57:08 timer_01_c01 13.03.2019 08:15:48
2019-03-12 17:57:08 timer_02_c01 13.03.2019 16:55:15
Regex:
accu:
attr:
cmdState:
wait:
waitdel:
condition:
0 ::DOIF_time($hash,0,1,$wday,$hms)
days:
devices:
do:
0:
0 set KNX02.O10_Aktor_Schlafzimmer_Wasserbett on
1 {log_telegram("0","DF_switchWasserbett","Sonnenaufgang, Aktor Wasserbett on","alarmbot")}
1:
0 set KNX02.O10_Aktor_Schlafzimmer_Wasserbett off
1 set alarmbot message ibims
helper:
globalinit 1
last_timer 2
sleeptimer -1
DOIF_eventas:
cmd_nr: 2
cmd_seqnr: 2
cmd_event: set_cmd_2
state: cmd_2
interval:
0 -1
1 0
intervalfunc:
itimer:
localtime:
0 1552461348
1 1552492515
realtime:
0 08:15:48
1 16:55:15
time:
0 {sunrise("HORIZON=4","3600")}
1 {sunset("HORIZON=4","-3600")}
timeCond:
0 0
1 0
timer:
0 0
1 0
timers:
0 0 1
triggertime:
1552461348:
localtime 1552461348
hash:
1552492515:
localtime 1552492515
hash:
uiState:
uiTable:
Attributes:
room Solar_PV,_doif
verbose 5
Leider wird der Code, der bei cmd_2 in {} steht, nicht ausgeführt. Der Code in den () sowie der code in {} im cmd_1 funktioniert einwandfrei.
Kann mir jemand helfen, was ich gerade übersehe?
Im Log gibt es trotz verbose 5 keine einzige Meldung (zu diesem DOIF).
Danke,
Stephan
Setz die Klammern mal in der Form:
cmd_1: (Befehl1,{Perlcode})
cmd_2: (Befehl1,Befehl1,{Perlcode})
Hi Ellert,
danke dir. So funktioniert es. Seltsam, dass die erste Bedingung auch funktioniert, wenn die {} ausserhalb der() stehen...
Nur bei der zweiten Bedingung macht es Probleme. Aber, so gehts jetzt.
Grüße,
Stephan
Zitat von: abc2006 am 13 März 2019, 16:17:19
Hi Ellert,
danke dir. So funktioniert es. Seltsam, dass die erste Bedingung auch funktioniert, wenn die {} ausserhalb der() stehen...
Nur bei der zweiten Bedingung macht es Probleme. Aber, so gehts jetzt.
Grüße,
Stephan
it's not a feature it´s a bug :D
Morgen per Update funktionsfähig.
Super, danke für die Behebung. Kannst du kurz klar stellen, wie rum es ab morgen sein/funktionieren soll?
Danke!
Stephan
Zitat von: abc2006 am 13 März 2019, 17:47:12
Super, danke für die Behebung. Kannst du kurz klar stellen, wie rum es ab morgen sein/funktionieren soll?
Danke!
Stephan
So, wie es sein sollte. In deinem Fall: Lösung von Ellert.
Sonst geht jetzt:
DOIF (Bedingung) {Perl} DOELSE {Perl}
Deine erste Lösung würde jetzt auch funktionieren, macht aber nur Sinn, wenn du einzelne Befehle per wait verzögern willst.