Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. [gelöst] Lichter zählen Script läuft nicht

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    [gelöst] Lichter zählen Script läuft nicht

    This topic has been deleted. Only users with topic management privileges can see it.
    • FredF
      FredF Most Active Forum Testing last edited by FredF

      @mech @PrinzEisenherz1
      Das Skript schaut in den Objekten nach der Funktion Licht. Wenn eure Objekte also nicht mit dieser Funktion versehen sind, zählt das Skript auch nichts.
      So gehts: Aufzählungen - Funktionen - Neue Aufzählung (+) - Licht
      Danach in Objekte die gewünschte Objekt ID auswählen und in der Spalte Funktion mit dem Bleistift die Licht Funktion hinzufügen.
      2019-05-30-15-55-53.png

      1 Reply Last reply Reply Quote 0
      • M
        mech last edited by mech

        Hallo FredF,

        unter Aufzählungen habe ich "Licht" bereits zugefügt und auch bei den Objekten.

        objects - ioBroker 2019-05-30 19-39-26.png
        enums - ioBroker 2019-05-30 19-31-32.png

        javascript - ioBroker 2019-05-30 19-33-12.png

        /* Status Zahl Lichter
        
            zählt die Lichter in allen Räumen und meldet die Eingeschalteten namentlich
            Daten kommen vom Gewerk "licht"
        
            erstellt: 17.06.2015 nach diesem Vorbild: viewtopic.php?f=21&t=869&sid=f9ba5657489ff431a1990884f90779c1#p6564
            23.06.2015 globale Variablendefinition zählen_Lichter.textLichterAn fehlte und wurde hinzugefügt
            Log Ausgabe auskommentiert
            05.08.2015 STATE aus der Ausgabe entfernt nach Idee von stephan61 http://forum.iobroker.org/viewtopic.php ... t=20#p9267
            24.03.2016 keine Anzeigen von virtuellen Kanälen mehr (in Abhängigkeit der Abfrage des Namens)
            06.05.2016 Datenpunkt für Ansagen zugefügt
            02.07.2016 abgeschaltet, da Fehler
            03.07.2016 Zähl-Funktion getrennt nach Schalter und Dimmer
            search statt indexOf und RegEx für Suche nach Virtuellen Kanälen
            27.11.2016 Verschoben in Status
            Code optimiert
            23.12.2016 Räume eingebaut
            */
            var logging = true;
        
            var idAnzahlEin = 'javascript.0.Status.Lichter.Anzahl_ein',
            idAnzahl = 'javascript.0.Status.Lichter.Anzahl',
            idText = 'javascript.0.Status.Lichter.Text',
            idRaum = 'javascript.0.Status.Lichter.Raum', // <---- NEU
            idAnsage = 'javascript.0.Status.Lichter.Ansage';
        
            // Ab hier nix mehr ändern
            createState(idAnzahl, { // wenn benötigt: Anzahl der vorhandenen Lichter
            type: 'number',
            name: 'Anzahl aller Lichter',
            min: 0,
            def: 0,
            role: 'value'
            });
            createState(idAnzahlEin, { // Anzahl der Lichter, die auf sind als Variable unter Javascript.0 anlegen
            type: 'number',
            name: 'Anzahl der eingeschalteten Lichter',
            min: 0,
            def: 0,
            role: 'value'
            });
            createState(idText, { // Anzahl der brennenden Lichter und deren Namen als Variable unter Javascript.0 anlegen
            type: 'string',
            name: 'Eingeschaltete Lichter',
            desc: 'Namen der eingeschalteten Lichter',
            def: ' ',
            role: 'value'
            });
            createState(idAnsage, {
            type: 'string',
            name: 'Eingeschaltete Lichter (Ansage)',
            desc: 'Namen der eingeschalteten Lichter (für Ansage aufbereitet)',
            def: ' ',
            role: 'value'
            });
            createState(idRaum, { // Räume, in denen Lichter brennen // <---- NEU
            type: 'string',
            name: 'Räume mit eingeschalteten Lichter',
            desc: 'Namen der Räume, in denen Lichter eingeschaltet sind',
            def: ' ',
            role: 'value'
            });
        
            var cacheSelectorState = $('channelstate.id=.STATE'); // Gewerk licht
            var cacheSelectorLevel = $('channelstate.id=.level');
            var cacheSelectorPOWER = $('channelstate.id=*.POWER'); // Sonoff Lampen (müssen im Gewerk Licht sein)
        
            function checkDevices(obj) {
            // Setzt die Zähler vor dem Durchlauf aller Elemente *.STATE im Gewerk licht auf 0
            var anzahlLichterAn = 0;
            var anzahlLichter = 0;
            var textLichterAn = [];
            var textRaum = [];
        
            if (logging) {
            log('++++++ Lichter Anzahl ++++ ');
            log('#### SCHALTER ##### ');
            }
            cacheSelectorState.each(function (id, i) { // Schleife für jedes gefundenen Element *.STATE im Gewerk Licht
            var obj = getObject(id);
            var name = getObject(id).common.name;
            var status = getState(id).val; // Zustand *.STATE abfragen (jedes Element)
            var devicename = name.substring(0, name.indexOf(".STATE")); //.state aus Text entfernen
            var raumname = getObject(id, "rooms"); // <---- NEU
        
            // ########## Abfrage ob Virtueller Kanal? VK oder : im Namen)
            // if ( (devicename.search(/(CUX)|(K2)|(K3)|(VK)|(:)/ig) == -1) ) {
            /*
            if (logging) {
            log('-------');
            log('Kanal: ' + name);
            log('Status: ' + status);
            }
            */
        
            if (status) { // wenn Zustand = true, dann wird die ANzahl der Lichter hochgezählt
            ++anzahlLichterAn;
            textLichterAn.push(devicename); // Zu Array hinzufügen
            textRaum.push(raumname.enumNames); // <---- NEU
            }
            ++anzahlLichter; // Zählt die Anzahl der vorhandenen Lichter unabhängig vom Status
            // } // ENDE VK-Abfrage
        
            });
        
            if (logging) log('#### DIMMER ##### ');
            cacheSelectorLevel.each(function (id, i) { // Schleife für jedes gefundenen Element *.LEVEL im Gewerk Licht
            var obj = getObject(id);
            var name = getObject(id).common.name;
            var status = getState(id).val; // Zustand *.LEVEL abfragen (jedes Element)
            var devicename = name.substring(0, name.indexOf(".LEVEL")); //.state aus Text entfernen
            var raumname = getObject(id, "rooms"); // <---- NEU
        
            // ########## Abfrage ob Virtueller Kanal? VK oder : im Namen)
            // if ( (devicename.search(/(CUX)|(K2)|(K3)|(V10)|(VK)|(:)/ig) == -1) ) { // Geräte mit diesen Strings im namen nicht beachten
            /*
            if (logging) {
            log('-------');
            log('Kanal: ' + name);
            log('Status: ' + status + '%');
            }
            */
        
            if (parseFloat(status) > 0) { // Wenn Dimmwert über 0
            ++anzahlLichterAn;
            textLichterAn.push(devicename); // Zu Array hinzufügen
            textRaum.push(raumname.enumNames); // <---- NEU
            }
            ++anzahlLichter; // Zählt die Anzahl der vorhandenen Lichter unabhängig vom Status
            // } // Ende Abfrage VK
        
            });
        
            if (logging) {
            log('++++++ Lichter Anzahl ++++ ');
            log('#### SCHALTER ##### ');
            }
            cacheSelectorPOWER.each(function (id, i) { // Schleife für jedes gefundenen Element *.POWER im Gewerk Licht
            var obj = getObject(id);
            var name = getObject(id).common.name;
            var status = getState(id).val; // Zustand *.STATE abfragen (jedes Element)
            var devicename = name.substring(0, name.indexOf("POWER")); //.state aus Text entfernen
            var raumname = getObject(id, "rooms"); // <---- NEU
        
            // ########## Abfrage ob Virtueller Kanal? VK oder : im Namen)
            // if ( (devicename.search(/(CUX)|(K2)|(K3)|(VK)|(:)/ig) == -1) ) {
            /*
            if (logging) {
            log('-------');
            log('Kanal: ' + name);
            log('Status: ' + status);
            }
            */
        
            if (status) { // wenn Zustand = true, dann wird die ANzahl der Lichter hochgezählt
            ++anzahlLichterAn;
            textLichterAn.push(devicename); // Zu Array hinzufügen
            textRaum.push(raumname.enumNames); // <---- NEU
            }
            ++anzahlLichter; // Zählt die Anzahl der vorhandenen Lichter unabhängig vom Status
            // } // ENDE VK-Abfrage
        
            });
        
            // Array mit Lichternamen sortieren
            textLichterAn.sort();
            textRaum.sort(); // <---- NEU
            // Schleife ist durchlaufen. Im Log wird der aktuelle Status (Anzahl, davon an) ausgegeben
            if (logging) log("Text: " + textLichterAn);
            if (logging) log("Anzahl Lichter: " + anzahlLichter + " # davon Lichter an: " + anzahlLichterAn);
            // die ermittelten Werte werden als javascript.0. Variable in ioBroker gespeichert (z.B. für die Verarbeitung in VIS)
            setState(idText, textLichterAn.join(',')); // Schreibt die aktuelle Namen der eingeschalteten Lichter
            setState(idAnzahlEin, textLichterAn.length); // Schreibt die aktuelle Anzahl der eingeschalteten Lichter
            setState(idAnzahl, anzahlLichter); // Schreibt die aktuelle Anzahl der vorhandene Elemente im Gewerk Licht
            // setState(idRaum, textRaum.join(',')); // Räume, in denen Licht brennt // <---- NEU
            setState(idRaum, textRaum.join(', ')); // Räume, in denen Licht brennt // <---- NEU
            }
        
            // Trigger
            cacheSelectorState.on(function(obj) { // bei Zustandänderung *.STATE im Gewerk licht
            if (logging) log('Auslösender Schalter: ' + obj.id + ': ' + obj.state.val); // Info im Log, welcher Zustand sich geändert hat
            checkDevices();
            });
            cacheSelectorLevel.on(function(obj) { // bei Zustandänderung *.LEVEL im Gewerk licht
            if (logging) log('Auslösender Dimmer: ' + obj.id + ': ' + obj.state.val); // Info im Log, welcher Zustand sich geändert hat
            checkDevices();
            });
            cacheSelectorPOWER.on(function(obj) { // bei Zustandänderung *.STATE im Gewerk licht
            if (logging) log('Auslösender Schalter: ' + obj.id + ': ' + obj.state.val); // Info im Log, welcher Zustand sich geändert hat
            checkDevices();
            });
            function main() {
            setTimeout(function(){
            if (logging) log('Auslöser Skriptstart');
            checkDevices();
            }, 2000);
            }
        
            main(); // Skriptstart-Auslöser
        
            // Aufbereitung für Ansage
            function strip_tags(data) {
            var rueckgabe = data.replace(/( |<([^>]+)>)/ig, " ");
            return(rueckgabe);
            }
        
            on(idText, function (obj) {
            var text = obj.state.val;
            text = (getState(idAnzahl).val > 0 ) ? 'Lichter eingeschaltet: ' + strip_tags(text) : 'Alle Lichter sind ausgeschaltet';
            setState(idAnsage, text);
            });
        
        

        Hab mal ein paar mehr Informationen mit Screens angehangen, vielleicht kannst du ja so einen Fehler erkennen, über Hilfe bin ich echt dankbar 🙂

        htrecksler 1 Reply Last reply Reply Quote 0
        • htrecksler
          htrecksler Forum Testing @mech last edited by

          @mech hast du den Javascript Adapter danach neu gestartet? Ich meine mich zu erinnern das das nötig ist.

          M 1 Reply Last reply Reply Quote 0
          • M
            mech @htrecksler last edited by

            @htrecksler

            Ja das habe ich bereits erledigt.

            Ich denke das diese abfragen bestimmt nicht auf einen Shelly ausgelegt sind:

            var cacheSelectorState = $('channelstate.id=.STATE'); // Gewerk licht
                var cacheSelectorLevel = $('channelstate.id=.level');
                var cacheSelectorPOWER = $('channelstate.id=*.POWER'); // Sonoff Lampen (müssen im Gewerk Licht sein)
            
            htrecksler 1 Reply Last reply Reply Quote 0
            • htrecksler
              htrecksler Forum Testing @mech last edited by

              @mech haben die Shelly denn einen Datenpunkt STATE, level, oder POWER?
              Ich hatte mal einen und ich meine mich zu erinnern das der einen Datenpunkt "Switch" (true/false) hat

              1 Reply Last reply Reply Quote 0
              • M
                mech last edited by

                Hey , für mich sieht es nach "switch" aus.

                objects - ioBroker 2019-05-30 19-49-07.png

                htrecksler paul53 2 Replies Last reply Reply Quote 0
                • htrecksler
                  htrecksler Forum Testing @mech last edited by

                  @mech genau, aber den (Groß- /Kleinschreibung beachten) berücksichtigt das Script ja nicht. Das Script schaut ja nur auf STATE, level und POWER

                  1 Reply Last reply Reply Quote 0
                  • M
                    mech last edited by

                    Hey,

                    so wäre es dann ja richtig oder?

                     var cacheSelectorState = $('channelstate.id=.Switch'); // Gewerk Licht
                    
                    1 Reply Last reply Reply Quote 0
                    • paul53
                      paul53 @mech last edited by paul53

                      @mech Versuche es mal so

                      const cacheSelectorState = $('state[id=*.Switch](functions=light)');
                      
                      1 Reply Last reply Reply Quote 0
                      • M
                        mech last edited by

                        Prima vielen Dank. Das hat wohl zu Erfolg geführt.

                        20:00:45.499	info	javascript.0 Stop script script.js.Lichter_EIN
                        20:00:46.651	info	javascript.0 Start javascript script.js.Lichter_EIN
                        20:00:46.652	info	javascript.0 script.js.Lichter_EIN: registered 3 subscriptions and 0 schedules
                        20:00:48.652	info	javascript.0 script.js.Lichter_EIN: Auslöser Skriptstart
                        20:00:48.652	info	javascript.0 script.js.Lichter_EIN: ++++++ Lichter Anzahl ++++
                        20:00:48.652	info	javascript.0 script.js.Lichter_EIN: #### SCHALTER #####
                        20:00:48.652	info	javascript.0 script.js.Lichter_EIN: #### DIMMER #####
                        20:00:48.652	info	javascript.0 script.js.Lichter_EIN: ++++++ Lichter Anzahl ++++
                        20:00:48.652	info	javascript.0 script.js.Lichter_EIN: #### SCHALTER #####
                        20:00:48.652	info	javascript.0 script.js.Lichter_EIN: Text: ,
                        20:00:48.652	info	javascript.0 script.js.Lichter_EIN: Anzahl Lichter: 2 # davon Lichter an: 2
                        20:00:54.155	info	javascript.0 script.js.Lichter_EIN: Auslösender Schalter: shelly.0.SHSW-PM#B1D869#1.Relay0.Switch: false
                        20:00:54.155	info	javascript.0 script.js.Lichter_EIN: ++++++ Lichter Anzahl ++++
                        20:00:54.155	info	javascript.0 script.js.Lichter_EIN: #### SCHALTER #####
                        20:00:54.155	info	javascript.0 script.js.Lichter_EIN: #### DIMMER #####
                        20:00:54.155	info	javascript.0 script.js.Lichter_EIN: ++++++ Lichter Anzahl ++++
                        20:00:54.155	info	javascript.0 script.js.Lichter_EIN: #### SCHALTER #####
                        20:00:54.155	info	javascript.0 script.js.Lichter_EIN: Text:
                        20:00:54.156	info	javascript.0 script.js.Lichter_EIN: Anzahl Lichter: 2 # davon Lichter an: 1
                        

                        Wie könnte ich den nun noch die Homematic "aktoren" abfragen? Dort habe ich leider bedingt durch eine Wechselschaltung noch 2 von laufen?

                        Hast du da ggf. auch eine Lösung für mich?

                        paul53 1 Reply Last reply Reply Quote 0
                        • crunchip
                          crunchip Forum Testing Most Active last edited by

                          habe es so, für Mi-Light, Shelly, Sonoff...

                          /* Status Zahl Lichter
                          
                          zählt die Lichter in allen Räumen und meldet die Eingeschalteten namentlich
                          Daten kommen vom Gewerk "licht"
                          
                          erstellt: 17.06.2015 nach diesem Vorbild: viewtopic.php?f=21&t=869&sid=f9ba5657489ff431a1990884f90779c1#p6564
                          23.06.2015 globale Variablendefinition zählen_Lichter.textLichterAn fehlte und wurde hinzugefügt
                          Log Ausgabe auskommentiert
                          05.08.2015 STATE aus der Ausgabe entfernt nach Idee von stephan61 http://forum.iobroker.org/viewtopic.php ... t=20#p9267
                          24.03.2016 keine Anzeigen von virtuellen Kanälen mehr (in Abhängigkeit der Abfrage des Namens)
                          06.05.2016 Datenpunkt für Ansagen zugefügt
                          02.07.2016 abgeschaltet, da Fehler
                          03.07.2016 Zähl-Funktion getrennt nach Schalter und Dimmer
                          search statt indexOf und RegEx für Suche nach Virtuellen Kanälen
                          27.11.2016 Verschoben in Status
                          Code optimiert
                          23.12.2016 Räume eingebaut
                          */
                          var logging = true;
                          
                          var idAnzahlEin = 'javascript.0.Status.Lichter.Anzahl_ein',
                          idAnzahl = 'javascript.0.Status.Lichter.Anzahl',
                          idText = 'javascript.0.Status.Lichter.Text',
                          idRaum = 'javascript.0.Status.Lichter.Raum', // <---- NEU
                          idAnsage = 'javascript.0.Status.Lichter.Ansage';
                          
                          // Ab hier nix mehr ändern
                          createState(idAnzahl, { // wenn benötigt: Anzahl der vorhandenen Lichter
                          type: 'number',
                          name: 'Anzahl aller Lichter',
                          min: 0,
                          def: 0,
                          role: 'value'
                          });
                          createState(idAnzahlEin, { // Anzahl der Lichter, die auf sind als Variable unter Javascript.0 anlegen
                          type: 'number',
                          name: 'Anzahl der eingeschalteten Lichter',
                          min: 0,
                          def: 0,
                          role: 'value'
                          });
                          createState(idText, { // Anzahl der brennenden Lichter und deren Namen als Variable unter Javascript.0 anlegen
                          type: 'string',
                          name: 'Eingeschaltete Lichter',
                          desc: 'Namen der eingeschalteten Lichter',
                          def: ' ',
                          role: 'value'
                          });
                          createState(idAnsage, {
                          type: 'string',
                          name: 'Eingeschaltete Lichter (Ansage)',
                          desc: 'Namen der eingeschalteten Lichter (für Ansage aufbereitet)',
                          def: ' ',
                          role: 'value'
                          });
                          createState(idRaum, { // Räume, in denen Lichter brennen // <---- NEU
                          type: 'string',
                          name: 'Räume mit eingeschalteten Lichter',
                          desc: 'Namen der Räume, in denen Lichter eingeschaltet sind',
                          def: ' ',
                          role: 'value'
                          });
                          
                          var cacheSelectorState = $('channel[state.id=*.STATE](functions="licht")'); // Gewerk licht
                          var cacheSelectorLevel = $('channel[state.id=*.level](functions="licht")');
                          var cacheSelectorPOWER = $('state[id=*.POWER](functions="licht")'); // Sonoff
                          var cacheSelectorSwitch = $('state[id=*.Switch](functions="licht")'); // Shelly
                          var cacheSelectorMi = $('state[id=*.state](functions=licht)'); //Mi-Light
                          
                          function checkDevices(obj) {
                          // Setzt die Zähler vor dem Durchlauf aller Elemente *.STATE im Gewerk licht auf 0
                          var anzahlLichterAn = 0;
                          var anzahlLichter = 0;
                          var textLichterAn = [];
                          var textRaum = [];
                          
                          if (logging) {
                          log('++++++ Lichter Anzahl ++++ ');
                          log('#### SCHALTER ##### ');
                          }
                          cacheSelectorState.each(function (id, i) { // Schleife für jedes gefundenen Element *.STATE im Gewerk Licht
                          var obj = getObject(id);
                          var name = getObject(id).common.name;
                          var status = getState(id).val; // Zustand *.STATE abfragen (jedes Element)
                          var devicename = name.substring(0, name.indexOf(".STATE")); //.state aus Text entfernen
                          var raumname = getObject(id, "rooms"); // <---- NEU
                          
                          
                          // ########## Abfrage ob Virtueller Kanal? VK oder : im Namen)
                          // if ( (devicename.search(/(CUX)|(K2)|(K3)|(VK)|(:)/ig) == -1) ) { 
                          /*
                          if (logging) {
                          log('-------');
                          log('Kanal: ' + name);
                          log('Status: ' + status); 
                          }
                          */
                          
                          if (status) { // wenn Zustand = true, dann wird die ANzahl der Lichter hochgezählt
                          ++anzahlLichterAn; 
                          textLichterAn.push(devicename); // Zu Array hinzufügen
                          textRaum.push(raumname.enumNames); // <---- NEU
                          }
                          ++anzahlLichter; // Zählt die Anzahl der vorhandenen Lichter unabhängig vom Status
                          // } // ENDE VK-Abfrage
                          
                          });
                          
                          
                          if (logging) log('#### DIMMER ##### ');
                          cacheSelectorLevel.each(function (id, i) { // Schleife für jedes gefundenen Element *.LEVEL im Gewerk Licht
                          var obj = getObject(id);
                          var name = getObject(id).common.name;
                          var status = getState(id).val; // Zustand *.LEVEL abfragen (jedes Element)
                          var devicename = name.substring(0, name.indexOf(".LEVEL")); //.state aus Text entfernen
                          var raumname = getObject(id, "rooms"); // <---- NEU
                          
                          // ########## Abfrage ob Virtueller Kanal? VK oder : im Namen)
                          // if ( (devicename.search(/(CUX)|(K2)|(K3)|(V10)|(VK)|(:)/ig) == -1) ) { // Geräte mit diesen Strings im namen nicht beachten
                          /*
                          if (logging) {
                          log('-------');
                          log('Kanal: ' + name);
                          log('Status: ' + status + '%'); 
                          }
                          */
                          
                          if (parseFloat(status) > 0) { // Wenn Dimmwert über 0
                          ++anzahlLichterAn; 
                          textLichterAn.push(devicename); // Zu Array hinzufügen
                          textRaum.push(raumname.enumNames); // <---- NEU
                          }
                          ++anzahlLichter; // Zählt die Anzahl der vorhandenen Lichter unabhängig vom Status
                          // } // Ende Abfrage VK 
                          
                          }); 
                          
                          if (logging) {
                          log('++++++ Lichter Anzahl ++++ ');
                          log('#### SCHALTER ##### ');
                          }
                          cacheSelectorPOWER.each(function (id, i) { // Schleife für jedes gefundenen Element *.POWER im Gewerk Licht
                          var obj = getObject(id);
                          var name = getObject(id).common.name;
                          var status = getState(id).val; // Zustand *.STATE abfragen (jedes Element)
                          var devicename = name.substring(0, name.indexOf("POWER")); //.state aus Text entfernen
                          var raumname = getObject(id, "rooms"); // <---- NEU
                          
                          
                          // ########## Abfrage ob Virtueller Kanal? VK oder : im Namen)
                          // if ( (devicename.search(/(CUX)|(K2)|(K3)|(VK)|(:)/ig) == -1) ) { 
                          /*
                          if (logging) {
                          log('-------');
                          log('Kanal: ' + name);
                          log('Status: ' + status); 
                          }
                          */
                          
                          if (status) { // wenn Zustand = true, dann wird die ANzahl der Lichter hochgezählt
                          ++anzahlLichterAn; 
                          textLichterAn.push(devicename); // Zu Array hinzufügen
                          textRaum.push(raumname.enumNames); // <---- NEU
                          }
                          ++anzahlLichter; // Zählt die Anzahl der vorhandenen Lichter unabhängig vom Status
                          // } // ENDE VK-Abfrage
                          
                          });
                          
                          if (logging) {
                          log('++++++ Lichter Anzahl ++++ ');
                          log('#### SCHALTER ##### ');
                          }
                          cacheSelectorSwitch.each(function (id, i) { // Schleife für jedes gefundenen Element *.POWER im Gewerk Licht
                          var obj = getObject(id);
                          var name = getObject(id).common.name;
                          var status = getState(id).val; // Zustand *.STATE abfragen (jedes Element)
                          var devicename = name;
                          var raumname = getObject(id, "rooms"); // <---- NEU
                          
                          // ########## Abfrage ob Virtueller Kanal? VK oder : im Namen)
                          // if ( (devicename.search(/(CUX)|(K2)|(K3)|(VK)|(:)/ig) == -1) ) { 
                          /*
                          if (logging) {
                          log('-------');
                          log('Kanal: ' + name);
                          log('Status: ' + status); 
                          }
                          */
                          
                          if (status) { // wenn Zustand = true, dann wird die ANzahl der Lichter hochgezählt
                          ++anzahlLichterAn; 
                          textLichterAn.push(devicename); // Zu Array hinzufügen
                          textRaum.push(raumname.enumNames); // <---- NEU
                          }
                          ++anzahlLichter; // Zählt die Anzahl der vorhandenen Lichter unabhängig vom Status
                          // } // ENDE VK-Abfrage
                          });
                          
                          
                          
                          if (logging) {
                          log('++++++ Lichter Anzahl ++++ ');
                          log('#### SCHALTER ##### ');
                          }
                          cacheSelectorMi.each(function (id, i) { // Schleife für jedes gefundenen Element *.POWER im Gewerk Licht
                          var obj = getObject(id);
                          var name = getObject(id).common.name;
                          var status = getState(id).val; // Zustand *.STATE abfragen (jedes Element)
                          var devicename = name.substring(0, name.indexOf(" Switch ON/OFF")); //.state aus Text entfernen
                          var raumname = getObject(id, "rooms"); // <---- NEU
                          
                          // ########## Abfrage ob Virtueller Kanal? VK oder : im Namen)
                          // if ( (devicename.search(/(CUX)|(K2)|(K3)|(VK)|(:)/ig) == -1) ) { 
                          /*
                          if (logging) {
                          log('-------');
                          log('Kanal: ' + name);
                          log('Status: ' + status); 
                          }
                          */
                          
                          if (status) { // wenn Zustand = true, dann wird die ANzahl der Lichter hochgezählt
                          ++anzahlLichterAn; 
                          textLichterAn.push(devicename); // Zu Array hinzufügen
                          textRaum.push(raumname.enumNames); // <---- NEU
                          }
                          ++anzahlLichter; // Zählt die Anzahl der vorhandenen Lichter unabhängig vom Status
                          // } // ENDE VK-Abfrage
                          });
                          
                          // Array mit Lichternamen sortieren
                          textLichterAn.sort();
                          textRaum.sort(); // <---- NEU
                          // Schleife ist durchlaufen. Im Log wird der aktuelle Status (Anzahl, davon an) ausgegeben
                          if (logging) log("Text: " + textLichterAn);
                          if (logging) log("Anzahl Lichter: " + anzahlLichter + " # davon Lichter an: " + anzahlLichterAn);
                          // die ermittelten Werte werden als javascript.0. Variable in ioBroker gespeichert (z.B. für die Verarbeitung in VIS)
                          setState(idText, textLichterAn.join(', ')); // Schreibt die aktuelle Namen der eingeschalteten Lichter
                          setState(idAnzahlEin, textLichterAn.length); // Schreibt die aktuelle Anzahl der eingeschalteten Lichter
                          setState(idAnzahl, anzahlLichter); // Schreibt die aktuelle Anzahl der vorhandene Elemente im Gewerk Licht
                          // setState(idRaum, textRaum.join(',<br>')); // Räume, in denen Licht brennt // <---- NEU
                          setState(idRaum, textRaum.join(', ')); // Räume, in denen Licht brennt // <---- NEU
                          }
                          
                          // Trigger
                          cacheSelectorState.on(function(obj) { // bei Zustandänderung *.STATE im Gewerk licht
                          if (logging) log('Auslösender Schalter: ' + obj.id + ': ' + obj.state.val); // Info im Log, welcher Zustand sich geändert hat
                          checkDevices();
                          });
                          cacheSelectorLevel.on(function(obj) { // bei Zustandänderung *.LEVEL im Gewerk licht
                          if (logging) log('Auslösender Dimmer: ' + obj.id + ': ' + obj.state.val); // Info im Log, welcher Zustand sich geändert hat
                          checkDevices();
                          });
                          cacheSelectorPOWER.on(function(obj) { // bei Zustandänderung *.STATE im Gewerk licht
                          if (logging) log('Auslösender Schalter: ' + obj.id + ': ' + obj.state.val); // Info im Log, welcher Zustand sich geändert hat
                          checkDevices();
                          });
                          cacheSelectorSwitch.on(function(obj) { // bei Zustandänderung *.STATE im Gewerk licht
                          if (logging) log('Auslösender Schalter: ' + obj.id + ': ' + obj.state.val); // Info im Log, welcher Zustand sich geändert hat
                          checkDevices();
                          });
                          cacheSelectorMi.on(function(obj) { // bei Zustandänderung *.STATE im Gewerk licht
                          if (logging) log('Auslösender Schalter: ' + obj.id + ': ' + obj.state.val); // Info im Log, welcher Zustand sich geändert hat
                          checkDevices();
                          });
                          function main() {
                          setTimeout(function(){
                          if (logging) log('Auslöser Skriptstart');
                          checkDevices();
                          }, 2000);
                          }
                          
                          main(); // Skriptstart-Auslöser
                          
                          // Aufbereitung für Ansage
                          function strip_tags(data) {
                          var rueckgabe = data.replace(/(&nbsp;|<([^>]+)>)/ig, " ");
                          return(rueckgabe);
                          }
                          
                          on(idText, function (obj) {
                          var text = obj.state.val;
                          text = (getState(idAnzahl).val > 0 ) ? 'Lichter eingeschaltet: ' + strip_tags(text) : 'Alle Lichter ausgeschaltet';
                          setState(idAnsage, text);
                          });
                          
                          1 Reply Last reply Reply Quote 1
                          • paul53
                            paul53 @mech last edited by paul53

                            @mech sagte:

                            Wie könnte ich den nun noch die Homematic "aktoren" abfragen?

                            Wenn die Kanäle dem Gewerk "Licht" zugeordnet sind:

                            const cacheSelectorSTATE = $('channel[state.id=*.STATE](functions=light)');
                            
                            M 1 Reply Last reply Reply Quote 0
                            • M
                              mech last edited by

                              Wow, danke für eure Hilfe 🙂 Das hat mir echt geholfen.

                              Jetzt habe ich in diesem Beitrag ein Widget dafür gefunden: https://forum.iobroker.net/topic/3884/licht-skript-liefert-falsche-gerätenamen/2

                              Besteht hier die Möglichkeit das ich mir die angeschalteten Lichter anzeigen lassen kann? Und diese dann direkt auch ausschalten kann, bisher sieht mein Widget so aus:

                              vis 2019-05-30 20-21-45.png

                              1 Reply Last reply Reply Quote 0
                              • M
                                mech @paul53 last edited by

                                @paul53

                                Hm, die Homematic findet er nicht. Die Objekte sehen so aus:

                                objects - ioBroker 2019-05-30 20-54-46.png

                                Jemand eine Idee dazu?

                                paul53 1 Reply Last reply Reply Quote 0
                                • paul53
                                  paul53 @mech last edited by

                                  @mech sagte:

                                  Die Objekte sehen so aus:

                                  const cacheSelectorOn = $('state[id=*.on](functions=light)');
                                  
                                  1 Reply Last reply Reply Quote 0
                                  • M
                                    mech last edited by

                                    @paul53 said in [gelöst] Lichter zählen Script läuft nicht:

                                    const cacheSelectorOn = $('stateid=*.on');

                                    Danke das du noch antwortest 🙂

                                    Ich habe das so zugefügt, bekomme dann aber an anderer Stelle einen JS Fehler:

                                    21:42:11.798	error	javascript.0 script.js.Verbraucher: script.js.Verbraucher:538
                                    21:42:11.799	error	javascript.0 at script.js.Verbraucher:538:1
                                    
                                    

                                    Das ist die betroffene Zeile 538

                                    cacheSelectorON.on(function(obj) { // bei Zustandänderung *.STATE im Gewerk licht
                                    
                                    1 Reply Last reply Reply Quote 0
                                    • M
                                      mech last edited by mech

                                      Okay fehler selbst gesehen.

                                      ON = On

                                      Das habe ich unter Trigger noch zugefügt.

                                      cacheSelectorOn.on(function(obj) { // bei Zustandänderung *.STATE im Gewerk licht
                                      
                                      if (logging) log('Auslösender Schalter: ' + obj.id + ': ' + obj.state.val); // Info im Log, welcher Zustand sich geändert hat
                                      
                                      checkDevices();
                                      
                                      });
                                      

                                      Aber leider zeigt er mir bisher nur die Shellys an =/

                                      1 Reply Last reply Reply Quote 0
                                      • M
                                        mech last edited by

                                        Update: Es scheint auf jedenfall den HM Schalter zu triggern:

                                        21:48:40.204	info	javascript.0 script.js.Verbraucher: Auslösender Schalter: hmip.0.devices.3014F711A0000858A9919754.channels.1.on: false
                                        

                                        Nur dieser wird wohl nicht in die Variable für die Lampen geschrieben.

                                        1 Reply Last reply Reply Quote 0
                                        • M
                                          mech last edited by

                                          Hier mal das ganze Script:

                                          /* Status Zahl Lichter
                                          
                                          {1}
                                          
                                          zählt die Lichter in allen Räumen und meldet die Eingeschalteten namentlich
                                          
                                          Daten kommen vom Gewerk "licht"
                                          
                                          {1}
                                          
                                          erstellt: 17.06.2015 nach diesem Vorbild: viewtopic.php?f=21&t=869&sid=f9ba5657489ff431a1990884f90779c1#p6564
                                          
                                          23.06.2015 globale Variablendefinition zählen_Lichter.textLichterAn fehlte und wurde hinzugefügt
                                          
                                          Log Ausgabe auskommentiert
                                          
                                          05.08.2015 STATE aus der Ausgabe entfernt nach Idee von stephan61 http://forum.iobroker.org/viewtopic.php ... t=20#p9267
                                          
                                          24.03.2016 keine Anzeigen von virtuellen Kanälen mehr (in Abhängigkeit der Abfrage des Namens)
                                          
                                          06.05.2016 Datenpunkt für Ansagen zugefügt
                                          
                                          02.07.2016 abgeschaltet, da Fehler
                                          
                                          03.07.2016 Zähl-Funktion getrennt nach Schalter und Dimmer
                                          
                                          search statt indexOf und RegEx für Suche nach Virtuellen Kanälen
                                          
                                          27.11.2016 Verschoben in Status
                                          
                                          Code optimiert
                                          
                                          23.12.2016 Räume eingebaut
                                          
                                          */
                                          
                                          var logging = true;
                                          
                                           
                                          
                                          var idAnzahlEin = 'javascript.0.Status.Lichter.Anzahl_ein',
                                          
                                          idAnzahl = 'javascript.0.Status.Lichter.Anzahl',
                                          
                                          idText = 'javascript.0.Status.Lichter.Text',
                                          
                                          idRaum = 'javascript.0.Status.Lichter.Raum', // <---- NEU
                                          
                                          idAnsage = 'javascript.0.Status.Lichter.Ansage';
                                          
                                           
                                          
                                          // Ab hier nix mehr ändern
                                          
                                          createState(idAnzahl, { // wenn benötigt: Anzahl der vorhandenen Lichter
                                          
                                          type: 'number',
                                          
                                          name: 'Anzahl aller Lichter',
                                          
                                          min: 0,
                                          
                                          def: 0,
                                          
                                          role: 'value'
                                          
                                          });
                                          
                                          createState(idAnzahlEin, { // Anzahl der Lichter, die auf sind als Variable unter Javascript.0 anlegen
                                          
                                          type: 'number',
                                          
                                          name: 'Anzahl der eingeschalteten Lichter',
                                          
                                          min: 0,
                                          
                                          def: 0,
                                          
                                          role: 'value'
                                          
                                          });
                                          
                                          createState(idText, { // Anzahl der brennenden Lichter und deren Namen als Variable unter Javascript.0 anlegen
                                          
                                          type: 'string',
                                          
                                          name: 'Eingeschaltete Lichter',
                                          
                                          desc: 'Namen der eingeschalteten Lichter',
                                          
                                          def: ' ',
                                          
                                          role: 'value'
                                          
                                          });
                                          
                                          createState(idAnsage, {
                                          
                                          type: 'string',
                                          
                                          name: 'Eingeschaltete Lichter (Ansage)',
                                          
                                          desc: 'Namen der eingeschalteten Lichter (für Ansage aufbereitet)',
                                          
                                          def: ' ',
                                          
                                          role: 'value'
                                          
                                          });
                                          
                                          createState(idRaum, { // Räume, in denen Lichter brennen // <---- NEU
                                          
                                          type: 'string',
                                          
                                          name: 'Räume mit eingeschalteten Lichter',
                                          
                                          desc: 'Namen der Räume, in denen Lichter eingeschaltet sind',
                                          
                                          def: ' ',
                                          
                                          role: 'value'
                                          
                                          });
                                          
                                          //var cacheSelectorHM = $('state[id=*.switch](functions=light)');
                                          
                                          var cacheSelectorState = $('channel[state.id=*.STATE](functions="light")'); // Gewerk licht
                                          
                                          var cacheSelectorLevel = $('channel[state.id=*.level](functions="light")');
                                          
                                          var cacheSelectorPOWER = $('state[id=*.POWER](functions="light")'); // Sonoff
                                          
                                          var cacheSelectorSwitch = $('state[id=*.Switch](functions="light")'); // Shelly
                                          
                                          var cacheSelectorMi = $('state[id=*.state](functions=light)'); //Mi-Light
                                          
                                          //var cacheSelectorON = $('switch[id=*.switch](functions=light)'); //Homematic
                                          
                                          const cacheSelectorOn = $('state[id=*.on](functions=light)');
                                          
                                          function checkDevices(obj) {
                                          
                                          // Setzt die Zähler vor dem Durchlauf aller Elemente *.STATE im Gewerk licht auf 0
                                          
                                          var anzahlLichterAn = 0;
                                          
                                          var anzahlLichter = 0;
                                          
                                          var textLichterAn = [];
                                          
                                          var textRaum = [];
                                          
                                           
                                          
                                          if (logging) {
                                          
                                          log('++++++ Lichter Anzahl ++++ ');
                                          
                                          log('#### SCHALTER ##### ');
                                          
                                          }
                                          
                                          cacheSelectorState.each(function (id, i) { // Schleife für jedes gefundenen Element *.STATE im Gewerk Licht
                                          
                                          var obj = getObject(id);
                                          
                                          var name = getObject(id).common.name;
                                          
                                          var status = getState(id).val; // Zustand *.STATE abfragen (jedes Element)
                                          
                                          var devicename = name.substring(0, name.indexOf(".STATE")); //.state aus Text entfernen
                                          
                                          var raumname = getObject(id, "rooms"); // <---- NEU
                                          
                                           
                                          
                                           
                                          
                                          // ########## Abfrage ob Virtueller Kanal? VK oder : im Namen)
                                          
                                          // if ( (devicename.search(/(CUX)|(K2)|(K3)|(VK)|(:)/ig) == -1) ) { 
                                          
                                          
                                          /*
                                          if (logging) {
                                          
                                          log('-------');
                                          
                                          log('Kanal: ' + name);
                                          
                                          log('Status: ' + status); 
                                          
                                          }}
                                          */
                                          
                                          
                                          
                                          
                                           
                                          
                                          if (status) { // wenn Zustand = true, dann wird die ANzahl der Lichter hochgezählt
                                          
                                          ++anzahlLichterAn; 
                                          
                                          textLichterAn.push(devicename); // Zu Array hinzufügen
                                          
                                          textRaum.push(raumname.enumNames); // <---- NEU
                                          
                                          }
                                          
                                          ++anzahlLichter; // Zählt die Anzahl der vorhandenen Lichter unabhängig vom Status
                                          
                                          // } // ENDE VK-Abfrage
                                          
                                           
                                          
                                          });
                                          
                                           
                                          
                                           
                                          
                                          if (logging) log('#### DIMMER ##### ');
                                          
                                          cacheSelectorLevel.each(function (id, i) { // Schleife für jedes gefundenen Element *.LEVEL im Gewerk Licht
                                          
                                          var obj = getObject(id);
                                          
                                          var name = getObject(id).common.name;
                                          
                                          var status = getState(id).val; // Zustand *.LEVEL abfragen (jedes Element)
                                          
                                          var devicename = name.substring(0, name.indexOf(".LEVEL")); //.state aus Text entfernen
                                          
                                          var raumname = getObject(id, "rooms"); // <---- NEU
                                          
                                           
                                          
                                          // ########## Abfrage ob Virtueller Kanal? VK oder : im Namen)
                                          
                                          // if ( (devicename.search(/(CUX)|(K2)|(K3)|(V10)|(VK)|(:)/ig) == -1) ) { // Geräte mit diesen Strings im namen nicht beachten
                                          
                                          /*
                                          
                                          if (logging) {
                                          
                                          log('-------');
                                          
                                          log('Kanal: ' + name);
                                          
                                          log('Status: ' + status + '%'); 
                                          
                                          }
                                          
                                          */
                                          
                                           
                                          
                                          if (parseFloat(status) > 0) { // Wenn Dimmwert über 0
                                          
                                          ++anzahlLichterAn; 
                                          
                                          textLichterAn.push(devicename); // Zu Array hinzufügen
                                          
                                          textRaum.push(raumname.enumNames); // <---- NEU
                                          
                                          }
                                          
                                          ++anzahlLichter; // Zählt die Anzahl der vorhandenen Lichter unabhängig vom Status
                                          
                                          // } // Ende Abfrage VK 
                                          
                                           
                                          
                                          }); 
                                          
                                           
                                          
                                          if (logging) {
                                          
                                          log('++++++ Lichter Anzahl ++++ ');
                                          
                                          log('#### SCHALTER ##### ');
                                          
                                          }
                                          
                                          cacheSelectorPOWER.each(function (id, i) { // Schleife für jedes gefundenen Element *.POWER im Gewerk Licht
                                          
                                          var obj = getObject(id);
                                          
                                          var name = getObject(id).common.name;
                                          
                                          var status = getState(id).val; // Zustand *.STATE abfragen (jedes Element)
                                          
                                          var devicename = name.substring(0, name.indexOf("POWER")); //.state aus Text entfernen
                                          
                                          var raumname = getObject(id, "rooms"); // <---- NEU
                                          
                                           
                                          
                                           
                                          
                                          // ########## Abfrage ob Virtueller Kanal? VK oder : im Namen)
                                          
                                          // if ( (devicename.search(/(CUX)|(K2)|(K3)|(VK)|(:)/ig) == -1) ) { 
                                          
                                          /*
                                          
                                          if (logging) {
                                          
                                          log('-------');
                                          
                                          log('Kanal: ' + name);
                                          
                                          log('Status: ' + status); 
                                          
                                          }
                                          
                                          */
                                          
                                           
                                          
                                          if (status) { // wenn Zustand = true, dann wird die ANzahl der Lichter hochgezählt
                                          
                                          ++anzahlLichterAn; 
                                          
                                          textLichterAn.push(devicename); // Zu Array hinzufügen
                                          
                                          //textRaum.push(raumname.enumNames); // <---- NEU
                                          textRaum.push(raumname.enumRooms); // <---- NEU
                                          
                                          }
                                          
                                          ++anzahlLichter; // Zählt die Anzahl der vorhandenen Lichter unabhängig vom Status
                                          
                                          // } // ENDE VK-Abfrage
                                          
                                           
                                          
                                          });
                                          
                                           
                                          
                                          if (logging) {
                                          
                                          log('++++++ Lichter Anzahl ++++ ');
                                          
                                          log('#### SCHALTER ##### ');
                                          
                                          }
                                          
                                          cacheSelectorSwitch.each(function (id, i) { // Schleife für jedes gefundenen Element *.POWER im Gewerk Licht
                                          
                                          var obj = getObject(id);
                                          
                                          var name = getObject(id).common.name;
                                          
                                          var status = getState(id).val; // Zustand *.STATE abfragen (jedes Element)
                                          
                                          var devicename = name;
                                          
                                          var raumname = getObject(id, "rooms"); // <---- NEU
                                          
                                           
                                          
                                          // ########## Abfrage ob Virtueller Kanal? VK oder : im Namen)
                                          
                                          // if ( (devicename.search(/(CUX)|(K2)|(K3)|(VK)|(:)/ig) == -1) ) { 
                                          
                                          /*
                                          
                                          if (logging) {
                                          
                                          log('-------');
                                          
                                          log('Kanal: ' + name);
                                          
                                          log('Status: ' + status); 
                                          
                                          }
                                          
                                          */
                                          
                                           
                                          
                                          if (status) { // wenn Zustand = true, dann wird die ANzahl der Lichter hochgezählt
                                          
                                          ++anzahlLichterAn; 
                                          
                                          textLichterAn.push(devicename); // Zu Array hinzufügen
                                          
                                          textRaum.push(raumname.enumNames); // <---- NEU
                                          
                                          }
                                          
                                          ++anzahlLichter; // Zählt die Anzahl der vorhandenen Lichter unabhängig vom Status
                                          
                                          // } // ENDE VK-Abfrage
                                          
                                          });
                                          
                                           
                                          
                                           
                                          
                                           
                                          
                                          if (logging) {
                                          
                                          log('++++++ Lichter Anzahl ++++ ');
                                          
                                          log('#### SCHALTER ##### ');
                                          
                                          }
                                          
                                          cacheSelectorMi.each(function (id, i) { // Schleife für jedes gefundenen Element *.POWER im Gewerk Licht
                                          
                                          var obj = getObject(id);
                                          
                                          var name = getObject(id).common.name;
                                          
                                          var status = getState(id).val; // Zustand *.STATE abfragen (jedes Element)
                                          
                                          var devicename = name.substring(0, name.indexOf(" Switch ON/OFF")); //.state aus Text entfernen
                                          
                                          var raumname = getObject(id, "rooms"); // <---- NEU
                                          
                                           
                                          
                                          // ########## Abfrage ob Virtueller Kanal? VK oder : im Namen)
                                          
                                          // if ( (devicename.search(/(CUX)|(K2)|(K3)|(VK)|(:)/ig) == -1) ) { 
                                          
                                          /*
                                          
                                          if (logging) {
                                          
                                          log('-------');
                                          
                                          log('Kanal: ' + name);
                                          
                                          log('Status: ' + status); 
                                          
                                          }
                                          
                                          */
                                          
                                           
                                          
                                          if (status) { // wenn Zustand = true, dann wird die ANzahl der Lichter hochgezählt
                                          
                                          ++anzahlLichterAn; 
                                          
                                          textLichterAn.push(devicename); // Zu Array hinzufügen
                                          
                                          textRaum.push(raumname.enumNames); // <---- NEU
                                          
                                          }
                                          
                                          ++anzahlLichter; // Zählt die Anzahl der vorhandenen Lichter unabhängig vom Status
                                          
                                          // } // ENDE VK-Abfrage
                                          
                                          });
                                          
                                           
                                          
                                          // Array mit Lichternamen sortieren
                                          
                                          textLichterAn.sort();
                                          
                                          textRaum.sort(); // <---- NEU
                                          
                                          // Schleife ist durchlaufen. Im Log wird der aktuelle Status (Anzahl, davon an) ausgegeben
                                          
                                          if (logging) log("Text: " + textLichterAn);
                                          
                                          if (logging) log("Anzahl Lichter: " + anzahlLichter + " # davon Lichter an: " + anzahlLichterAn);
                                          
                                          // die ermittelten Werte werden als javascript.0. Variable in ioBroker gespeichert (z.B. für die Verarbeitung in VIS)
                                          
                                          setState(idText, textLichterAn.join(', ')); // Schreibt die aktuelle Namen der eingeschalteten Lichter
                                          
                                          setState(idAnzahlEin, textLichterAn.length); // Schreibt die aktuelle Anzahl der eingeschalteten Lichter
                                          
                                          setState(idAnzahl, anzahlLichter); // Schreibt die aktuelle Anzahl der vorhandene Elemente im Gewerk Licht
                                          
                                          // setState(idRaum, textRaum.join(',<br>')); // Räume, in denen Licht brennt // <---- NEU
                                          
                                          setState(idRaum, textRaum.join(', ')); // Räume, in denen Licht brennt // <---- NEU
                                          
                                          }
                                          
                                           
                                          
                                          // Trigger
                                          
                                          cacheSelectorState.on(function(obj) { // bei Zustandänderung *.STATE im Gewerk licht
                                          
                                          if (logging) log('Auslösender Schalter: ' + obj.id + ': ' + obj.state.val); // Info im Log, welcher Zustand sich geändert hat
                                          
                                          checkDevices();
                                          
                                          });
                                          
                                          cacheSelectorLevel.on(function(obj) { // bei Zustandänderung *.LEVEL im Gewerk licht
                                          
                                          if (logging) log('Auslösender Dimmer: ' + obj.id + ': ' + obj.state.val); // Info im Log, welcher Zustand sich geändert hat
                                          
                                          checkDevices();
                                          
                                          });
                                          
                                          cacheSelectorPOWER.on(function(obj) { // bei Zustandänderung *.STATE im Gewerk licht
                                          
                                          if (logging) log('Auslösender Schalter: ' + obj.id + ': ' + obj.state.val); // Info im Log, welcher Zustand sich geändert hat
                                          
                                          checkDevices();
                                          
                                          });
                                          
                                          cacheSelectorSwitch.on(function(obj) { // bei Zustandänderung *.STATE im Gewerk licht
                                          
                                          if (logging) log('Auslösender Schalter: ' + obj.id + ': ' + obj.state.val); // Info im Log, welcher Zustand sich geändert hat
                                          
                                          checkDevices();
                                          
                                          });
                                          
                                          cacheSelectorMi.on(function(obj) { // bei Zustandänderung *.STATE im Gewerk licht
                                          
                                          if (logging) log('Auslösender Schalter: ' + obj.id + ': ' + obj.state.val); // Info im Log, welcher Zustand sich geändert hat
                                          
                                          checkDevices();
                                          
                                          });
                                          
                                          cacheSelectorOn.on(function(obj) { // bei Zustandänderung *.STATE im Gewerk licht
                                          
                                          if (logging) log('Auslösender Schalter: ' + obj.id + ': ' + obj.state.val); // Info im Log, welcher Zustand sich geändert hat
                                          
                                          checkDevices();
                                          
                                          });
                                          
                                          function main() {
                                          
                                          setTimeout(function(){
                                          
                                          if (logging) log('Auslöser Skriptstart');
                                          
                                          checkDevices();
                                          
                                          }, 2000);
                                          
                                          }
                                          
                                           
                                          
                                          main(); // Skriptstart-Auslöser
                                          
                                           
                                          
                                          // Aufbereitung für Ansage
                                          
                                          function strip_tags(data) {
                                          
                                          var rueckgabe = data.replace(/(&nbsp;|<([^>]+)>)/ig, " ");
                                          
                                          return(rueckgabe);
                                          
                                          }
                                          
                                           
                                          
                                          on(idText, function (obj) {
                                          
                                          var text = obj.state.val;
                                          
                                          text = (getState(idAnzahl).val > 0 ) ? 'Lichter eingeschaltet: ' + strip_tags(text) : 'Alle Lichter ausgeschaltet';
                                          
                                          setState(idAnsage, text);
                                          
                                          });
                                          
                                          1 Reply Last reply Reply Quote 0
                                          • M
                                            mech last edited by

                                            okay gelöst 🙂

                                            Man muss den Log Part auf für den selector anlegen. Hier der Code falls mal jemand ähnlich unbegabt im JS ist.

                                            f (logging) {
                                            
                                            log('++++++ Lichter Anzahl ++++ ');
                                            
                                            log('#### SCHALTER ##### ');
                                            
                                            }
                                            
                                            cacheSelectorOn.each(function (id, i) { // Schleife für jedes gefundenen Element *.POWER im Gewerk Licht
                                            
                                            1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            835
                                            Online

                                            31.7k
                                            Users

                                            79.7k
                                            Topics

                                            1.3m
                                            Posts

                                            33
                                            156
                                            22296
                                            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