Hallo,
seit vergangener Woche bin ich nun auch IP-Symcon-Nutzer. Da ich im Forum schon länger mitgelesen habe und hieraus viele nützliche Skripte verwenden konnte, möchte als ersten Post gleich ein kleines Timer-Skript für das WebFront vorstellen.
Inspiriert wurde ich vom Eieruhr-Skript (hieraus stammt auch die Sounddatei und ein Teil des Codes).
Das Skript lässt sich einfach mit 6 Tasten bedienen (auch Touchpanel-geeignet).
Wenn der Timer aktiv ist, startet das Skript automatisch alle 10 Sekunden (in den letzten 10s jede Sekunde) um die Webfront-Anzeige zu aktualisieren.
Die Variablen wie im Anhang gezeigt anlegen.
Für die „SetTimer“ Variable muss noch ein Variablen-Profil (s.Bild) angelegt und das Timer Skript als auszuführendes Skript eingetragen werden.
Mit zwei Links auf „Anzeige“(Variablen-Profil ~String) und „SetTimer“ lässt sich der Timer dann im WebFront darstellen.
Viele Grüße,
to
P.S. Gibt es im Skript-Editor eine „Suche und Ersetze“-Funktion? Diese wäre hier sehr hilfreich. Nur als Anregung für spätere IP-Symcon-Versionen.
<?
$timer = 33009 /*[Skripte\Timer\Timer]*/;
$setTimer = 44414 /*[Skripte\Timer\SetTimer]*/;
$status = 35439 /*[Skripte\Timer\Timer_Status]*/;
$display = 56394 /*[Skripte\Timer\Timer Anzeige]*/;
$timerStart = 42758 /*[Skripte\Timer\Time_Start]*/;
$id_sound = 18213 /*[Instanzen\Media Player Radio]*/;
if ($IPS_SENDER == "WebFront"){
$Timer=GetValue($timer);
switch ($IPS_VALUE) {
case 0: //+1 min.
$Timer=$Timer+60;
SetValue($setTimer,0);
break;
case 1: //11 min.
if ($Timer >= 60) {
$Timer=$Timer-60;
}
SetValue($setTimer,1);
break;
case 2: //+10 min.
$Timer=$Timer+600;
SetValue($setTimer,2);
break;
case 3: //-10 min.
if ($Timer >= 600) {
$Timer=$Timer-600;
}
SetValue($setTimer,3);
break;
case 4: // Start/Stop
if (GetValue($status)){ //Stop...
SetValue($status, false);
IPS_SetScriptTimer($IPS_SELF, 0);
$Timer=GetValue($timerStart) + GetValue($timer) - time();
}
else { // ... und Start
SetValue($status, true);
SetValue($timerStart, time());
IPS_SetScriptTimer($IPS_SELF, 10);
}
SetValue($setTimer,4);
break;
case 5: //Reset
if (GetValue($status)){
SetValue($status, false);
}
$Timer=0;
IPS_SetScriptTimer($IPS_SELF, 0); // ScriptTimer ausschalten
SetValue($setTimer,5);
break;
}
SetValue($timer, $Timer);
SetValue($display, "Start: " . date("i:s", GetValue($timer))." min."); // Anzeige der Timereinstellung
if (GetValue($status)) {
SetValue($display, "Rest: " . date("i:s", GetValue($timer) - (time() - GetValue($timerStart))) . " min."); //Anzeige bei änerung des Timers
}
}
if ($IPS_SENDER == "TimerEvent"){
SetValue($display, "Rest: " . date("i:s", GetValue($timer) - (time() - GetValue($timerStart))) . " min."); //aktualisierung der Timer-Anzeige (alle 10 s)
if (GetValue($timerStart) + GetValue($timer) -time() <= 10) { // Für die letzten 10s wird das Skript jede sekunde ausgeführt
IPS_SetScriptTimer($IPS_SELF, 1);
}
if (time() >= GetValue($timerStart) + GetValue($timer) && GetValue($status)) { //Auslösen des Timers
SetValue($display, "ALARM");
IPS_SetScriptTimer($IPS_SELF, 0);
SetValue($timer, 0);
SetValue($status, false);
WAC_SetVolume($id_sound, 50);
WAC_PlayFile($id_sound, IPS_GetKernelDir()."sounds\\eieruhr.wav");
}
}
?>