Probleme mit "IPS_SetEventAcive"

Hallo Zusammen,

ich habe ein Problem mit dem Befehl „IPS_SetEventAcive“.
Folgendes habe ich vor. Ich habe ein Alarmanlagen-Script angelegt was mit Hilfe von Ereignissen getriggert wird. In dem Script wird nur noch abgefragt ob die Variable „Alarmanlage“ Ein oder Aus ist.
Ich möchte aber die Ereignisse aktivieren bzw. deaktivieren wenn die Alarmanlage Ein oder Aus ist um das Unnötige ausführen des Alarmanlagen-Script zu verhindern.
Dazu habe ich folgendes Script geschrieben welches Ausgelöst wird wenn die Variable Alarmanlage Ein/ Aus geändert wird.


<?

// Alarmanlage Variable setzten und Events Schalten

 if($IPS_SENDER == "WebFront")
{
    SetValue($IPS_VARIABLE, $IPS_VALUE);
}

$Alarm_Status = GetValue (26294 /*[Skripte\Skripte\Alarmanlage\Alarmanlage  Ein / Aus\Arlamanlage]*/);

If ($Alarm_Status == true){
	 // Bewegungsmelder überwachung Ausschalten
	 IPS_SetEventActive(21127 /*[Skripte\Skripte\Alarmanlage\Stilleralarm\]*/,true);
	 // Tür im HWR zur Garage überwachung Einschalten
	 IPS_SetEventActive(50333 /*[Skripte\Skripte\Alarmanlage\Stilleralarm\Unbenanntes Objekt (ID: 50333)]*/,true);
         }else{
	 // Bewegungsmelder überwachung Ausschalten
	 IPS_SetEventActive(21127 /*[Skripte\Skripte\Alarmanlage\Stilleralarm\]*/,false);
	 // Tür im HWR zur Garage überwachung Ausschalten
	 IPS_SetEventActive(50333 /*[Skripte\Skripte\Alarmanlage\Stilleralarm\Unbenanntes Objekt (ID: 50333)]*/,false);
         }

?>



Mein Problem liegt jetzt darin, sobald zweimal hintereinander der Befehl „IPS_SetEventAcive“ kommt wird nur einer Ausgeführt. Aktiviere oder deaktiviere ich nur ein Event klappt alles so wie es soll.
Weiß einer woran das liegen kann ?

Gruß Stephan

Hallo Teas1512.

Was passiert, wenn du dein Script aus der Console heraus startest? Gleiches Verhalten?
Versuch doch einmal ein Sleep von 200 ms zwischen den beiden IPS_SetEventActive Aufrufen. Wie verhält es sich dann? Dein Script könntest du im Übrigen vereinfach. Ich habe es angepasst und den Sleep gleich mit rein genommen.


 <?

// Alarmanlage Variable setzten und Events Schalten

 if($IPS_SENDER == "WebFront")
{
    SetValue($IPS_VARIABLE, $IPS_VALUE);
}

$Alarm_Status = GetValue (26294 /*[Skripte\Skripte\Alarmanlage\Alarmanlage  Ein / Aus\Arlamanlage]*/);


// Bewegungsmelder überwachung Ausschalten
IPS_SetEventActive(21127 /*[Skripte\Skripte\Alarmanlage\Stilleralarm\]*/,$Alarm_Status);
IPS_Sleep(200);
// Tür im HWR zur Garage überwachung Einschalten
IPS_SetEventActive(50333 /*[Skripte\Skripte\Alarmanlage\Stilleralarm\Unbenanntes Objekt (ID: 50333)]*/,$Alarm_Status);


Grüße

jevico

Hallo Jevico,

vielen Dank für den Tipp, mit IPS_Sleep(200); ging es nicht aber mit 400ms geht es jetzt

Danke

Gruß
Stephan

Hallo

ich möchte für mein Alarmscript die Funktion GetEventActive nutzen, um zu schauen ob das Ereigniss (Anrufscript) schon Aktiv ist.
Leider komme ich mit dem Syntax nicht klar…


If(IPS_GetEventActive(12345) == true){

}else{
IPS_SetEventAktive(12345, true);
}

Kann mir vieleicht jemand Helfen?

Gruß Mike

Hi Mike!

Du brauchst:
IPS_GetEvent — IP-Symcon :: Automatisierungssoftware
IPS_SetEventActive — IP-Symcon :: Automatisierungssoftware
…siehe Beispiele, besonders bei GetEvent…

Grüße,
Chris

Hallo

das Beispiel hab ich mir vorgenommen…


$EreignisID = 46413;
$EreignisInfo = IPS_GetEvent($EreignisID);
print_r($EreignisInfo);

das liefert ein Array… Nun genau mit dem hab ich meine schierigkeiten… Ich hab es so versucht


foreach ($EreignisInfo as $key => $value) {
  echo $key.' = '.$value;

und bekomme aber da

CyclicDateDay = 0CyclicDateDayValue = 0
Notice: Array to string conversion in D:\IP-Symcon\scripts\41190.ips.php on line 29
CyclicDateFrom = Array
Notice: Array to string conversion in D:\IP-Symcon\scripts\41190.ips.php on line 29
CyclicDateTo = ArrayCyclicDateType = 0CyclicDateValue = 0
Notice: Array to string conversion in D:\IP-Symcon\scripts\41190.ips.php on line 29
CyclicTimeFrom = Array
Notice: Array to string conversion in D:\IP-Symcon\scripts\41190.ips.php on line 29
CyclicTimeTo = ArrayCyclicTimeType = 1CyclicTimeValue = 30EventActive = EventID = 11815EventLimit = 0EventScript = EventType = 1LastRun = 1423219380NextRun = 0
Notice: Array to string conversion in D:\IP-Symcon\scripts\41190.ips.php on line 29
ScheduleActions = Array
Notice: Array to string conversion in D:\IP-Symcon\scripts\41190.ips.php on line 29
ScheduleGroups = ArrayTriggerSubsequentExecution = 1TriggerType = 0TriggerValue = TriggerVariableID = 0

Ich benötige doch aber nur EventActive … Stehe einfach auf dem Schlauch…

Gruß Mike

$EreignisID = 46413;
$EreignisInfo = IPS_GetEvent($EreignisID);
$aktiv = $EreignisInfo['EventActive'];
echo $aktiv;

Hallo

Danke … genau das was ich suchte…
Vielen Dank Gruß Mike