Laufzeit Skript-Timer abrufen

Irgendwie stehe ich im Moment an.

Sollte der Befehl

IPS_GetScriptTimer($_IPS['SELF'])

nicht als Rückgabewert die Zeit in Sekunden, die der Timer das Skript zyklisch aufruft, liefern?
Ich bekomme immer nur den Wert 0 raus :confused:
Was mache ich bei der simplen Abfrage falsch?

Falls die Frage kommt; Ja, der Timer ist natürlich aktiv. Das Skript wird alle 5 Sekunden ausgeführt.

Peter

Hi,
als ich in der Doku gelesen hatte hatte stand da das es so keine Möglichkeit gibt an die Restlaufzeit zu kommen. Wenn man es so einfach könnte gebe es bei einer 0 die Zweideutigkeit entweder Zeit abgelaufen oder ScriptTimer deaktiviert.

Doku: „Zeit in Sekunden, die der Timer das Skript zyklisch aufruft. (Es ist nicht die Restzeit.)“

Ralf

Hallo Ralf,

danke für deine Antwort.
Ich benötige aber keine Restlaufzeit, sondern den Wert, auf welche Zeit der Skript-Timer gestellt ist. Wenn man es genau nimmt, dann nicht einmal den Wert, sondern nur, ob der Skript-Timer aktiviert ist. Aber soweit ich weiß, geht ein Abruf, ob der Timer aktiv ist, nicht.

Hallo
Also bei mir funktioniert es.

$x = IPS_GetScriptTimer($_IPS['SELF']);

liefert mir wenn aktiv die Sekunden wenn inaktiv 0.
Hast du den Timer auch erstellt mit:

IPS_SetScriptTimer ($id, ....);

Ja, habe ich.
Folgende Funktion möchte ich haben: Wenn das Garten-Bewässerungssystem läuft, möchte ich sehen, wie lange der jeweilige Bewässerungskreis schon läuft. Eigentlich ganz simple.

<?php

$StatusAktor = GetValueBoolean(38047 /*[Bewässerung\Gartenbewässerung\Rasen 1]*/);

if($StatusAktor === true)
{
$Variablen_ID = 38047 /*[Bewässerung\Gartenbewässerung\Rasen 1]*/;  // Hier die Objekt-ID der Variable eintragen
$Variable_Daten = IPS_GetVariable($Variablen_ID);

$DeltaSekunden = time()-($Variable_Daten['VariableChanged']); // Letzte Variablenänderung
$DeltaMinuten = $DeltaSekunden / 60;

SetValueInteger(43709 /*[Bewässerung\Gartenbewässerung\Rasen 1\Laufzeit Rasen 1]*/, $DeltaMinuten);

IPS_SetScriptTimer($_IPS['SELF'], 60);
}

if($StatusAktor === false)
{
IPS_SetScriptTimer($_IPS['SELF'], 0);
SetValueInteger(43709 /*[Bewässerung\Gartenbewässerung\Rasen 1\Laufzeit Rasen 1]*/, 0);
}

Das Skript starte ich bei Veränderung der Bewässerungsvariable bzw. wird es durch den Skript-Timer gestartet. Jetzt möchte ich aber im Skript prüfen, ob der Timer bereits aktiv ist, damit nicht alle xx Sekunden der Timer wieder erneut gesetzt wird.

Also bei mir liefert folgende 2 Zeilen den Wert 30 wenn aktiv und 0 wenn inaktiv.

	IPS_SetScriptTimer ($_IPS['SELF'], 30);
	echo IPS_GetScriptTimer($_IPS['SELF']);																																		

Vielleicht liegt es an meiner Version von IPS.

Hab jetzt deine beiden Zeilen in ein neues Skript kopiert und getestet. Jetzt gibt er den richtigen Wert zurück :confused:
Also irgendwo hab ich einen Denkfehler bzw. sehe ich vor lauter Bäumen den Wald nicht mehr…
Werd mal einige Versuche durchführen. Tatsache ist jedenfalls, dass es funktionieren muss.

Danke vorerst!

LG Peter

Bei mir jetzt auch!
Irgendwo hatte ich scheinbar einen kleinen Fehler. Mit den kopierten Zeilen gehts jetzt.
Ärgerlich, da ich mindestens 10 mal alles kontrolliert habe :persevere:

Danke dir :+1: