Hallo zusammen,
ich hab mal wieder ein Problem das ich nicht verstehe bzw. nicht so richtig weiss, wie der richtige Weg ist das umzusetzen.
Aufgabenstellung:
Ein Script wird von einer Variable getriggert. (Ereignis bei Variablenänderung)
Das Script sollte dann folgenden Ablauf haben:
- Loop -> 60 Sekunden lang ein Licht Blinken lassen (Licht für 1 Sek ein und dann wieder aus für 1 Sekunde)
2.) Loop2 -> 60 Sekunden lang eine Sirene aus und einschalten (Ton für 1 Sek ein und dann wieder aus für 1 Sekunde) - Loop3 -> 60 Sekunden lang Licht und Ton einschalten
- Nach den letzten 60 Sekunden alles wieder ausschalten
Ich habe das ganze mit mehreren Ereignis Timer versucht zu lösen, was mehr oder wenig gut funktioniert.
Bis ich dann in das Problem gelaufen bin, das das Script mehrfach läuft und die Schaltaktionen sich gegenseitig blockieren. Hat jemand eine bessere Idee sowas umzusetzen?
Mein Script etwas ausgemistet (zum besseren Verständnis):
<?
if ($_IPS['SENDER'] == 'Variable' and and IPS_GetObject($_IPS['VARIABLE'])['ObjectIsDisabled'] != 1)
{
IPS_SetEventActive($IntervallTimer1, true);
IPS_SetEventActive($VerzoegerungsTimer1, true);
}
if($_IPS['SENDER'] == "TimerEvent" and GetValue($Anlage) == true)
{
if($_IPS['EVENT'] == $IntervallTimer1)
{
ZW_SwitchMode(10882 ,true);
IPS_Sleep(1000);
ZW_SwitchMode(10882 ,false);
}
elseif ($_IPS['EVENT'] == $IntervallTimer2)
{
ZW_SwitchMode(10882 ,true);
IPS_Sleep(1000);
ZW_SwitchMode(10882 ,false);
}
elseif ($_IPS['EVENT'] == $VerzoegerungsTimer1)
{
IPS_SetEventActive($VerzoegerungsTimer1, false);
IPS_SetEventActive($IntervallTimer1, false);
//Starte VerzögerungsTimer 2
IPS_SetEventActive($VerzoegerungsTimer2, true);
//Starte IntervallTimer 2
IPS_SetEventActive($IntervallTimer2, true);
}
elseif ($_IPS['EVENT'] == $VerzoegerungsTimer2)
{
IPS_SetEventActive($VerzoegerungsTimer2, false);
IPS_SetEventActive($IntervallTimer2, false);
IPS_SetEventActive($AlarmTimer, true);
ZW_SwitchMode(10882,true);
}
elseif ($_IPS['EVENT'] == $AlarmTimer)
{
IPS_SetEventActive($AlarmTimer, false);
SetValueBoolean(55035,false);
ZW_SwitchMode(10882,false);
IPS_SETSCRIPTTIMER($_IPS['SELF'],GetValue(52014));
}
}
?>