Problem mit ScriptTimer

Hallo zusammen,

ich habe mir die Funktionalität „ScriptTimer“ genauer angesehen und diese für eine Lampe umgesetzt.

Diese soll nach dem Anschalten nach Zeit X wieder automatisch ausgehen.

Ich habe folgendes Skript angelegt:

if($_IPS['SENDER'] == "TimerEvent")
{
    //Aus Befehl
	 EIB_Switch(50305,false);
    //Timer ausschalten
    IPS_SetScriptTimer($_IPS['SELF'], 0);
} else {
    //An Befehl
    EIB_Switch(50305,true);
    //Timer anschalten
    IPS_SetScriptTimer($_IPS['SELF'], 10);
}
?>

Dieses Script habe ich bei der Variable als Aktionsscript hinterlegt

Schalte ich die Lampe über das Webfront/App (genauer gesagt handelt es sich um einen Link auf die Boolean-Variable unter einer EIB_Switch-Instanz) funktioniert das ganze.

Schalte ich die Lampe allerdings über den Wandtaster oder über EIB_Switch(xxx, true) wird der Timer nicht aktiviert und das Licht bleibt an.

Hat jemand einen Hinweis für mich?

PS: Das Ereignis 28364 macht etwas anderes und hat mit der Thematik nichts zu tun.

Vielen Dank.

Gruß Johannes

]

Hi!

Wenn du auch manuelle Schaltungen über den Timer laufen lassen willst, dann musst du ein Ereignis beim Skript mit anlegen, dass auf Variablenänderung (Status-Variable vom Schalter an der Wand) reagiert und das entsprechend mit in dein Skript aufnehmen. Weil das „Actionscript“ in der Variable reagiert nur auf direkte Bedienung der Variable durch z.B. das WebFront.

Also du drückst den Wandschalter, die Status-Variable vom Wandschalter in IPS ändert sich, dadurch wird (d)ein Skript getriggert und dieses startet den Timer und nach Ablauf des Timers wird die Lampe über IPS wieder ausgeschaltet.

Grüße,
Chris

Hi,

danke für die prompte Antwort.
Ich hatte mir das so ähnlich auch schon gedacht.

Ich habe nun nochmals einiges getestet. In meinem Fall ist die Variable die ich über das Webfront schalte und die Statusvariable der Instanz die gleiche.

Ich habe nun das Aktionsscript aus der Variable entfernt und folgendes getestet:

Ereignis „bei Variablenänderung“ bei der Statusvariable mit dem Code

<?
IPS_RunScript(20246);
?>

und

Ereignis „bei Variablenänderung“ bei dem TimerScript.

Leider funktioniert das so nicht. Das Timerevent unter dem Script wird zwar nach Zeit x kurzzeitig deaktiviert, anschließend aber direkt wieder aktiviert; das Licht bzw. die Statusvariable bleibt auf true.

Muss im Timer-Script evtl. noch was angepasst werden?
So ganz ist mir die Funktionsweise noch nicht klar.

Gruß Johannes

Hallo,

so klappts:

<?
$ar_script_name = IPS_GetObject($_IPS['SELF']);
$script_name = $ar_script_name["ObjectName"];

if($_IPS['SENDER'] == "TimerEvent") {
    IPS_SetScriptTimer($_IPS['SELF'], 0);
    EIB_Switch(50305, false);
}
else {
      If (GetValueBoolean($_IPS['VARIABLE']) == false) {
			IPS_SetScriptTimer($_IPS['SELF'], 0);
		}
		else {
         IPS_SetScriptTimer($_IPS['SELF'], 60);
		}
}


?>

Hat ein wenig gedauert aber als ich das ganze dann für meine Heizungssteuerung (wenn Fenster länger als x geöffnet dann Heizung aus) genau anders herum gebraucht habe, hat es klick gemacht :loveips:

Gruß Johannes