a) Skript welches bei Anschalten losläuft und jede Sekunde ausgeführt wird
b) Integer Variable mit UnixTimestamp die von Skript a) hochgezählt wird
c) Skript a) bekommt noch ein nettes Extra, welches den Timer beim Ausschalten wieder deaktiviert
Leichte Ungenauigkeiten können bei dieser Methode auftreten. Aber ist eher simpel realisierbar
Du legst Dir z.B. einfach eine Variable vom Typ Integer mit Namen Start Time an und weist ihr das Profil ~Unixtimestamp zu. Dann legst Du Dir eine zweite Variable an vom Typ String mit Profil ~String, die den Text enthalten soll, der im Webfront steht. Unterhalb der Variable legst Du zwei Skripte an. Eines zum beschreiben des Werts in den Webfront und ein Skript das den Timer setzt bei Variablenaktualisierung der zu beobachtenden Variable.
Sieht dann z.B. so aus:
Auf das eine Skript Timer schalten legst Du ein Ereignis bei Variablenaktualisierung und schaltest damit den Timer für das zweite Skript.
Timer schalten
$state = GetValue(36602 /*[Geräte\Homematic\Räume\Büro\Arbeitszimmer Licht\Zustand]*/); //Variable die geschaltet wird
$timerscriptid = 48610 /*[Geräte\Homematic\Homematic Scripte\Dachgeschoss\Büro\Timer Beleuchtung\Time Elapsed ime elapsed]*/;
$starttimeid = 42559 /*[Geräte\Homematic\Homematic Scripte\Dachgeschoss\Büro\Timer Beleuchtung\Start Time]*/;
if($state) // Beim Einschalten Timer setzten und Startzeit ablegen
{
SetValue($starttimeid, time());
IPS_SetScriptTimer($timerscriptid, 1); //Skript alle 1s ausführen
}
else //Timer auschalten
{
IPS_SetScriptTimer($timerscriptid, 0); // Timer löschen
}