+ Antworten
Ergebnis 1 bis 7 von 7

Thema: Eieruhr

  1. #1
    Registriert seit
    Feb 2005
    Ort
    Sarkwitz
    Beiträge
    3,673

    Standard 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));
    PHP-Code:
    <?
    /*
    *******************************
     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_SELF0);
          
    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_SELF10);
       
    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_SELF0);
          
    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);
       */
       
    }
    }
    ?>
    Geändert von steiner (19.01.07 um 16:18 Uhr)

  2. #2
    Registriert seit
    Oct 2006
    Ort
    Betzenstein / OFR / Bayern
    Beiträge
    101

    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

  3. #3
    Registriert seit
    Feb 2005
    Ort
    Sarkwitz
    Beiträge
    3,673

    Hallo Ralf,

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

    PHP-Code:
    //GlobalDefines lesen
    include_once(IPS_GetKernelDir() . "scripts\GlobalDefines.ips.php");

    echo 
    __myhome
    ergibt "c:\Programme\IP-SYMCON\"

    wennn:
    PHP-Code:
    <?
    /*
    *******************************
     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

  4. #4
    Registriert seit
    Oct 2006
    Ort
    Betzenstein / OFR / Bayern
    Beiträge
    101

    Hallo Steiner,

    solangsam fallen die Groschen (Papierzehnerla)

    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

  5. #5
    Registriert seit
    Feb 2005
    Ort
    Sarkwitz
    Beiträge
    3,673

    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

  6. #6
    Registriert seit
    Oct 2006
    Ort
    Betzenstein / OFR / Bayern
    Beiträge
    101

    OK Super Danke erst mal

    Super sache Euer Forum

    Gruß Ralf

  7. #7
    Registriert seit
    Feb 2005
    Ort
    Sarkwitz
    Beiträge
    3,673

    ... für die V2 ...
    PHP-Code:
    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_SELF0);
          
    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_SELF10);
       
    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_SELF0);
          
    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_sound50);
            
    WAC_PlayFile($id_soundIPS_GetKernelDir()."sounds\\eieruhr.wav");
       }

    Geändert von steiner (02.08.09 um 20:45 Uhr)