Um bestimmte Ereignisse / Aktionen nacheinander auszuführen, verwende ich eine Hilfs-Variable - hier „Step“.
Diese reicht von 0 bis X - also dei Anzahl der Aktionen und wird am Ende wieder auf 0 gesetzt.
Der zeitliche Abstand der Aktionen wird durch: IPS_SetScriptTimer($IPS_SELF, ZZ);
bestimmt, wobei ZZ die Zeit in Sekunden ist (siehe Anhang).
MST
$id = 22283 /*[0 OG\Flur\VELUX Rollläden\Velux Rollladen]*/;
$step = GetValue(23228 /*[6 Szenarien\Beschatten\Step]*/);
if(($IPS_SENDER <> "TimerEvent")and($step == 0)){
SetValue(21336 /*[6 Szenarien\Beschattung]*/, True);
SetValue(23228 /*[6 Szenarien\Beschatten\Step]*/, 1);
IPS_SetScriptTimer($IPS_SELF, 60);
TMEX_F29_SetPin($id, 0, False);
TMEX_F29_SetPin($id, 2, True);
return;
}
if($IPS_SENDER == "TimerEvent"){
switch($step) {
case 1:
SetValue(23228 /*[6 Szenarien\Beschatten\Step]*/, 2);
IPS_SetScriptTimer($IPS_SELF, 10);
TMEX_F29_SetPin($id, 2, False);
break;
case 2:
SetValue(23228 /*[6 Szenarien\Beschatten\Step]*/, 3);
IPS_SetScriptTimer($IPS_SELF, 60);
TMEX_F29_SetPin($id, 1, True);
break;
case 3:
SetValue(23228 /*[6 Szenarien\Beschatten\Step]*/, 4);
IPS_SetScriptTimer($IPS_SELF, 10);
TMEX_F29_SetPin($id, 2, False);
break;
case 4:
SetValue(23228 /*[6 Szenarien\Beschatten\Step]*/, 5);
IPS_SetScriptTimer($IPS_SELF, 20);
HM_WriteValueFloat(42614 /*[0 OG\Schlafzimmer\Rollläden Kipp\HM R-Laden links]*/, "LEVEL", 1); // runter
break;
case 5:
SetValue(23228 /*[6 Szenarien\Beschatten\Step]*/, 6);
IPS_SetScriptTimer($IPS_SELF, 20);
HM_WriteValueFloat(27397 /*[0 OG\Schlafzimmer\Rollläden Kipp\HM R-Laden mitte]*/, "LEVEL", 1); // runter
break;
case 6:
// Ablauf fertig
SetValue(23228 /*[6 Szenarien\Beschatten\Step]*/, 0);
IPS_SetScriptTimer($IPS_SELF, 0);
HM_WriteValueFloat(58828 /*[0 OG\Schlafzimmer\Rollläden Kipp\HM R-Laden rechts]*/,"LEVEL", .5); // runter
}
}
oder
$id = 22283 /*[0 OG\Flur\VELUX Rollläden\Velux Rollladen]*/;
$step = GetValue(23228 /*[6 Szenarien\Beschatten\Step]*/);
if(($IPS_SENDER <> "TimerEvent")and($step == 0)){
SetValue(21336 /*[6 Szenarien\Beschattung]*/, True);
SetValue(23228 /*[6 Szenarien\Beschatten\Step]*/, 1);
IPS_SetScriptTimer($IPS_SELF, 60);
TMEX_F29_SetPin($id, 0, False);
TMEX_F29_SetPin($id, 2, True);
return;
}
if(($IPS_SENDER == "TimerEvent")and($step == 1)){
SetValue(23228 /*[6 Szenarien\Beschatten\Step]*/, 2);
IPS_SetScriptTimer($IPS_SELF, 10);
TMEX_F29_SetPin($id, 2, False);
return;
}
if(($IPS_SENDER == "TimerEvent")and($step == 2)){
SetValue(23228 /*[6 Szenarien\Beschatten\Step]*/, 3);
IPS_SetScriptTimer($IPS_SELF, 60);
TMEX_F29_SetPin($id, 1, True);
return;
}
if(($IPS_SENDER == "TimerEvent")and($step == 3)){
SetValue(23228 /*[6 Szenarien\Beschatten\Step]*/, 4);
IPS_SetScriptTimer($IPS_SELF, 10);
TMEX_F29_SetPin($id, 2, False);
return;
}
if(($IPS_SENDER == "TimerEvent")and($step == 4)){
SetValue(23228 /*[6 Szenarien\Beschatten\Step]*/, 5);
IPS_SetScriptTimer($IPS_SELF, 20);
HM_WriteValueFloat(42614 /*[0 OG\Schlafzimmer\Rollläden Kipp\HM R-Laden links]*/, "LEVEL", 1); // runter
return;
}
if(($IPS_SENDER == "TimerEvent")and($step == 5)){
SetValue(23228 /*[6 Szenarien\Beschatten\Step]*/, 6);
IPS_SetScriptTimer($IPS_SELF, 20);
HM_WriteValueFloat(27397 /*[0 OG\Schlafzimmer\Rollläden Kipp\HM R-Laden mitte]*/, "LEVEL", 1); // runter
return;
}
if(($IPS_SENDER == "TimerEvent")and($step == 6)){
// Ablauf fertig
SetValue(23228 /*[6 Szenarien\Beschatten\Step]*/, 0);
IPS_SetScriptTimer($IPS_SELF, 0);
HM_WriteValueFloat(58828 /*[0 OG\Schlafzimmer\Rollläden Kipp\HM R-Laden rechts]*/,"LEVEL", .5); // runter
}
Hinweis: das Skript muss über „IPS_RunScript“ oder „Ausführen“ gestartet werden