+ Antworten
Ergebnis 1 bis 5 von 5
  1. #1
    Registriert seit
    Dec 2007
    Beiträge
    33

    Standard Script Timer - erster Durchlauf erst nach Timer-Wert

    Hallo,
    bitte um eine neuerlich Hilfestellung!

    Wie unterbinde ich die Eigenschaft des Timer Event das nach dem setzen mit IPS_SetScriptTimer das Script sofort ausgeführt wird und danach die übergebene Zeit abgewartet wird?

  2. #2
    Registriert seit
    Sep 2005
    Ort
    Stade
    Beiträge
    6,618

    Ähm... Woher hast du diese Eigenschaft?

    poste mal dein Script, bitte.

    Toni

  3. #3
    Registriert seit
    Dec 2007
    Beiträge
    33

    angenommen ...

    Mein Script soll einfach einen Zähler erhöhen und den nächsten Schritt ausführen. Im Script unten sollte im Schritt 1 der Timer auf 20sec gesetzt werden.
    Beim darauffolgenden Durchlauf ist Schritt 2 aktiv und beendet die Szene.
    Nur werden die 20sec nicht abgewartet!
    PHP-Code:
    $count=GetValueInteger("Counter_Wecker1_Szene1");
    if (
    $IPS_SENDER == "TimerEvent")
    {
    IPS_SetScriptTimer($IPS_SELF,0);
     Switch(
    $count)
       {
          case(
    1): // Schritt 1
          // Nur ausführen wenn kein anderer Wecker aktiv ist und später einschaltet!
          
    if (($Wecker1_T2>$Wecker1_T1 and GetValueBoolean("$Wecker1_daily_aktive")) or ($Wecker2_T2>$Wecker1_T1 and GetValueBoolean("$Wecker2_daily_aktive")) or ($Wecker2_T1>$Wecker1_T1 and GetValueBoolean("$Wecker2_daily_aktive"))){
          if(
    GetValueBoolean("$Wecker1_SZ")){
             
    EIB_DriveMove(ID_Jal_SZ,true );
             }
          if(
    GetValueBoolean("$Wecker1_WZ")){
             
    EIB_DriveMove(ID_Jal_WZ,true );
             }
          }
          
    IPS_SetScriptTimer($IPS_SELF,20);
          
    SetValueInteger("Counter_Wecker1_Szene1",2); // Szenenzähler erhöhen
          
    break;
          
          case(
    2): // Schritt 2 nach 20sec
           
    if(GetValueBoolean("$Wecker1_SZ")){
             
    IPS_RunScript("Zeitansage");
             }
           if(
    GetValueBoolean("$Wecker1_WZ")){
              
    IPS_RunScript("Zeitansage");
             }
          }
          
    IPS_SetScriptTimer($IPS_SELF,0);
          
    SetValueInteger("Counter_Wecker1_Szene1",0);  //ENDE
          
    break;
       } 

  4. #4
    Registriert seit
    Sep 2005
    Ort
    Stade
    Beiträge
    6,618

    Kontrolliere deine Klammerung.

    Die Klammer vor

    PHP-Code:
    IPS_SetScriptTimer($IPS_SELF0); 
    gehört bestimmt hinter das letzte break.

    Anfänger tun sich mit dieser Art der Klammerung oft etwas schwer. Versuchs mal so:

    PHP-Code:
    if ($IPS_SENDER == "TimerEvent")
    {
      
    IPS_SetScriptTimer($IPS_SELF0);
      Switch (
    $count)
      {
        case 
    1// Schritt 1
          // Nur ausführen wenn kein anderer Wecker aktiv ist und später einschaltet!
          
    if ( ($Wecker1_T2>$Wecker1_T1 and GetValueBoolean($Wecker1_daily_aktive)) or
               (
    $Wecker2_T2>$Wecker1_T1 and GetValueBoolean($Wecker2_daily_aktive)) or
               (
    $Wecker2_T1>$Wecker1_T1 and GetValueBoolean($Wecker2_daily_aktive)) )
          {
            if (
    GetValueBoolean($Wecker1_SZ))
            {
               
    EIB_DriveMove(ID_Jal_SZtrue);
            }
            if (
    GetValueBoolean($Wecker1_WZ))
            {
               
    EIB_DriveMove(ID_Jal_WZtrue);
            }
          }
          
    IPS_SetScriptTimer($IPS_SELF20);
          
    SetValueInteger("Counter_Wecker1_Szene1"2); // Szenenzähler erhöhen
        
    break;  // Beendet Schritt 1, steht unter Case 1

        
    case 2// Schritt 2 nach 20sec
          
    if (GetValueBoolean($Wecker1_SZ))
          {
            
    IPS_RunScript("Zeitansage");
          }
          if (
    GetValueBoolean($Wecker1_WZ))
          {
            
    IPS_RunScript("Zeitansage");
          }

          
    IPS_SetScriptTimer($IPS_SELF0);
          
    SetValueInteger("Counter_Wecker1_Szene1"0);  //ENDE
        
    break;  // Beendet Schritt 2, steht unter Case 2
      
    }  // Diese Klammer beendet Switch und steht direkt unter der öffnenden Klammer

    Und einrücken nicht vergessen... Alle Klammern die zusammen gehören stehen auf diese Weise direkt untereinander. Man behält leichter den Überblick.

    Wer triggert dein Script?

    [Edit]Nochmal schön formatiert...[/Edit]

    Gruß,

    Toni
    Geändert von Tonic1024 (09.05.08 um 11:28 Uhr)

  5. #5
    Registriert seit
    Dec 2007
    Beiträge
    33

    Danke, hattest recht mit der Klammer...

Ähnliche Themen

  1. Script Timer auslesen
    Von kpiep im Forum Skripte, PHP, SQL
    Antworten: 10
    Letzter Beitrag: 27.01.19, 14:04
  2. ein timer problem mit meinem script
    Von hmpf99 im Forum Skripte, PHP, SQL
    Antworten: 12
    Letzter Beitrag: 05.05.07, 16:14
  3. [BUG gefixt 0.91] RRD Datenbank wird nicht angelegt
    Von Stefan im Forum IP-Symcon WIIPS für Version 1.0
    Antworten: 19
    Letzter Beitrag: 19.09.06, 14:54
  4. Software oder Script ?
    Von guyabano im Forum Allgemeine Diskussion
    Antworten: 30
    Letzter Beitrag: 21.12.05, 13:14