+ Antworten
Ergebnis 1 bis 9 von 9
  1. #1
    Registriert seit
    Aug 2012
    Beiträge
    462

    Standard Alle Lichter ausschalten - oder alle Instanzen schalten abh. vom Variablenprofil

    Hallo,

    wieder mal ein kleines Script - unabh. vom verwendeten System (s.u. HomeMatic, Z-Wave, FS20, etc.) .
    Dieses Script kann alle Lichter AUS (z.B. beim verlassen des Hauses) oder alles AN Schalten (z.B. bei Brand!) schalten.
    Dazu prüft es ob eine Variable ein entsprechendes Variablenprofil hat.
    Dh. alle Status Variablen meiner Lichter haben ein eigenes Profil "Licht" bekommen.

    Man kann dieses Script in leicht abgewandelter Form auch anders verwenden (zB. alle Standby Verbraucher abschalten, Dazu halt dann ein eigenes Variablenprofil verwenden).
    PHP-Code:
    <?
        
    /* ----------------------------------------------------------------------
                                    Alle Lichter aus / anschalten

            Dieses Script ermittelt alle Lichter anhand eines Profils und schaltet
            diese ein bzw. aus.
            
            Wird das Skript normal aufgerufen, schaltet es aus. Über runScriptEX kann
            aber auch der Wert mitgegeen werden:
            IPS_RunScriptEx(<SCRIPTID>, Array("VALUE"=>true, "FORCE"=>true);
            
            $c_profiles: string,  Variablenprofil das geprüft werden soll
            $c_force: true/false, Wenn TRUE wird auf jeden Fall geschalten, egal
                         ob der aktuelle Wert in IPS bereits den Zielwert hat.
                         Bei Systemen ohne Rückkanal notwendig.
            $c_delay: integer, Millisekunden Pause bis zum nächsten Schaltvorgang
            
          ----------------------------------------------------------------------*/

          
    $c_profiles[] = "Licht";
          
    $c_profiles[] = "Lichter";
          
          
    $c_force false// S.o.
          
    $c_delay =  250;

        

        
    /* End of configuration ------------------------------------------------*/
        
    DEFINE("ZWAVE","{101352E1-88C7-4F16-998B-E20D50779AF6}");
        
    DEFINE("FS20""{48FCFDC1-11A5-4309-BB0B-A0DB8042A969}");
        
    DEFINE("HOME_MATIC","{EE4A81C6-5C90-4DB7-AD2F-F6BBD521412E}");
        
    DEFINE("XCOMFORT","{1B7B5B7D-CAA9-4AB5-B9D8-EC805EC955AD}");
        
    DEFINE("LCN","{2D871359-14D8-493F-9B01-26432E3A710F}");

        
    // status Lesen -
        
    $stat = @$_IPS['VALUE'];
        
    settype($stat"boolean");

        
    $force = (isset($_IPS['FORCE']))? $_IPS['FORCE'] : $c_force;
        
    settype($force"boolean");
        
        
        
    // Alle Lichter ausschalten (mit Profil Licht!)
        
    $a_var IPS_GetVariableList();
       foreach(
    $a_var as $varid){
          
    $var_info IPS_GetVariable($varid);
            
    $var_prof = (!empty($var_info["VariableCustomProfile"]))?
                        
    $var_info["VariableCustomProfile"] :
                        
    $var_info["VariableProfile"];
            
    $var_data getValue($varid);

            if(
    in_array($var_prof,$c_profiles) && (($var_data != $stat) || $force) ){
               
    // Übergeordnete Instanz ermitteln.
               
    $instid IPS_GetParent($varid);
                
    $inst_info IPS_GetInstance($instid);
                switch(
    $inst_info["ModuleInfo"]["ModuleID"]){
                   case 
    ZWAVE:
                                    
    ZW_SwitchMode($instid$stat);
                                 break;

                    case 
    FS20:
                                    
    FS20_SwitchMode($instid$stat);
                                  break;
                          
                    case 
    LCN:
                                    
    LCN_SwitchMode($instid$stat);
                                  break;

                    case 
    XCOMFORT:
                                    
    MXC_SwitchMode($instid$stat);
                                  break;
                          
                    case 
    HOME_MATIC:
                                
    HM_WriteValueBoolean($instid"STATE"$stat);
                                  break;
                } 
    // Switch

                
    IPS_Sleep($c_delay);
            } 
    // if

        
    }


    ?>
    • 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
    Sep 2013
    Ort
    Westerwald
    Beiträge
    37

    Standard Alle Lichter AUS/EIN für KNX?

    Hallo Stele99,

    auch, wenn es bereits eine weile her ist, ich finde die Idee UND Dein Script toll. Auch wenn ich KNX benutze und es bei mir sowieso eine Adresse gibt um alles auszuschalten, macht des Sinn dies über alle "Insel-Systeme" zu tun.

    Grüße
    Geändert von starwars45 (27.07.16 um 20:28 Uhr)

  3. #3
    Registriert seit
    Sep 2009
    Ort
    Innsbruck, Österreich
    Beiträge
    283

    Danke,
    tolles Script - überhaupt für Homematic Geräte, da man diese ja keiner Gruppenadresse zuweisen kann.

    Werner

  4. #4
    Registriert seit
    Aug 2012
    Beiträge
    462

    oh geantwortet, aber der Post ist nicht mehr da.
    Egal, hier die Änderung für KNX
    ziemlich oben folgendendes bei den fast gelichen Zeilen einfügen:

    PHP-Code:
    DEFINE("KNX","{D62B95D3-0C5E-406E-B1D9-8D102E50F64B}"); 
    Dann weiter unten in der Case Anweisung folgenden Case einfüngeN:

    PHP-Code:
                case KNX:
                                    
    EIB_Switch($instid$stat);
                                  break; 
    so sollte es gehen.
    evlt. den Befehl noch anpassen EIB_Switch
    • 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 •

  5. #5
    Registriert seit
    Dec 2014
    Beiträge
    93

    Question EnOcean

    Hallo Zusammen,
    kann man damit auch EnOcean (bei mir komplett über Eltako abgedeckt) schalten?
    LG Marcus.


    IPS Professional // Win10 // Wortmann // Synology NAS DS214play // Eltakos (Temperaturen, Beleuchtung, Rolladen, Dimmer) // FRITZ!Box 7490 // iPhone // iPad // ...

  6. #6
    Registriert seit
    Jan 2019
    Ort
    Doha, Katar und Allschwil, Schweiz
    Beiträge
    108

    Zitat Zitat von Stele99 Beitrag anzeigen
    oh geantwortet, aber der Post ist nicht mehr da.
    Egal, hier die Änderung für KNX
    ziemlich oben folgendendes bei den fast gelichen Zeilen einfügen:

    PHP-Code:
    DEFINE("KNX","{D62B95D3-0C5E-406E-B1D9-8D102E50F64B}"); 
    Dann weiter unten in der Case Anweisung folgenden Case einfüngeN:

    PHP-Code:
                case KNX:
                                    
    EIB_Switch($instid$stat);
                                  break; 
    so sollte es gehen.
    evlt. den Befehl noch anpassen EIB_Switch
    Hallo. Wieder schon eine Weile her..
    Was müsste man bei Digitalstrom eingeben?
    SymBox, Homematic CCU3 (Bodenheizung und Sicherheit), digitalSTROM (Jalousien und Licht), Philips HUE, Netatmo (Wetter und Aussenkamera), Sonos (PLAY:1 und :3)

  7. #7
    Registriert seit
    Feb 2017
    Beiträge
    1,186

    Seit 5.0 kannst du dafür wunderbar die Funktion RequestAction auf der Variable verwenden. Die ist dann auch unabhängig vom verwendeten System.

  8. #8
    Registriert seit
    Jan 2019
    Ort
    Doha, Katar und Allschwil, Schweiz
    Beiträge
    108

    Zitat Zitat von Dr. Niels Beitrag anzeigen
    Seit 5.0 kannst du dafür wunderbar die Funktion RequestAction auf der Variable verwenden. Die ist dann auch unabhängig vom verwendeten System.
    Perfekt. Und wie nütze ich das im vorliegenden Skript? Sorry, ich krieg das ohne Hilfe nicht hin..
    SymBox, Homematic CCU3 (Bodenheizung und Sicherheit), digitalSTROM (Jalousien und Licht), Philips HUE, Netatmo (Wetter und Aussenkamera), Sonos (PLAY:1 und :3)

  9. #9
    Registriert seit
    Feb 2017
    Beiträge
    1,186

    Wenn ich das soweit richtig verstehe kannst du den ganzen Block zum Schalten
    PHP-Code:
    if(in_array($var_prof,$c_profiles) && (($var_data != $stat) || $force) ){
               
    // Übergeordnete Instanz ermitteln.
               
    $instid IPS_GetParent($varid);
                
    $inst_info IPS_GetInstance($instid);
                switch(
    $inst_info["ModuleInfo"]["ModuleID"]){
                   case 
    ZWAVE:
                                    
    ZW_SwitchMode($instid$stat);
                                 break;

                    case 
    FS20:
                                    
    FS20_SwitchMode($instid$stat);
                                  break;
                          
                    case 
    LCN:
                                    
    LCN_SwitchMode($instid$stat);
                                  break;

                    case 
    XCOMFORT:
                                    
    MXC_SwitchMode($instid$stat);
                                  break;
                          
                    case 
    HOME_MATIC:
                                
    HM_WriteValueBoolean($instid"STATE"$stat);
                                  break;
                } 
    // Switch

                
    IPS_Sleep($c_delay);
            } 
    // if 
    auf
    PHP-Code:
    if(in_array($var_prof,$c_profiles) && (($var_data != $stat) || $force) ){
               
    // Variable schalten
               
    RequestAction($varid$stat);

                
    IPS_Sleep($c_delay);
            } 
    // if 
    runterkürzen

Ähnliche Themen

  1. Alle Ändergungen (neue Instanzen etc.) gehen bei Neustart verloren!?
    Von MrMusical im Forum Allgemeine Diskussion (2.x/3.x)
    Antworten: 6
    Letzter Beitrag: 10.12.12, 16:10
  2. Antworten: 14
    Letzter Beitrag: 22.11.12, 15:50
  3. Alle Variablen der 1-Wire-Instanzen auslesen
    Von hrahlers im Forum Skripte, PHP, SQL
    Antworten: 1
    Letzter Beitrag: 10.05.10, 21:45
  4. alle Geräte ausschalten, wie am intelligentesten gelöst?
    Von Pollibus im Forum Skripte, PHP, SQL
    Antworten: 12
    Letzter Beitrag: 25.09.09, 14:29
  5. Alle Ausschalten
    Von sn00py im Forum Allgemeine Diskussion (2.x/3.x)
    Antworten: 10
    Letzter Beitrag: 18.03.09, 18:02