Variable sekündlich verändern?

Hi,

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 :wink:

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. :wink: 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 :wink:

Edit:

musst mal schauen ob das mit Variablenprofilen umsetzbar ist

Toni

Hi,

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…

Danke für die Erleuchtung beim Thema Zeit/Float!

Gruss
Coyote

Kenn das Webfront nicht. Wenn nichts hilft must du das tatsächlich scripten.

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.:wink:


	//-------------------------------------- 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);


Hi,

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.

Gruss
Coyote

eine Lösung im Browser mit ein wenig Javascript wäre wohl erheblich Ressourcen schonender.

Tommi

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, …

Ich hatte nichts in der Frage gesehen, nachdem ein einmal gestarteter Countdown nochmal extern beeinflusst werden soll…:wink: