Ja es fehlen irgendwie noch Informationen. Wenn die Zustände (aktiviert oder nicht) der Zeitpläne nur durch dieses Script verändert werden, besteht ja kein Problem. Es muss also noch von irgendwoher anders an den Plänen was gedreht werden. Ich war jetzt davon ausgegangen, er kann die Raffstores von Hand, beispielsweise per Taster hoch oder runterfahren, und dabei wird gleichzeitig der Zeitplan deaktiviert. Wenn jetzt das neue Script kommt und alle gleichzeitig deaktiviert, waren vorher schon einzelne deaktiviert. Wenn das Script später die Zeitpläne wieder aktiviert, sollen die vorher per Hand deaktiverten auch deaktiviert bleiben.
Das ist hier im Skripte-Unterforum immer das selbe, es wird die Glaskugel vorrausgesetzt. Mit den gegebenen Infos ist die Frage nur: wie speicher ich einen Bool-Zustand in IPS, Antwort hab ich in #2 gegeben.
etwa so:
<?php
$i = 0;
$WochenZeitSchalt = array( 14859, 27003, 40133, 30067, 44821, 55052, 10371, 45162 ); // ID's der Wochenpläne
$StatusZeitSteuerung = GetValueBoolean(42927); // Id der Schaltvariablen
while($i < count($WochenZeitSchalt ))
{
IF ($StatusZeitSteuerung == true)
{
$vid = @IPS_GetObjectIDByIdent($WochenZeitSchalt[$i], $id);
if($vid===false) {
$vid = IPS_CreateVariable(0);
IPS_SetParent($vid, $id);
IPS_SetIdent ($vid, $WochenZeitSchalt[$i]);
IPS_SetName($vid, $WochenZeitSchalt[$i]); //bei Bedarf hier Irgendwas anderes ..
}
$Event = IPS_GetEvent($WochenZeitSchalt[$i]);
SetValueBoolean ($vid, $Event['EventActive']);
IPS_SetEventActive($WochenZeitSchalt[$i], false);
SetValueBoolean(42927, false);
}
ELSE
{
$vid = @IPS_GetObjectIDByIdent($WochenZeitSchalt[$i], $id);
if($vid===false)
IPS_SetEventActive($WochenZeitSchalt[$i], true);
Else{
IPS_SetEventActive($WochenZeitSchalt[$i], GetValueBoolean ($vid));
SetValueBoolean(42927, true);
}
}
$i++;
}
Oder alternativ in ein Array, und das in eine Stringvariable speichern, das spart Variablen.
Gruß
Julian
Edit: $id, also den Variablenspeicherort natürlich noch festlegen.
Wenn du das Script in #3 selbst geschrieben hast, wärst du aber auch selbst auf die Idee gekommen, oder ? Ich glaube du hast noch nicht alle Randbedingungen erläutert und die Aufgabe ist doch eine andere …