+ Antworten
Seite 1 von 6 1 2 3 ... LetzteLetzte
Ergebnis 1 bis 10 von 52
  1. #1
    Registriert seit
    Feb 2005
    Ort
    Lübeck
    Beiträge
    21,422

    Talking Eieruhr im WebFront

    Dieses Skript erstellt eine Variable, die dann als Eieruhr genutzt werden kann. Beim Drücken von + wird der Befehl aus der on-Funktion gestartet und zählt so lange runter, bis 0 erreicht wurde. Daraufhin wird die off-Funktion gestartet wird und die Eieruhr wechselt auf Aus. Während die Eieruhr läuft, kann diese per +/- adjustiert werden, ohne dass die on-Funktion erneut gestartet wird. Bei erreichen von 0 oder drücken der Aus-Taste, wird der Timer sofort deaktiviert und die off-Funktion ausgeführt.

    Grüße,
    paresy

    PS: Wurde für die 2.4 entwickelt, sollte aber (ohne Farben) auch mit der 2.3 schon laufen.
    PPS: Diese spezielle Darstellung wird im iFront nicht vollständig unterstützt, ist aber trotzdem nutzbar

    PHP-Code:
    <?

     $max 
    25;
     
    $step 5//Schrittgröße

     
    function on() {
       
    IPS_LogMessage("Eieruhr""Aktiviert!");
     }
     function 
    off() {
       
    IPS_LogMessage("Eieruhr""Abgelaufen...");
     }

    //Ab hier nichts mehr verändern
     
    $min 0;
     
    $suffix "min";
     
    $vpn "EggTimer.".$max.".".$step;
     if(
    $IPS_SENDER == "Execute")
     {
       if(
    IPS_VariableProfileExists($vpn))
            
    IPS_DeleteVariableProfile($vpn);
        
    IPS_CreateVariableProfile($vpn1);
        
    IPS_SetVariableProfileValues($vpn$min$max0);
        
    IPS_SetVariableProfileIcon($vpn"Clock");
        
    IPS_SetVariableProfileAssociationEx($vpn$min-2"Aus"""0xFF0000);
        
    IPS_SetVariableProfileAssociationEx($vpn$min-1"-""", -1);
        
    IPS_SetVariableProfileAssociationEx($vpn$min"%d ".$suffix""0x00FF00);
        
    IPS_SetVariableProfileAssociationEx($vpn$max+1"+""", -1);
       
    $vid CreateParentVariable($IPS_SELF"Timer"1);
       
    IPS_SetVariableCustomProfile($vid$vpn);
       
    IPS_SetVariableCustomAction($vid$IPS_SELF);
       
    SetValue($vid$min-2);
     }
     else if(
    $IPS_SENDER == "WebFront")
     {
            switch(
    $IPS_VALUE)
            {
               case 
    $min-2:
                  
    doOff();
                  break;
               case 
    $min-1:
                  
    $IPS_VALUE GetValue($IPS_VARIABLE) - $step;
                  if(
    $IPS_VALUE <= 0)
                  {
                        
    $IPS_VALUE = -2;
                        
    doOff();
                  }
                  break;
               case 
    $max+1:
                  
    $IPS_VALUE min($maxmax(0GetValue($IPS_VARIABLE)) + $step);
                 
    doOn();
                 break;
                default:
                    return;
            }
          
    SetValue($IPS_VARIABLE$IPS_VALUE);
     }
     else if(
    $IPS_SENDER == "TimerEvent")
     {
       
    $vid CreateParentVariable($IPS_SELF"Timer"1);
        
    $v GetValue($vid);
        
    $v--;
        if(
    $v <= 0)
        {
           
    doOff();
            
    IPS_SetScriptTimer($IPS_SELF0);
            
    $v $min-2;
        }
        
    SetValue($vid$v);
     }

    function 
    doOn()
    {
       global 
    $IPS_SELF;
        if(
    IPS_GetScriptTimer($IPS_SELF) == 0)
        {
            
    IPS_SetScriptTimer($IPS_SELF60);
            
    on();
        }
    }

    function 
    doOff()
    {
       global 
    $IPS_SELF;
        
    IPS_SetScriptTimer($IPS_SELF0);
        
    off();
    }

    function 
    CreateParentVariable($id$name$type)
    {
        global 
    $IPS_SELF;
        
    $vid IPS_GetParent($IPS_SELF);
         if(!
    IPS_VariableExists($vid))
         {
             
    $vid false;
         }
         else
         {
           
    $v IPS_GetVariable($vid);
           if(
    $v['VariableValue']['ValueType'] != $type)
              
    $vid false;
         }
        if(
    $vid === false)
        {
            
    $vid IPS_CreateVariable($type);
            
    IPS_SetParent($vidIPS_GetParent($IPS_SELF));
            
    IPS_SetParent($id$vid);
            
    IPS_SetName($vid$name);
            
    IPS_SetInfo($vid"this variable was created by script #$IPS_SELF");
            
    IPS_SetHidden($idtrue);
        }
        return 
    $vid;
    }

    function 
    IPS_SetVariableProfileAssociationEx($vpn$av$an$ai$ac)
    {
        if(
    floatval(IPS_GetKernelVersion()) <= 2.3)
        {
            
    IPS_SetVariableProfileAssociation($vpn$av$an$ai);
        } else {
            
    IPS_SetVariableProfileAssociation($vpn$av$an$ai$ac);
        }
    }

    ?>
    Angehängte Grafiken Angehängte Grafiken  
    Geändert von paresy (23.06.11 um 19:58 Uhr)

  2. #2
    Registriert seit
    Mar 2007
    Beiträge
    175

    Hallo,

    Zitat Zitat von paresy Beitrag anzeigen
    ....Bei erreichen von 0 oder drücken der Aus-Taste, wird der Timer sofort deaktiviert und die off-Funktion ausgeführt.

    Grüße,
    paresy
    Gibt es bei erreichen von 0 auch eine Soundausgabe (BingBong), habe im Script nichts gefunden.

    Zitat Zitat von paresy Beitrag anzeigen
    PS: Wurde für die 2.4 entwickelt, sollte aber (ohne Farben) auch mit der 2.3 schon laufen.
    ...mit 2.3 funktioniert es!

    Dankeschön

    Gruß
    Zotac IONITX-A-E 2GByte
    Win7 Ultimate
    Ver 2.4 #1974, 12.06.11, iFront 1.1
    1-Wire USB Adapter DS9490R, Wago 750-342

  3. #3
    Registriert seit
    Aug 2005
    Ort
    Fürstenfeldbruck-Aich (Bayern)
    Beiträge
    4,048

    Wieder ein WAF +1.

    Danke paresy.
    Gruß
    Werner

    Komponenten:: Homematic(CCU) 250DP, EATON-MOELLER, 1-Wire, WMRS200, 15" Touchdisplay
    Software::
    IPS V4.x, iMobile, WebFront, Logitech Media Server 7.8.x, SONOS
    Hardware:: IPS-Server: ESXi 6.x, Windows 10 Ent, 4 Kerne, 8GB RAM

  4. #4

    Irgendwie habe ich einen Denkfehler: Beim Aufruf "execute" des Skripts, wird die Variable "timer" immer in mein IPS root gelegt, das Skript kopiert sich unterhalb von timer (Soll es ja auch)

    Sollte nicht eigentlich Timer unterhalb der Kategorie erstellt werden, aus der das Skript durch execute aufgerufen wird?
    IPS Ninja \\ Webfront auf 15" ELO Touch \\ z-wave \\ IPS-868 \\ FS20 \\ 1-wire \\ Oregon WMRS200 \\ Mediaportal \\ 4x Squeezebox \\ SONOS \\ Denon AVR1912 \\ Kostal Piko 5.5 \\ 7x Vivotek \\ 1x INStar \\ Gardena R40Li mit Robonect HX30
    Mehr auf www.diewuppers.de

  5. #5
    Registriert seit
    Jun 2005
    Beiträge
    3,598

    Hallo Ingo,
    war bei mir auch so. Habe es dann aber rüberschieben können.

    Ev. hast du den Effekt nur bei "execute", weil es dann "angelegt" wird, von Webfront getriggert, bleibt es.

    Gruß Helmut
    Angehängte Grafiken Angehängte Grafiken  
    Geändert von Helmut (23.06.11 um 17:46 Uhr)

  6. #6

    Hallo Helmut,

    hHatte ich auch versucht, allerdings ging das nur mit einem timer/skript.
    Sobald ich mehrere von diesen var/skript Kombinationen hatte, d.h. das Skript 3x laufen lassen habe und jedesmal die entstandene timer/skript Kombi wegkopiert habe gehts nicht mehr.

    Sobald ich einen Timer aktiviere, haut es den kopierten Timer direkt auf 1636036 min...
    Und bei jedem neu aktivieren des Timers durch das WF wird mein kopierter gelöscht und der ursprüngliche im root wieder neu erstellt.


    Probiers mal.

    Ingo
    Geändert von wupperi (23.06.11 um 18:13 Uhr)
    IPS Ninja \\ Webfront auf 15" ELO Touch \\ z-wave \\ IPS-868 \\ FS20 \\ 1-wire \\ Oregon WMRS200 \\ Mediaportal \\ 4x Squeezebox \\ SONOS \\ Denon AVR1912 \\ Kostal Piko 5.5 \\ 7x Vivotek \\ 1x INStar \\ Gardena R40Li mit Robonect HX30
    Mehr auf www.diewuppers.de

  7. #7
    Registriert seit
    Jun 2005
    Beiträge
    3,598

    Du hast 3 Eierkocher? ;-)

    Verstehe nicht was du da vorschlägst....hast du das Script mehrfach kopiert?

    Gruß Helmut

  8. #8

    Ja, ich will eigentlich meine 3 Beregnungskreise der Gartenbewässerung manuell ansteuern.

    D.h. durch +/- die Zeit von jedem Kreis einstellen -> doOn Funktion dann um das Öffnen des Ventils erweitern und dann runterzählen lassen bis doOff -> Ventilschliessen.

    Dafür brauche ich dann 3 Eieruhren, für jeden Kreis eine.
    IPS Ninja \\ Webfront auf 15" ELO Touch \\ z-wave \\ IPS-868 \\ FS20 \\ 1-wire \\ Oregon WMRS200 \\ Mediaportal \\ 4x Squeezebox \\ SONOS \\ Denon AVR1912 \\ Kostal Piko 5.5 \\ 7x Vivotek \\ 1x INStar \\ Gardena R40Li mit Robonect HX30
    Mehr auf www.diewuppers.de

  9. #9
    Registriert seit
    Feb 2005
    Ort
    Lübeck
    Beiträge
    21,422

    Der Installer war etwas buggy und hat die Variable immer im Root (0) erstellt. Die neue Version erstellt sich korrekt am aktuellen Ort.

    paresy

  10. #10
    Registriert seit
    Jul 2007
    Ort
    Altlußheim
    Beiträge
    343

    Hi,

    super Tool ...

    ich habe noch folgendes ergänzt:

    PHP-Code:
    else if($IPS_SENDER == "TimerEvent")
     {
      .......
     }
    else if(
    $IPS_SENDER == "Variable")
     {
     if(
    $IPS_OLDVALUE == -2)
      {
      
    doOn();
      }
     } 
    und das Skript zusätzlich auf die Variable getriggert ...

    so kann ich die Eieruhr durch setzen der Variable starten ...

    Grüße

    Andreas
    Chromoflex III @ ubox, Homematic über LAN-Adapter
    1-Wire-Master@Lantronics (Shutter, Temp, Helligkeit, Luftfeuchte, Luftqüte)
    AVR-Net-IO (Helligkeitsmessung/Regendauer/S0-Counter), PoKeys56E
    WMRS200 an SX-1000U / Z-Wave / RaspberryPi

Ähnliche Themen

  1. HILFE: Webfront zerschossen!
    Von Hausautomation im Forum WebFront
    Antworten: 4
    Letzter Beitrag: 22.11.10, 06:15
  2. Update und Webfront zerschossen
    Von Lukky im Forum WebFront
    Antworten: 2
    Letzter Beitrag: 10.09.10, 16:18
  3. Webfront reload Frage
    Von Matraaxel im Forum WebFront
    Antworten: 8
    Letzter Beitrag: 17.01.10, 17:03
  4. Umstellung V1 auf V2 mit Designer oder Webfront?
    Von hmpf99 im Forum Allgemeine Diskussion (2.x/3.x)
    Antworten: 3
    Letzter Beitrag: 22.04.09, 20:51