+ Antworten
Ergebnis 1 bis 2 von 2
  1. #1
    Registriert seit
    Aug 2012
    Beiträge
    464

    Standard Urlaubs Script - zum deaktivieren von Ereignissen während des Urlaubs

    Möchte Euch kurz mien kleines Script vorstellen, das gestern Abend enstanden ist.
    Habe in IPS eine Variable (BOOLEAN), ob wir aktuell im Urlaub sind. Urlaub = TRUE, kein Urlaub = FALSE.

    Anhand des Status möchte ich natürlich, dass bestimmte Dinge nicht mehr geschehen, zb. Kaffeemaschine an, Router an etc.

    Dieses Script deaktiviert Ereignisse von angegebenen Instanzen abhängig vom Urlaub.
    (Bereits nicht aktive Ereignisse vor Urlaub werden danach nat. auch nicht aktiviert)

    PHP-Code:
    <?
    /* Urlaubs script -------------------------------------------------------
     Dieses Script deaktiviert Ereignisse wenn man im Urlaub ist.
     Bei beendetem Urlaub werden die Ereignisse wieder in den Urspr.
     Zustand gesetzt.
    -------------------------------------------------------------------------*/

    /* ---- BEGIN CONFIG ----------------------------*/
      // Wenn Urlaubsmodus, dann die Ereignisse für folgende Objekte deaktivieren.
     
    $c_geraete[] = 48388 /*[Objekte\Funksteckdosen\Steckdose 1 (Kaffeemaschine)]*/;
     
    $c_geraete[] = 58082 /*[Objekte\Sonstige Objekte\Dimmer (Schlafzimmer)]*/;
     
    $c_geraete[] = 19522 /*[Scripts\Leuchten Scripts\Schlafzimmer Sonnenaufgang]*/;
     
    $c_geraete[] = 49862 /*[Scripts\Leuchten Scripts\Schlafzimmer Ausschalten täglich]*/;
     
    $c_geraete[] = 31390 /*[Objekte\FS20\FS20 Steckdose (Media Center)\Mediacenter Power]*/;
     
     
    // Urlaubsvariable (TRUE/FALSE)
     
    $c_urlaub 53059 /*[Objekte\Sonstige Objekte\Urlaubsmodus]*/
     
     
    //Nur Zyklische Ereignisse
     
    $c_cyclic_only true;
     
    /* ---- END CONFIG ----------------------------*/


     
    $l_urlaub getvalue($c_urlaub);
     
    $l_nactive "";
     if(!
    $l_urlaub)$l_nactive =  getvalue(CreateVariableByName($_IPS['SELF'],"Urlaub Aktiv Status",3));
     
     echo 
    "Urlaubsmodus ".GetValueFormatted($c_urlaub)."\n";
     foreach(
    $c_geraete as $l_objid){
       
    $l_childs IPS_GetChildrenIDs($l_objid); // Kinder Objekte einer INstanz etc. lesen
       
    foreach($l_childs as $l_cobjid){
          
    $l_detail IPS_GetObject($l_cobjid);

          if(
    $l_detail["ObjectType"] == 4){  // Wenn Ereignis (4)
             
    $l_eventinfo IPS_GetEvent($l_cobjid);
                if((
    $c_cyclic_only && $l_eventinfo["EventType"] == 1) || (!$c_cyclic_only)){
                    
    // Neuer Status definiieren
                    
    if($l_urlaub){
                        
    //Wegspeichern, welche Ereignisse nicht aktiv sind
                         
    if(!$l_eventinfo["EventActive"])$l_nactive .= $l_cobjid.",";
                        
    $l_status false;
                    } else {
                       
    // Wenn Event vorher nicht aktiv war, jetzt auch nicht aktivieren, sonst ja.
                       
    $l_status = (in_array($l_cobjidexplode(","$l_nactive)))? false true;
                    }
                    
    // Event Aktivieren oder Deaktivieren
                    
    IPS_SetEventActive($l_cobjid$l_status);
                    
    $txt_status = ($l_status)?"Aktiviert":"Deaktiviert";
                    echo 
    IPS_GetName($l_objid)."->".IPS_GetName($l_cobjid).": ".$txt_status."\n";
                } 
    // Zyklische
          
    }
       }
     }
     
     
    // speichern
     
    if($l_urlaub){
         
    setvalue(CreateVariableByName($_IPS['SELF'],"Urlaub Aktiv Status",3), $l_nactive);
     }
     
     
    //.............................................................................
     
    function CreateVariableByName($id$name$type$profile "")
    {
        
    # type: 0=boolean, 1 = integer, 2 = float, 3 = string;
        
    global $IPS_SELF;
        
    $vid = @IPS_GetVariableIDByName($name$id);
        if(
    $vid === false)
        {
            
    $vid IPS_CreateVariable($type);
            
    IPS_SetParent($vid$id);
            
    IPS_SetName($vid$name);
            
    IPS_SetInfo($vid"this variable was created by script #$IPS_SELF");
            if(
    $profile !== "") { IPS_SetVariableCustomProfile($vid$profile); }
        }
        return 
    $vid;
    }

    ?>
    • IPS auf HP Proliant N40L 1x64GB SSD, 3TB, 6GB RAM •
    • Z-Wave von Fibaro und Everspring • OpenWRT Ansteuerung • 1-Wire •
    • WMRS 200 Wetterstation • CAPI mit FritzBox •

  2. #2
    Registriert seit
    Aug 2012
    Beiträge
    464

    Neue Version mit mehreren Modi hier:
    http://www.ip-symcon.de/forum/thread...%C3%A4fer-etc)
    • IPS auf HP Proliant N40L 1x64GB SSD, 3TB, 6GB RAM •
    • Z-Wave von Fibaro und Everspring • OpenWRT Ansteuerung • 1-Wire •
    • WMRS 200 Wetterstation • CAPI mit FritzBox •

Ähnliche Themen

  1. Problem mit Ereignissen im Script
    Von hbraun im Forum Allgemeine Diskussion (2.x/3.x)
    Antworten: 6
    Letzter Beitrag: 21.06.12, 19:37
  2. Script zum liefern und croppen von Bildern
    Von aag im Forum Anleitungen / Nützliche PHP Skripte
    Antworten: 0
    Letzter Beitrag: 21.05.12, 05:40
  3. Unterscheidung von Ereignissen in einem Script
    Von hrahlers im Forum Skripte, PHP, SQL
    Antworten: 5
    Letzter Beitrag: 06.11.11, 09:52
  4. Script zum Anlegen von Instanzen
    Von DeejayT im Forum Skripte, PHP, SQL
    Antworten: 6
    Letzter Beitrag: 16.06.09, 06:44
  5. Urlaubs- und Partyschaltung
    Von cAtMaX im Forum Ideen & Anregungen
    Antworten: 21
    Letzter Beitrag: 12.12.05, 12:47