Ereigniss ruft Script nicht auf

Hallo, ich habe leider ein Problem mit meinen zyklischen Ereignissen.
Ich habe mir vor ein paar Tagen eine Keymatic gekauft und wollte einstellen das diese automatisch um 22 Uhr abschliesst.
Hab also ein kleines Script und ein Ereigniss angelegt. Doch leider wird dieses nicht aufgerufen.
Hab im Script auch ganz oben eine Log Ausgabe und diese kommt auch nicht, kann also nicht direkt am Script liegen.

Eingestellt ist so:
2017-10-19.png

Das Script sieht so aus:

<? 
	$ID_KEYMATIC = 11226 /*[Geräte\KEYMATIC]*/;     

	IPS_LogMessage($_IPS['SELF'], "KEYMATIC CALL FROM " . $_IPS['VARIABLE']);
	IPS_LogMessage($_IPS['SELF'], "ZEIT: " . date("H:i"));

	if($_IPS['SENDER'] == "TimerEvent")
	{
		if (date("H:i") >= "22:00") {
			HM_WriteValueBoolean($ID_KEYMATIC, "STATE" , false); 
		}
		else if (date("H:i") >= "07:00" && date("H:i") < "08:00") {
			HM_WriteValueBoolean($ID_KEYMATIC, "STATE" , true); 
		}
	}
	
?>

Mein System läuft auf einem Raspberry 3 und wurde erst vor einer Woche upgedated.
Ich kann allerdings nicht sagen ob es vorher lief, weil das ist mein erstes zyklisches Ereignis was ich nutze.

Danke & Gruß
Henning

Das Script kannst du komplett sparen, zumal es Fehler enthält.
$_IPS[‚VARIABLE‘] gibt es nicht bei zyklischen Ereignissen.
Und wozu Uhrzeit prüfen, wenn es eh nur um 22 Uhr aufgerufen wird.

Viel einfacher:
Keymatic Instanz öffnen.
Oben Ereignisse anklicken. Zyklische Ereignis wählen und neu anklicken.
Zeitpunkt einstellen und dann weiter.
Als Ziel Gerät ausführen.
Funktion HM_WriteValueBoolean.
Dann Datenpunkt und Wert eintragen.
Fertig.
Kein Script :wink:

Michael
PS: zum testen des Ereignisses hattest du aber schon ein Datum in der Vergangenheit ausgewählt? Weil 19.10 22 Uhr ist ja erst heute :slight_smile:

Hallo,

ich habe mir gerade mal selbst ein Ereignis auf ein Script angelegt, bei mir funktioniert das sofort.
Hast du wirklich das Ereignis auf das Script angelegt?

Du kannst das Ganze aber auch ohne Script regeln, in dem du die Variable direkt schaltest.

Edit: Ah Michael war schneller.

Grüße,
Kai

Also das Script ist etwas länger, hab nur einen Teil rauskopiert. Es wird zum einen eben auch Morgens um 8 Uhr aufgerufen zum aufschliessen, deshalb die Zeitprüfung.

Das ganze Script sieht so aus:

<? 
    $ID_KEYMATIC = 11226 /*[Geräte\KEYMATIC]*/;                                                  // Keymatic Instanz ID 
    $ID_KEYMATIC_STATE =29252 /*[Geräte\KEYMATIC\STATE]*/;                                     // STATE Variable der Keymatic Instanz 
    $ID_VAR_ACTION = 10000 /*[Geräte\KEYMATIC\Status]*/;    // Integer Variable für Schalt und Darstellungszustände 

	IPS_LogMessage($_IPS['SELF'], "KEYMATIC CALL FROM " . $_IPS['VARIABLE']);

	$time = date("H:i");
	IPS_LogMessage($_IPS['SELF'], "ZEIT: " . $time);

	if($_IPS['SENDER'] == "TimerEvent")
	{
		if ($time >= "12:00") {
			HM_WriteValueBoolean($ID_KEYMATIC, "STATE" , false); 
		}
		else if ($time >= "07:00" && $time < "08:00") {
			HM_WriteValueBoolean($ID_KEYMATIC, "STATE" , true); 
		}
	}
	else if($_IPS['VARIABLE']==39401 /*[Geräte\eKey\INSTALL_TEST]*/ || $_IPS['VARIABLE'] == 19558 /*[Geräte\Telefonsummer\INSTALL_TEST]*/) {
		HM_WriteValueBoolean($ID_KEYMATIC, "OPEN" , true); 
	}
	else if($_IPS['VARIABLE'] == 16427 /*[Geräte\Tür - Haustür\Zustand]*/) {
		$doorstate = GetValueBoolean(22649 /*[Geräte\Tür - Haustür\Offen (Real)]*/);
		if($doorstate == false) {
			if ($time >= "22:00") {
				HM_WriteValueBoolean($ID_KEYMATIC, "STATE" , false); 
			}
		}
	}
	else if($_IPS['VARIABLE']==28089 /*[Geräte\KEYMATIC\MAINTENANCE\LOWBAT]*/) {
		SMTP_SendMail(55431 /*[E-Mail senden (SMTP)]*/, 'Batterie Alarm', 'Die Batterie des Gerätes: "KEYMATIC" ist leer!');
	}
    else 
    { 
    	if (getValue($ID_KEYMATIC_STATE)==true) 
        { 
        	SetValue($ID_VAR_ACTION,2); 
        } 
        if (getValue($ID_KEYMATIC_STATE)==false) 
        { 
	        SetValue($ID_VAR_ACTION,1); 
        } 
    } 

?>

Sollte das mit der Variable $_IPS[‚VARIABLE‘] denn ein Problem darstellen?
Dachte dann ist die Ausgabe an der Stelle einfach leer, wenn das Script vom Timer aufgerufen wird.
Also ich hab auch vers. Timer ausprobiert mit +1h und -1h wegen UTC Problem oder so. Hab jetzt nicht immer auf 22 Uhr gewartet :wink:
Wenn ich das Script so manuell aufrufe wird auch die richtige Uhrzeit ausgegeben.
Ich denke das irgendwie die zyklischen Ereignisse gar nicht gehen, denke nicht das es am Script liegt.

Kann man das irgendwie testen oder kann ich da in irgend ein Log schauen um das zu testen?

So sind die Verknüpft:


Hab gerade auch nochmal einen neuen angelegt um 13:08 aber wie man sieht wurde er „Nie“ aufgerufen.

Hab den Fehler gefunden, es liegt anscheint wirklich an UTC.
Hab gerade 11:14 Uhr probiert und ging. Hatte vorher immer nur ±1h probiert, sind aber 2h.

Liegt der Fehler dann an der Raspberry Konfig?

Gruß und Danke
Henning

Ja, du hast dort nicht die richtige Zeitzone eingetragen.
Michael