Weiter zum Inhalt
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Hell
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dunkel
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Hilfe bei Script zur Aufzählung benötigt

NEWS

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    18
    1
    823

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    18
    1
    6.3k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    1.6k

Hilfe bei Script zur Aufzählung benötigt

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
javascript
7 Beiträge 3 Kommentatoren 729 Aufrufe 3 Beobachtet
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • Mrs-BM Offline
    Mrs-BM Offline
    Mrs-B
    schrieb am zuletzt editiert von Homoran
    #1

    Hallo zusammen,

    ich habe versucht ein hier im Forum gefundenes Script (für die Zählung von Lichtern) anzupassen...

    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 cacheSelectorSwitch = $('switch[state.id=*.1](functions="Strom")'); // Gewerk licht
    var cacheSelectorSwitch = $('state[id=*.1](functions="Strom")');
    //var cacheSelectorSwitch = $('device[state.id=*.1](functions="Strom")');
    //var cacheSelectorSwitch = $('state[id=*.1](functions="Strom")');
    //var cacheSelectorSwitch = $('state[id=*.1](functions=Strom)[role=switch]');
    
    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 ##### ');
    
    }
    
    cacheSelectorSwitch.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(".1")); //.state aus Text entfernen
    
    var raumname = getObject(id, "rooms"); // <---- NEU
    
     
    
    
    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
    
    });
    
     
    log('test: ' + anzahlLichter);
    

    MOD-Edit: Code in Codetags gesetzt!

    ***** Leider bekomme ich die Steckdosen nicht gezählt :( Ergebins immer 0

    Aufzählung Strom ist natürlich vorhanden.
    Ich habe verschiedene Varianten zum auslesen versucht. Nix funktioniert und ich komme einfach nicht weiter...

    Hier noch das Objekt:
    398432da-292a-447e-9e60-cd59ca3a631b-grafik.png

    PS: Wie binde ich den Script-Text hier korrekt ein?

    GlasfaserG paul53P 2 Antworten Letzte Antwort
    0
    • Mrs-BM Mrs-B

      Hallo zusammen,

      ich habe versucht ein hier im Forum gefundenes Script (für die Zählung von Lichtern) anzupassen...

      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 cacheSelectorSwitch = $('switch[state.id=*.1](functions="Strom")'); // Gewerk licht
      var cacheSelectorSwitch = $('state[id=*.1](functions="Strom")');
      //var cacheSelectorSwitch = $('device[state.id=*.1](functions="Strom")');
      //var cacheSelectorSwitch = $('state[id=*.1](functions="Strom")');
      //var cacheSelectorSwitch = $('state[id=*.1](functions=Strom)[role=switch]');
      
      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 ##### ');
      
      }
      
      cacheSelectorSwitch.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(".1")); //.state aus Text entfernen
      
      var raumname = getObject(id, "rooms"); // <---- NEU
      
       
      
      
      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
      
      });
      
       
      log('test: ' + anzahlLichter);
      

      MOD-Edit: Code in Codetags gesetzt!

      ***** Leider bekomme ich die Steckdosen nicht gezählt :( Ergebins immer 0

      Aufzählung Strom ist natürlich vorhanden.
      Ich habe verschiedene Varianten zum auslesen versucht. Nix funktioniert und ich komme einfach nicht weiter...

      Hier noch das Objekt:
      398432da-292a-447e-9e60-cd59ca3a631b-grafik.png

      PS: Wie binde ich den Script-Text hier korrekt ein?

      GlasfaserG Offline
      GlasfaserG Offline
      Glasfaser
      schrieb am zuletzt editiert von
      #2

      @Mrs-B

      Zeile 92 ändern :

      var cacheSelectorState = $('state[id=*.state](functions="Strom")'); 
      

      Synology 918+ 16GB - ioBroker in Docker v9 , VISO auf Trekstor Primebook C13 13,3" , Hikvision Domkameras mit Surveillance Station .. CCU RaspberryMatic in Synology VM .. Zigbee CC2538+CC2592 .. Sonoff .. KNX .. Modbus ..

      1 Antwort Letzte Antwort
      0
      • Mrs-BM Mrs-B

        Hallo zusammen,

        ich habe versucht ein hier im Forum gefundenes Script (für die Zählung von Lichtern) anzupassen...

        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 cacheSelectorSwitch = $('switch[state.id=*.1](functions="Strom")'); // Gewerk licht
        var cacheSelectorSwitch = $('state[id=*.1](functions="Strom")');
        //var cacheSelectorSwitch = $('device[state.id=*.1](functions="Strom")');
        //var cacheSelectorSwitch = $('state[id=*.1](functions="Strom")');
        //var cacheSelectorSwitch = $('state[id=*.1](functions=Strom)[role=switch]');
        
        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 ##### ');
        
        }
        
        cacheSelectorSwitch.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(".1")); //.state aus Text entfernen
        
        var raumname = getObject(id, "rooms"); // <---- NEU
        
         
        
        
        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
        
        });
        
         
        log('test: ' + anzahlLichter);
        

        MOD-Edit: Code in Codetags gesetzt!

        ***** Leider bekomme ich die Steckdosen nicht gezählt :( Ergebins immer 0

        Aufzählung Strom ist natürlich vorhanden.
        Ich habe verschiedene Varianten zum auslesen versucht. Nix funktioniert und ich komme einfach nicht weiter...

        Hier noch das Objekt:
        398432da-292a-447e-9e60-cd59ca3a631b-grafik.png

        PS: Wie binde ich den Script-Text hier korrekt ein?

        paul53P Offline
        paul53P Offline
        paul53
        schrieb am zuletzt editiert von paul53
        #3

        @Mrs-B sagte:

        var cacheSelectorSwitch = $('state[id=*.1](functions="Strom")');
        

        Ist "Strom" in der ID "enum.functions.Strom" groß geschrieben ?
        Wo wird die Funktion checkDevices() aufgerufen ?

        Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
        Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

        1 Antwort Letzte Antwort
        0
        • Mrs-BM Offline
          Mrs-BM Offline
          Mrs-B
          schrieb am zuletzt editiert von
          #4

          args....

          Das war der Fehler... in der Aufzählung heißt es ID "enum.functions.strom" ... Also "strom" ist hier klein geschrieben... und jetzt läuft es :)

          Liebe Dank für den Hinweis... Das wird mir auch an anderen stellen weiterhelfen :)

          1 Antwort Letzte Antwort
          0
          • Mrs-BM Offline
            Mrs-BM Offline
            Mrs-B
            schrieb am zuletzt editiert von Mrs-B
            #5

            Doch noch ne Rückfrage...

            Bezogen auf meine Steckdose bekomme ich natürlich bei

            var name = getObject(id).common.name;

            den Namen switch_1 raus.. Das natürlich nicht so der Hit..
            Wie bekomme ich denn den Namen vom Device (also vom übergeordneten DP) raus (hier "Handy-Strom").

            Mag mir da noch jemand auf die Sprünge helfen?

            paul53P 1 Antwort Letzte Antwort
            0
            • Mrs-BM Mrs-B

              Doch noch ne Rückfrage...

              Bezogen auf meine Steckdose bekomme ich natürlich bei

              var name = getObject(id).common.name;

              den Namen switch_1 raus.. Das natürlich nicht so der Hit..
              Wie bekomme ich denn den Namen vom Device (also vom übergeordneten DP) raus (hier "Handy-Strom").

              Mag mir da noch jemand auf die Sprünge helfen?

              paul53P Offline
              paul53P Offline
              paul53
              schrieb am zuletzt editiert von paul53
              #6

              @Mrs-B sagt:

              Wie bekomme ich denn den Namen vom Device (also vom übergeordneten DP) raus (hier "Handy-Strom").

                      var idDev = id.substring(0, id.lastIndexOf('.'));
                      var name = getObject(idDev).common.name; 
              

              Mit dieser Funktion klappt es auch, wenn noch ein Kanal dazwischen ist.

              Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
              Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

              Mrs-BM 1 Antwort Letzte Antwort
              0
              • paul53P paul53

                @Mrs-B sagt:

                Wie bekomme ich denn den Namen vom Device (also vom übergeordneten DP) raus (hier "Handy-Strom").

                        var idDev = id.substring(0, id.lastIndexOf('.'));
                        var name = getObject(idDev).common.name; 
                

                Mit dieser Funktion klappt es auch, wenn noch ein Kanal dazwischen ist.

                Mrs-BM Offline
                Mrs-BM Offline
                Mrs-B
                schrieb am zuletzt editiert von Mrs-B
                #7

                @paul53 said in Hilfe bei Script zur Aufzählung benötigt:

                var idDev = id.substring(0, id.lastIndexOf('.'));
                var name = getObject(idDev).common.name;

                Ganz lieben Dank!! Funtioniert super!

                1 Antwort Letzte Antwort
                0

                Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.

                Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.

                Mit deinem Input könnte dieser Beitrag noch besser werden 💗

                Registrieren Anmelden
                Antworten
                • In einem neuen Thema antworten
                Anmelden zum Antworten
                • Älteste zuerst
                • Neuste zuerst
                • Meiste Stimmen


                Support us

                ioBroker
                Community Adapters
                Donate

                379

                Online

                32.8k

                Benutzer

                82.7k

                Themen

                1.3m

                Beiträge
                Community
                Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                ioBroker Community 2014-2025
                logo
                • Anmelden

                • Du hast noch kein Konto? Registrieren

                • Anmelden oder registrieren, um zu suchen
                • Erster Beitrag
                  Letzter Beitrag
                0
                • Home
                • Aktuell
                • Tags
                • Ungelesen 0
                • Kategorien
                • Unreplied
                • Beliebt
                • GitHub
                • Docu
                • Hilfe