Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Alle Lampen aus

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Alle Lampen aus

    This topic has been deleted. Only users with topic management privileges can see it.
    • A
      Andre_NMB last edited by

      Hallo alle zusammen,

      ich bin gerade dabei mir was zu basteln im Bereich der Lampensteuerung.

      Geplant ist das ich einen Button in meiner VIS habe der dort dann alle Lampen ausschaltet.

      Wieso möchte ich das haben? Angedacht habe ich das, weil ich ein Tablet am Wohnungseingang habe und dort kontrollieren möchte ob alle Fenster geschlossen sind oder nicht und falls noch irgendwo ein Lampe oder ein Radio an ist, dies dann gleich am Tablet ausschalten möchte.

      Wie kann ich da anfangen?

      Habe bis jetzt zwei Gruppen/Räume welche ich steuere. Demnächst mehr.

      Die Lampen an sich kann ich schalten oder das Tablet.

      Soll einfach ein Button sein welcher ROT leuchtet wenn irgendwo eine Lampe an ist und GRÜN wenn alle aus sind.

      Oder das ganze sogar mit einenn TEXT mir anzeigt.

      Ich bin in Skripten schreiben ganz neu. Habe da null Ahnung.

      besten Dank an euch schon mal und einen schönen ersten Advent gewünscht.

      1 Reply Last reply Reply Quote 0
      • Dutchman
        Dutchman Developer Most Active Administrators last edited by

        Ausschalten würde leicht gehen mit blockly, du machst dir ein object und wen das geschaltet wird führe Script aus und darin alle Lampen aus (also steuere)

        Wen du haben möchtest wen irgendeine Lampe an las sehen in vis geht das nur mit Javascript.

        Darin alle Lampen auslesen wenn irgendeines ein Status auf true

        Sent from my iPhone using Tapatalk

        1 Reply Last reply Reply Quote 0
        • A
          Adnim last edited by

          Hallo Andre,

          Sehe da jetzt mehrere Funktionen in deinem Post

          -einmal auswerten ob lampen an sind

          -einmal alle Steuern

          Steuern am einfachsten per Blockly.

          Auswerten würde ich mal versuchen mit dem DeviceCounter hier aus dem Forum der kann auch gleich alle anderen Zustände der Geräte Zählen und anzeigen (mit Liste):

          (Ursprünglich aus dem Forum, hier die für mich eingestellte Version):

          //Add device rules
          addDeviceCounter("lowbat",         $('channel[state.id=*LOWBAT]'),                     true);
          addDeviceCounter("lowbat",         $('channel[state.id=*lowbat]'),                      true);
          addDeviceCounter("sticky_unreach", $('channel[state.id=*.STICKY_UNREACH]'),              true);
          addDeviceCounter("unreach",        $('channel[state.id=*.UNREACH]'),                     true);
          addDeviceCounter("config_pending", $('channel[state.id=*.CONFIG_PENDING]'),              true);
          addDeviceCounter("Motion",  $('channel[state.id=*.MOTION]'),               true);
          addDeviceCounter("DutyCycle",  $('channel[state.id=*.DUTYCYCLE]'),               true);
          addDeviceCounter("Spannungsüberwachung",  $('channel[state.id=*.VOLTAGE]'),           function(state){return state<200;});
          addDeviceCounter("Auskühlschutz",  $('channel[state.id=*.ACTUAL_TEMPERATURE]'),           function(state){return state<13;});
          addDeviceCounter("ERROR",  $('channel[state.id=*.ERROR*]'),               function(state){return state>0;});
          addDeviceCounter("Heizbedarf",  $('channel[state.id=*.VALVE_STATE]'),           function(state){return state>45;});
          addDeviceCounter("Alive",         $('channel[state.id=*alive]'),                     false);
          addDeviceCounter("CONNECTED",         $('channel[state.id=*.connected]'),                     false);
          addDeviceCounter("open_shutters",  $('channel{TYPE=BLIND}[state.id=*.LEVEL]'),           function(state){return state>0;});
          addDeviceCounter("open_windows",   $('channel{TYPE=SHUTTER_CONTACT}[state.id=*.STATE]'), true);
          
          /******************************************
           * Code - do not change anything bellow this line *
           ******************************************/
          
          function addDeviceCounter(name, selector, val_to_count) {
          
              //Total amount of devices found by selector
              var state_total = 'deviceCounter.' + name + '.total';
              createState(state_total, 0);
              //List of devices that match condition
              var state_list = 'deviceCounter.' + name + '.list';
              createState(state_list, "");
              //Number of devices that match condition
              var state_counter = 'deviceCounter.' + name + '.counter';
          
              createState(state_counter, 0);
              function countDevs(obj) {
                  var d_count = 0;
                  var d_list  = [];
          
                  selector.each(function (id, i) {
                      var status = getState(id).val;
                      var obj    = getObject(id);
                      if ((typeof val_to_count === 'function' && val_to_count(status)) ||
                          (typeof val_to_count === 'boolean'  && val_to_count == status)) {
                          //Get parent object
                          var parentChannelId = id.slice(id.lastIndexOf("."));
                          var parentDevicelId = id.split(".").slice(0,-2).join(".");
                          var deviceObject = getObject(parentDevicelId);
                          //remember device name
                          d_list.push(deviceObject.common.name);
                      }                
                      ++d_count;                                                 // Zählt die Anzahl der vorhandenen Geräte unabhängig vom Status
                  }); 
          
          //if ("state_counter" > 0) {event(name + "(" + d_count + "): " + d_list);
          //}
          
                  setState(state_list,     d_list.join('
          '));
                  setState(state_counter,  d_list.length);
                  setState(state_total,    d_count);
              }
          
              //Re-evaluate when a device status changes
              selector.on(function(obj) {    // bei Zustandänderung *. LOWBAT in allen Gewerken
                  countDevs(obj);
              });
          
              //Re-evaluate each hour
              schedule("*/60 * * * *", countDevs);
          
              //Evaluate for the first time
              countDevs();
          }
          
          

          Frohen 1 Advent!

          1 Reply Last reply Reply Quote 0
          • A
            Andre_NMB last edited by

            So richtig weiter gekommen bin ich mit dem hier nicht. Habe es nicht geschafft es zu realisieren. 😞

            @Adnim:

            Hallo Andre,

            Sehe da jetzt mehrere Funktionen in deinem Post

            -einmal auswerten ob lampen an sind

            -einmal alle Steuern

            Steuern am einfachsten per Blockly.

            Auswerten würde ich mal versuchen mit dem DeviceCounter hier aus dem Forum der kann auch gleich alle anderen Zustände der Geräte Zählen und anzeigen (mit Liste):

            (Ursprünglich aus dem Forum, hier die für mich eingestellte Version):

            //Add device rules
            addDeviceCounter("lowbat",         $('channel[state.id=*LOWBAT]'),                     true);
            addDeviceCounter("lowbat",         $('channel[state.id=*lowbat]'),                      true);
            addDeviceCounter("sticky_unreach", $('channel[state.id=*.STICKY_UNREACH]'),              true);
            addDeviceCounter("unreach",        $('channel[state.id=*.UNREACH]'),                     true);
            addDeviceCounter("config_pending", $('channel[state.id=*.CONFIG_PENDING]'),              true);
            addDeviceCounter("Motion",  $('channel[state.id=*.MOTION]'),               true);
            addDeviceCounter("DutyCycle",  $('channel[state.id=*.DUTYCYCLE]'),               true);
            addDeviceCounter("Spannungsüberwachung",  $('channel[state.id=*.VOLTAGE]'),           function(state){return state<200;});
            addDeviceCounter("Auskühlschutz",  $('channel[state.id=*.ACTUAL_TEMPERATURE]'),           function(state){return state<13;});
            addDeviceCounter("ERROR",  $('channel[state.id=*.ERROR*]'),               function(state){return state>0;});
            addDeviceCounter("Heizbedarf",  $('channel[state.id=*.VALVE_STATE]'),           function(state){return state>45;});
            addDeviceCounter("Alive",         $('channel[state.id=*alive]'),                     false);
            addDeviceCounter("CONNECTED",         $('channel[state.id=*.connected]'),                     false);
            addDeviceCounter("open_shutters",  $('channel{TYPE=BLIND}[state.id=*.LEVEL]'),           function(state){return state>0;});
            addDeviceCounter("open_windows",   $('channel{TYPE=SHUTTER_CONTACT}[state.id=*.STATE]'), true);
            
            /******************************************
             * Code - do not change anything bellow this line *
             ******************************************/
            
            function addDeviceCounter(name, selector, val_to_count) {
            
                //Total amount of devices found by selector
                var state_total = 'deviceCounter.' + name + '.total';
                createState(state_total, 0);
                //List of devices that match condition
                var state_list = 'deviceCounter.' + name + '.list';
                createState(state_list, "");
                //Number of devices that match condition
                var state_counter = 'deviceCounter.' + name + '.counter';
            
                createState(state_counter, 0);
                function countDevs(obj) {
                    var d_count = 0;
                    var d_list  = [];
            
                    selector.each(function (id, i) {
                        var status = getState(id).val;
                        var obj    = getObject(id);
                        if ((typeof val_to_count === 'function' && val_to_count(status)) ||
                            (typeof val_to_count === 'boolean'  && val_to_count == status)) {
                            //Get parent object
                            var parentChannelId = id.slice(id.lastIndexOf("."));
                            var parentDevicelId = id.split(".").slice(0,-2).join(".");
                            var deviceObject = getObject(parentDevicelId);
                            //remember device name
                            d_list.push(deviceObject.common.name);
                        }                
                        ++d_count;                                                 // Zählt die Anzahl der vorhandenen Geräte unabhängig vom Status
                    }); 
            
            //if ("state_counter" > 0) {event(name + "(" + d_count + "): " + d_list);
            //}
            
                    setState(state_list,     d_list.join('
            '));
                    setState(state_counter,  d_list.length);
                    setState(state_total,    d_count);
                }
            
                //Re-evaluate when a device status changes
                selector.on(function(obj) {    // bei Zustandänderung *. LOWBAT in allen Gewerken
                    countDevs(obj);
                });
            
                //Re-evaluate each hour
                schedule("*/60 * * * *", countDevs);
                
                //Evaluate for the first time
                countDevs();
            }
            
            

            Frohen 1 Advent! `

            1 Reply Last reply Reply Quote 0
            • First post
              Last post

            Support us

            ioBroker
            Community Adapters
            Donate

            509
            Online

            31.7k
            Users

            79.7k
            Topics

            1.3m
            Posts

            3
            4
            1120
            Loading More Posts
            • Oldest to Newest
            • Newest to Oldest
            • Most Votes
            Reply
            • Reply as topic
            Log in to reply
            Community
            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
            The ioBroker Community 2014-2023
            logo