Nabend,
jetzt habe ich genug gefummelt und frage in die Runde...
([RolllDown] == "1")
{
my $time1 = Value("P_time_RollDirection_05");
my $time2 = Value("P_time_RollPower_Global");
fhem("set HM_Rolll_ActuatorDirection_Sw_05 on-for-timer " .$time1 );fhem("set HM_Rolll_AktuatorPower_Sw_05 on-for-timer " .$time2 )
}
... soll bewirken das bei RolllDown == 1 die beiden nachfolgenden Befehle ausgeführt werden. Funktioniert auch bestens nur das Wait Attr. 2,17 wird ignoriert.
Ich vermute ich habe die beiden Befehle nicht richtig zueinander gebracht... Komma oder Semikolon.... Runde Klammer, 2 runde Klammern.....????
Ich weiß, zu wenig Ahnung von Perl .....
Wer weiß Rat?
Gruß.
Zeig mal ein "list" von deinem DOIF. Einfach "list <DOIFNAME>" im Kommandofeld von der Weboberfläsche eingeben, und das Ergebnis in Code Tags (das # im Edit Menü) hier posten.
Was soll das "wait" Attribut machen? Wenn Du nur eine branche im Doif hast, kann nur ein Wert "wait" (hier die 2) benutzt werden.
{...} = ein einziger Befehl.
Internals:
DEF ([RolllDown] == "1")
{
my $time1 = Value("P_time_RollDirection_05");
my $time2 = Value("P_time_RollPower_Global");
fhem("set HM_Rolll_ActuatorDirection_Sw_05 on-for-timer " .$time1 );fhem("set HM_Rolll_AktuatorPower_Sw_05 on-for-timer " .$time2 )
}
MODEL FHEM
NAME Rolll_Buero_Down
NR 345
NTFY_ORDER 50-Rolll_Buero_Down
STATE cmd_2
TYPE DOIF
READINGS:
2018-06-03 07:00:00 Device RolllDown
2018-06-03 07:00:00 cmd 2
2018-06-03 07:00:00 cmd_event RolllDown
2018-06-03 07:00:00 cmd_nr 2
2018-06-03 07:00:00 e_RolllDown_STATE 0
2018-06-02 23:55:05 mode enabled
2018-06-03 07:00:00 state cmd_2
Regex:
condition:
0 InternalDoIf($hash,'RolllDown','STATE') == "1"
devices:
0 RolllDown
all RolllDown
do:
0:
0 { my $time1 = Value("P_time_RollDirection_05"); my $time2 = Value("P_time_RollPower_Global"); fhem("set HM_Rolll_ActuatorDirection_Sw_05 on-for-timer " .$time1 );fhem("set HM_Rolll_AktuatorPower_Sw_05 on-for-timer " .$time2 ) }
1:
helper:
DOIF_Readings_events
DOIF_eventas
event 0
globalinit 1
last_timer 0
sleeptimer -1
timerdev RolllDown
timerevent 0
triggerDev RolllDown
timerevents:
0
timereventsState:
state: 0
triggerEvents:
0
triggerEventsState:
state: 0
internals:
0 RolllDown:STATE
all RolllDown:STATE
itimer:
readings:
trigger:
uiState:
uiTable:
Attributes:
DbLogExclude .*
room Rolladensteuerung
wait 2,17
Ich nutze für die Rolladensteuerung zwei Aktoren. Der erste bestimmt die Richtung der zweite schaltet Power.
Mit Wait 2,17 soll der erste Aktor um 2s und der zweite um 17s verzögert werden.
DOIF ([RolllDown] == "1")
(set HM_Rolll_ActuatorDirection_Sw_05 on-for-timer [P_time_RollDirection_05])
(set HM_Rolll_AktuatorPower_Sw_05 on-for-timer [P_time_RollPower_Global])
wait 2,17
Wie man einzelne Befehle im DOIF verzögert, steht ausführlich in der Commandref https://fhem.de/commandref_DE.html#DOIF_wait
Top, Damian...
Der Tag hat sich schon gelohnt. Mehr gelernt als erwartet. Das mit dem Wait 2,17 war mir schon klar und das habe ich auch schon angewendet. Aber dann habe ich umständlich das mit den Parametern ($time1 usw) reingerödelt und stolperte.
Vielen Dank. Auch Dir vielen Dank amenomade.... kannst Du Nachts nicht schlafen?? :-)