Eieruhr

… hier ein kleines Beispiel für ein „Kurz-Zeit-Timer“

Im Designer startet ein Button per „OnClick“ nachfolgendes Skript.
Da es keinen Doppelklick gibt, wird die aktuelle Zeit gespeichert: SetValueInteger(„EierClick_Time“, time());
und bei Click-Intervallen kleiner als eine Sekunde wird dadurch die „Eieruhr“ gestoppt.
Andernfalls wird der „Count-Down-Zeit“ jeweils 60 Sekunden hinzuaddiert: SetValueInteger(„Eieruhr_Time“, GetValueInteger(„Eieruhr_Time“) + 60);
Der „Count-Down“ erfolgt im 10-Sekunden-Intervall: IPS_SetScriptTimer($IPS_SELF, 10);
Der aktuelle Zustand „EierUhr_Anzeige“ wird über die „Caption“ vom Button angezeigt: SetValueString(„EierUhr_Anzeige“, „xxxxxx“);
Nach Ablauf des Timers gibt es Alarm.
Sinn und Zweck von diesem Beispiel ist es die „Pizza im Ofen“ oder einen „Rückruf“ nicht zu vergessen.

MST

PS: füe andere Anwendungen interessant:
Restlaufzeit des Timers ermitteln: $rest = IPS_GetScriptTimer($IPS_SELF) - (time()- IPS_GetLastRun($IPS_SELF));


<?
/*
*******************************
 IP-SYMCON Event Scripting
*******************************
File     : EierUhr.ips.php
Trigger  : SELF
Interval : 
*/

if ($IPS_SENDER == "Designer"){
    if ((time() - GetValueInteger("EierClick_Time") <= 0) or (GetValueBoolean("Eier_Alarm") == True)) { // entspricht einem Doppelklick
      IPS_SetScriptTimer($IPS_SELF, 0);
      SetValueInteger("Eieruhr_Time", 0);
      SetValueString("Eieruhr_Anzeige", "STOP");
      SetValueBoolean("Eier_Alarm", False);
      return;
   }
   SetValueInteger("EierClick_Time", time());
   SetValueInteger("Eieruhr_Time", GetValueInteger("Eieruhr_Time") + 60);
   SetValueString("Eieruhr_Anzeige", "Start: " . date("i:s", GetValueInteger("Eieruhr_Time") ." min."));
   IPS_SetScriptTimer($IPS_SELF, 10);
   SetValueBoolean("Eier_Alarm", False);
  }

if ($IPS_SENDER == "TimerEvent"){
   SetValueString("Eieruhr_Anzeige", "Rest: " . date("i:s", GetValueInteger("Eieruhr_Time") - (time() - GetValueInteger("EierClick_Time"))) . " min.");
   if (time() >= GetValueInteger("EierClick_Time") +  GetValueInteger("Eieruhr_Time")) {
      SetValueString("Eieruhr_Anzeige", "ALARM");
      IPS_SetScriptTimer($IPS_SELF, 0);
      SetValueInteger("Eieruhr_Time", 0);
      SetValueBoolean("Eier_Alarm", True);
     /*  Beispiel - Sound - Ausgabe
     DXMedia_Open(62704, IPS_GetKernelDir()."\\media\\wtermin.wav");
     DXMedia_SetVolume(62704, 50);
     DXMedia_Play(62704);
   */
   }
}
?>

Hallo Steiner,
ich weis aller Anfang ist Schwer aber ich hätte da mal noch zwei Fragen

/*  Beispiel - Sound - Ausgabe
 DXMedia_Open(62704, IPS_GetKernelDir()."\\media\\wtermin.wav");
 DXMedia_SetVolume(62704, 50);
 DXMedia_Play(62704);

*/

IPS_GetKernelDir() <- wowerden diese Variable angelegt sind das Global Var. und Du hast in deiner Hallo Welt auch unter Settings ein Script mit dem Namen GlobalDefines die selbe Variable mit dem „_myhome“ wie muß ich das Interpretieren und was gehört alles in die Globalvars bzw. wann müssen die angelegt werden.
Muß ich eigentlich für jede Soundausgabe einen neuen Mediarecorder instalieren reicht eine oder zwei einer für MP3 und der andere für kurze Sounddateien

besten dank im Vorraus

Grüße Ralf

Hallo Ralf,

kann man nicht anlegen: IPS GetKernelDir > http://www.ipsymcon.de/wiki/index.php/IPS_GetKernelDir


//GlobalDefines lesen
include_once(IPS_GetKernelDir() . "scripts\GlobalDefines.ips.php");

echo __myhome;

ergibt „c:\Programme\IP-SYMCON“

wennn:


<?
/*
*******************************
 IP-SYMCON Event Scripting
*******************************
File     : GlobalDefines.ips.php
Funktion : enthält alle Globalen Definitionen/Konstanten
*/

// FS20 Empfänger
define("FS20_Dimmer_1", 64414);
define("FS20_TestLampe", 29865);
define("FS20_PIRILampe", 37891);

// FS20 Sender
define("FS20_PIRI", 40069);
define("FS20_Taster_1", 45626);
define("FS20_Taster_2", 53316);

// Media
define("USB_Sound", 40069);


//System
define("__myhome", IPS_GetKernelDir());

?>

DXMedia_Open(USB_Sound, __myhome . „\media\wtermin.wav“);

ist gleich: DXMedia_Open(USB_Sound, IPS_GetKernelDir() . „\media\wtermin.wav“);

Für jedes „Sound-Gerät“ muss ein „DXMedia“ Modul angelegt werden.

MST

Hallo Steiner,

solangsam fallen die Groschen (Papierzehnerla) :slight_smile:

DXMedia_Open(USB_Sound, __myhome . „\media\wtermin.wav“);

ist gleich: DXMedia_Open(USB_Sound, IPS_GetKernelDir() . „\media\wtermin.wav“);

Für jedes „Sound-Gerät“ muss ein „DXMedia“ Modul angelegt werden.

MST

Also das bedeutet das ich für nen mediaplayer ne Eieruhr und eine Zeitansage je einen winamp Controler in der Instanz anlegen muß
und wie verhölt sich das mit den Globalvars was sollte da unbedingt rein, also wie ich das verstehe sind das Standarts welche immer den Selben Wert haben.

Grüße Ralf

Hallo Ralf,

der Zweck von globalen Variablen ist es, dass Änderungen nur an einer Stelle gemacht werden müssen:
z.B. ID’s von FS20 Geräten, Pfade, Soll-Werte (Temperaturen) oder andere Zustände wie Urlaub, Jahreszeit ect.
Außerdem können hier auch Funktionen „abgelegt“ werden.

MST

OK Super Danke erst mal

Super sache Euer Forum

Gruß Ralf

… für die V2 …

if ($IPS_SENDER == "Designer"){
    if ((time() - GetValue(39038 /*[Termine Wecker\Eieruhr\EieruhrClick_Time]*/) <= 0) or (GetValueBoolean("Eier_Alarm") == True)) { // entspricht einem Doppelklick
      IPS_SetScriptTimer($IPS_SELF, 0);
      SetValue(21533 /*[Termine Wecker\Eieruhr\Eieruhr_Time]*/, 0);
      SetValue(38310 /*[Termine Wecker\Eieruhr\Eieruhr_Anzeige]*/, "STOP");
      SetValue(56537 /*[Termine Wecker\Eieruhr\Eier_Alarm]*/, False);
      return;
   }
   SetValue	(39038 /*[Termine Wecker\Eieruhr\EieruhrClick_Time]*/, time());
   SetValue(21533 /*[Termine Wecker\Eieruhr\Eieruhr_Time]*/, GetValue(21533 /*[Termine Wecker\Eieruhr\Eieruhr_Time]*/) + 60);
	$time = date("i:s", GetValue(21533 /*[Termine Wecker\Eieruhr\Eieruhr_Time]*/));
	SetValue(38310 /*[Termine Wecker\Eieruhr\Eieruhr_Anzeige]*/, "Start: " . $time ." min.");
   IPS_SetScriptTimer($IPS_SELF, 10);
   SetValue(56537 /*[Termine Wecker\Eieruhr\Eier_Alarm]*/, False);
  }

if ($IPS_SENDER == "TimerEvent"){
   SetValue(38310 /*[Termine Wecker\Eieruhr\Eieruhr_Anzeige]*/, "Rest: " . date("i:s", GetValue(21533 /*[Termine Wecker\Eieruhr\Eieruhr_Time]*/) - (time() - GetValue(39038 /*[Termine Wecker\Eieruhr\EieruhrClick_Time]*/))) . " min.");
   if (time() >= GetValue(39038 /*[Termine Wecker\Eieruhr\EieruhrClick_Time]*/) +  GetValue(21533 /*[Termine Wecker\Eieruhr\Eieruhr_Time]*/)) {
      SetValue(38310 /*[Termine Wecker\Eieruhr\Eieruhr_Anzeige]*/, "ALARM");
      IPS_SetScriptTimer($IPS_SELF, 0);
      SetValue(21533 /*[Termine Wecker\Eieruhr\Eieruhr_Time]*/, 0);
      SetValue(56537 /*[Termine Wecker\Eieruhr\Eier_Alarm]*/, True);
      $id_sound = 35352 /*[8 Audio Video IR\Media Player Teufel]*/;
		WAC_SetVolume($id_sound, 50);
		WAC_PlayFile($id_sound, IPS_GetKernelDir()."sounds\\eieruhr.wav");
   }
}

eieruhr_tree.png

eieruhr.zip (33.1 KB)