Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • 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

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.5k

Hilfe bei Script zur Aufzählung benötigt

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
javascript
7 Beiträge 3 Kommentatoren 692 Aufrufe 3 Watching
  • Ä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
                Antworten
                • In einem neuen Thema antworten
                Anmelden zum Antworten
                • Älteste zuerst
                • Neuste zuerst
                • Meiste Stimmen


                Support us

                ioBroker
                Community Adapters
                Donate

                521

                Online

                32.7k

                Benutzer

                82.4k

                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