ich möchte bei meiner Gartenbewässerung (visualisiert duch einfache Relais An/Aus) die (verbleibende) Laufzeit anzeigen. Praktisch also eine Variable, die z.B. von „3:00 min“ an runterzählt (also 1 oder 5 sekündlich).
Wie macht man sowas am besten? Ich möchte ja nicht sekündlich ein Skript neu anstarten…
Gruss
Coyote
P.S.: Schade, das es den Variablen-Typ „Time“ nicht gibt
Du könntest dir die Startzeit merken und wo immer du deinen timer angezeigt haben willst die aktuelle Uhrzeit von Startzeit + 3 Minuten abziehen. Wenn der Wert <= 0 wird ist die Zeit um.
Eine Uhrzeit ist in Wirklichkeit ein Float. Und den gibt es. Dabei wird angenommen dass 1 ein Tag ist. 0.5 ist demnach ein halber Tag = 12 Stunden. 0,125 ist also 3 Uhr Nachts (1/24*3). und 14:35 Uhr ergibt 0,6076388 Periode. 4,6409722 Periode sind folglich 4 Tage, 15 Stunden, 23 Minuten. PHP dürfte das beherrschen, also kann IPS das auch. Kann alles so einfach sein
Edit:
musst mal schauen ob das mit Variablenprofilen umsetzbar ist
mein Problem dabei: Ich möchte den Wert im Webfront visualisieren. Ich möchte also, das dort der Wert sekündlich sinkt. Einmal ausrechnen beim refresh reicht also nicht. Ich möchte, das das ganze „live“ abläuft…
Das ist ein Script welches einen Counter von 180s herunterzählt.
Wenn Dir das reicht kannst Du für $id_zeit ein Variablenprofil im Webfront anlegen, damit die Variable sichtbar wird. Diese zählt dann jede Sekunde von 180 bis 0 herunter.
//-------------------------------------- ID´s -------------------------------
$id_zeit = 20807; // Int Var
//---------------------------------------------------------------------------
$zeit = GetValueInteger($id_zeit);
//---------------------------------------------------------------------------
if ($IPS_SENDER == "TimerEvent")
{
$zeit = GetValueInteger($id_zeit);
SetValueInteger($id_zeit, $zeit-1);
If($zeit == 1)
{
IPS_SetScriptTimer($IPS_SELF,0);
}
return;
}
SetValueInteger($id_zeit, 60*3); //60 s x 3min
IPS_SetScriptTimer($IPS_SELF,1);
danke für das Script (Hätte ich auch so hinbekommen ;)).
Ich habe/hatte im wesentlichen bedenken, einen Timer sekündlich laufen zu lassen. Da es bei mir aber um Gartenbewässerung geht, und die Timer somit nur gelegentlich laufen, werde ich das mal angehen.
Ich stimme dir zu. Da aber die Laufzeit durch Relais aus dem Backend beeinflusst wird, müsste man dann wiederum Logik am Frontend duplizieren. Erst im Webfront, dann im Designer, dann im iFront, …