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.
    • 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
                • H
                  hannoi last edited by

                  Moin moin,

                  ich habe nach einem Systemumzug ein Problem mit meinem "Lichter zählen" Skript.

                  Das Skript läuft auch soweit wie es soll, nur 2 Lampen aus dem identischen Gewerk licht werden mit falschem Raumnamen aufgelistet: mit [object Object]:
                  Bildschirmfoto 2019-07-04 um 13.02.57.png

                  Hier das Skript:

                  /* Status Zahl Lichter
                  
                  zählt die Lichter in allen Räumen und meldet die Eingeschalteten namentlich
                  Daten kommen vom Gewerk "Licht"
                  */
                  const logging = true;
                  
                  const 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'
                  });
                  
                  // HM Schalter, HM Dimmer und Hue Schalter im Gewerk Licht
                  const hmSTATE = $('channel[state.id=*.state](functions=licht)');
                  const hmLEVEL = $('channel[state.id=*.LEVEL](functions=licht)');
                  const hueon   = $('state[id=*.on](functions=licht)');
                  
                  var anzahlLichterAn,
                      anzahlLichter,
                      textLichterAn,
                      textRaum;
                  
                  function checkLicht(id, vorn, hinten) {
                      var name = getObject(id).common.name;
                      var devicename = name.substring(vorn, name.indexOf(hinten)); //Zeichen vorn, State hinten aus Text entfernen
                      var raum = getObject(id, "rooms").enumNames[0]; 
                      if (getState(id).val) { // wenn Zustand != false / 0, dann wird die Anzahl der Lichter hochgezählt
                          ++anzahlLichterAn;
                          textLichterAn.push(devicename); // Zu Array hinzufügen
                          if(textRaum.indexOf(raum) == -1) textRaum.push(raum); // zu Array hinzu, wenn noch nicht vorhanden
                      }
                      ++anzahlLichter; // Zählt die Anzahl der vorhandenen Lichter unabhängig vom Status
                  }
                  
                  function checkDevices() {
                      // Setzt die Zähler vor dem Durchlauf aller Elemente *.STATE im Gewerk Licht auf 0
                      anzahlLichterAn = 0;
                      anzahlLichter = 0;
                      textLichterAn = [];
                      textRaum = [];
                      hmSTATE.each(function(id, i) { // Schleife für jedes gefundenen Element *.STATE im Gewerk Licht
                  	    checkLicht(id, 0, '.state');
                      });
                  
                      hueon.each(function(id, i) { // Schleife für jedes gefundenen Element *.on im Gewerk Licht
                  	    checkLicht(id, 6, '.on');
                      });
                  
                      hmLEVEL.each(function(id, i) { // Schleife für jedes gefundenen Element *.LEVEL im Gewerk Licht
                  	    checkLicht(id, 0, '.LEVEL');
                      });
                  
                      // 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(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
                  }
                  // Trigger
                  hmSTATE.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();
                  });
                  hueon.on(function(obj) { // bei Zustandänderung *.on von HUE Lampen im Gewerk Licht
                      if (logging) log('Auslösende HUE: ' + obj.id + ': ' + obj.state.val); // Info im Log, welcher Zustand sich geändert hat
                      checkDevices();
                  });
                  hmLEVEL.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();
                  });
                  
                  // Skriptstart
                  setTimeout(function() {
                      if (logging) log('Auslöser Skriptstart');
                      checkDevices();
                  }, 500);
                  
                  // 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);
                  });
                  

                  Das Skript findet alle Lichter aus dem Gewerk, das passt nur eben die Anzeige des Raumes nicht.
                  Hat noch jemand eine Idee?

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

                    @hannoi sagte:

                    Das Skript findet alle Lichter aus dem Gewerk

                    Wirklich ? Bei HomeMatic-Geräten wird "state" groß geschrieben:

                    const hmSTATE = $('channel[state.id=*.STATE](functions=licht)');
                    

                    und

                    	    checkLicht(id, 0, '.STATE');
                    
                    1 Reply Last reply Reply Quote 0
                    • H
                      hannoi last edited by

                      Sorry hatte ich nicht erwähnt, nutze die Tradfri Lampen. Dort wird der "state" kleingeschrieben.
                      Bildschirmfoto 2019-07-05 um 11.28.52.png

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

                        @hannoi
                        Mit dem Namen "on/off" kann das Skript nichts anfangen !

                        1 Reply Last reply Reply Quote 0
                        • H
                          hannoi last edited by

                          D.h. ich brauche dort eine weitere Konstante ?

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

                            @hannoi
                            Ändere den Datenpunktnamen analog der Struktur der HomeMatic-Namen in: "Kanalname.state". "Kanalname" steht für den Namen der jeweiligen Tradfri-Lampe.

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

                            Support us

                            ioBroker
                            Community Adapters
                            Donate

                            1.0k
                            Online

                            31.7k
                            Users

                            79.7k
                            Topics

                            1.3m
                            Posts

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