Skip to content
  • Home
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • 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

  • Default (No Skin)
  • No Skin
Collapse
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. JavaScript
  5. [Gelöst] Fensterzähler mit Aufzählungen

NEWS

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

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

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

[Gelöst] Fensterzähler mit Aufzählungen

Scheduled Pinned Locked Moved JavaScript
19 Posts 3 Posters 1.4k Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • paul53P paul53

    @masterg-23 sagte:

    setState("zählen_Fenster.textFensterauf", textFensterauf.join(',                                                                                                                                                                             '));    // Schreibt die aktuelle Namen der eingeschalteten Lichter
    

    Ist am Ende der Zeile 32 ein Zeilenumbruch? Der wäre falsch.

        setState("zählen_Fenster.textFensterauf", textFensterauf.join(', '));    // Schreibt die aktuelle Namen der eingeschalteten Lichter
    
    Masterg 23M Offline
    Masterg 23M Offline
    Masterg 23
    wrote on last edited by
    #5

    @paul53 said in Fensterzähler mit Aufzählungen:

    @masterg-23 sagte:

    setState("zählen_Fenster.textFensterauf", textFensterauf.join(',                                                                                                                                                                             '));    // Schreibt die aktuelle Namen der eingeschalteten Lichter
    

    Ist am Ende der Zeile 32 ein Zeilenumbruch? Der wäre falsch.

        setState("zählen_Fenster.textFensterauf", textFensterauf.join(', '));    // Schreibt die aktuelle Namen der eingeschalteten Lichter
    

    Das war in der Tat falsch. Habs korrigiert. Trotzdem wird der Wert vom DP nicht geändert, wenn ich ein Fenster aufmache.

    Bildschirmfoto 2021-02-18 um 12.10.38.png

    Bildschirmfoto 2021-02-18 um 12.11.04.png

    Bildschirmfoto 2021-02-18 um 12.11.11.png

    paul53P 1 Reply Last reply
    0
    • Masterg 23M Masterg 23

      @paul53 said in Fensterzähler mit Aufzählungen:

      @masterg-23 sagte:

      setState("zählen_Fenster.textFensterauf", textFensterauf.join(',                                                                                                                                                                             '));    // Schreibt die aktuelle Namen der eingeschalteten Lichter
      

      Ist am Ende der Zeile 32 ein Zeilenumbruch? Der wäre falsch.

          setState("zählen_Fenster.textFensterauf", textFensterauf.join(', '));    // Schreibt die aktuelle Namen der eingeschalteten Lichter
      

      Das war in der Tat falsch. Habs korrigiert. Trotzdem wird der Wert vom DP nicht geändert, wenn ich ein Fenster aufmache.

      Bildschirmfoto 2021-02-18 um 12.10.38.png

      Bildschirmfoto 2021-02-18 um 12.11.04.png

      Bildschirmfoto 2021-02-18 um 12.11.11.png

      paul53P Offline
      paul53P Offline
      paul53
      wrote on last edited by
      #6

      @masterg-23 sagte: Trotzdem wird der Wert vom DP nicht geändert, wenn ich ein Fenster aufmache.

      Das Skript erstellt und verwendet Datenpunkte unter "javascript.0.zählen_Fenster".

      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

      Masterg 23M 1 Reply Last reply
      0
      • paul53P paul53

        @masterg-23 sagte: Trotzdem wird der Wert vom DP nicht geändert, wenn ich ein Fenster aufmache.

        Das Skript erstellt und verwendet Datenpunkte unter "javascript.0.zählen_Fenster".

        Masterg 23M Offline
        Masterg 23M Offline
        Masterg 23
        wrote on last edited by
        #7

        @paul53 Danke für deine Antwort.
        Auch dieser DP ändert sich nicht.
        Bildschirmfoto 2021-02-18 um 12.32.30.png

        paul53P 1 Reply Last reply
        0
        • Masterg 23M Masterg 23

          @paul53 Danke für deine Antwort.
          Auch dieser DP ändert sich nicht.
          Bildschirmfoto 2021-02-18 um 12.32.30.png

          paul53P Offline
          paul53P Offline
          paul53
          wrote on last edited by paul53
          #8

          @masterg-23 sagte: Auch dieser DP ändert sich nicht.

          Den Selektor hast Du auch nicht angepasst?

          var cacheSelectorState  = $('zigbee.0.*.opened(functions=Fenster)');
          

          Die Enum-ID lautet "enum.functions.Fenster" (Fenster groß geschrieben)?

          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

          Masterg 23M 1 Reply Last reply
          0
          • paul53P paul53

            @masterg-23 sagte: Auch dieser DP ändert sich nicht.

            Den Selektor hast Du auch nicht angepasst?

            var cacheSelectorState  = $('zigbee.0.*.opened(functions=Fenster)');
            

            Die Enum-ID lautet "enum.functions.Fenster" (Fenster groß geschrieben)?

            Masterg 23M Offline
            Masterg 23M Offline
            Masterg 23
            wrote on last edited by
            #9

            @paul53 said in Fensterzähler mit Aufzählungen:

            var cacheSelectorState = $('*.opened(functions=Fenster)');

            Ich habe es angepasst.
            Es gibt zwei Zeilen:
            einmal var cacheSelector .... und einmal var cacheSelectorState...
            ich habe den zweiten wie du geschrieben hattest angepasst. Aber ich denke, dass da noch ein Fehler drin ist.

            var cacheSelector = $('channel[state.id=*.STATE](functions=Fenster)');
              
            var cacheSelectorState = $('*.opened(functions=Fenster)');
              
             function countFenster(obj) {
                  // Setzt die Zähler vor dem Durchlauf aller Elemente *.STATE im Gewerk Licht auf 0
                 var anzahlFenster = 0;
                 var anzahlFensterauf = 0;
                 var textFensterauf = [];
              
            
            paul53P 1 Reply Last reply
            0
            • Masterg 23M Masterg 23

              @paul53 said in Fensterzähler mit Aufzählungen:

              var cacheSelectorState = $('*.opened(functions=Fenster)');

              Ich habe es angepasst.
              Es gibt zwei Zeilen:
              einmal var cacheSelector .... und einmal var cacheSelectorState...
              ich habe den zweiten wie du geschrieben hattest angepasst. Aber ich denke, dass da noch ein Fehler drin ist.

              var cacheSelector = $('channel[state.id=*.STATE](functions=Fenster)');
                
              var cacheSelectorState = $('*.opened(functions=Fenster)');
                
               function countFenster(obj) {
                    // Setzt die Zähler vor dem Durchlauf aller Elemente *.STATE im Gewerk Licht auf 0
                   var anzahlFenster = 0;
                   var anzahlFensterauf = 0;
                   var textFensterauf = [];
                
              
              paul53P Offline
              paul53P Offline
              paul53
              wrote on last edited by
              #10

              @masterg-23
              Ist "fenster" in der ID klein geschrieben?

              Bild_2021-02-18_125626.png

              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

              Masterg 23M 1 Reply Last reply
              0
              • paul53P paul53

                @masterg-23
                Ist "fenster" in der ID klein geschrieben?

                Bild_2021-02-18_125626.png

                Masterg 23M Offline
                Masterg 23M Offline
                Masterg 23
                wrote on last edited by Masterg 23
                #11

                @paul53 said in Fensterzähler mit Aufzählungen:

                @masterg-23
                Ist "fenster" in der ID klein geschrieben?

                Bild_2021-02-18_125626.png

                Nein den Code hatte ich oben gepostet. Fenster ist großgeschrieben

                paul53P 1 Reply Last reply
                0
                • Masterg 23M Masterg 23

                  @paul53 said in Fensterzähler mit Aufzählungen:

                  @masterg-23
                  Ist "fenster" in der ID klein geschrieben?

                  Bild_2021-02-18_125626.png

                  Nein den Code hatte ich oben gepostet. Fenster ist großgeschrieben

                  paul53P Offline
                  paul53P Offline
                  paul53
                  wrote on last edited by paul53
                  #12

                  @masterg-23 sagte: hatte ich oben gepostet. Fenster ist großgeschrieben

                  Dort ist es in der ID klein geschrieben! Also so:

                  var cacheSelectorState = $('*.opened(functions=fenster)');
                  

                  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

                  Masterg 23M 1 Reply Last reply
                  0
                  • paul53P paul53

                    @masterg-23 sagte: hatte ich oben gepostet. Fenster ist großgeschrieben

                    Dort ist es in der ID klein geschrieben! Also so:

                    var cacheSelectorState = $('*.opened(functions=fenster)');
                    
                    Masterg 23M Offline
                    Masterg 23M Offline
                    Masterg 23
                    wrote on last edited by
                    #13

                    @paul53 said in Fensterzähler mit Aufzählungen:

                    @masterg-23 sagte: hatte ich oben gepostet. Fenster ist großgeschrieben

                    Dort ist es in der ID klein geschrieben! Also so:

                    var cacheSelectorState = $('*.opened(functions=fenster)');
                    

                    Ich weiß nicht wie das sein kann. Oben ist es definitiv groß geschrieben.
                    Anbei noch einmal der gesamte Code

                    createState('zählen_Fenster.anzahlFenster', 0);    // wenn benötigt: Anzahl der vorhandenen Lichter
                     createState('zählen_Fenster.anzahlFensterauf', 0);  // Anzahl der Lichter, die an sind als Variable unter Javascript.0 anlegen
                     createState('zählen_Fenster.textFensterauf', " ");  // Anzahl der Lichter, die an sind als Variable unter Javascript.0 anlegen
                      
                     var cacheSelector = $('channel[state.id=*.STATE](functions=Fenster)');
                      
                    var cacheSelectorState = $('*.opened(functions=Fenster)');
                      
                     function countFenster(obj) {
                          // Setzt die Zähler vor dem Durchlauf aller Elemente *.STATE im Gewerk Licht auf 0
                         var anzahlFenster = 0;
                         var anzahlFensterauf = 0;
                         var textFensterauf = [];
                      
                        log('Auslösender Aktor: ' + obj.id + ': ' + obj.newState.val);    // Info im Log, welcher Zustand sich geändert hat
                      
                        cacheSelectorState.each(function (id, i) {                       // Schleife für jedes gefundenen Element *.STATE im Gewerk Licht
                             var status = getState(id).val;                          // Zustand *.STATE abfragen (jedes Element)
                             var obj    = getObject(id);
                             if (status === true) {    // wenn Zustand = true, dann wird die ANzahl der Lichter hochgezählt
                                  textFensterauf.push(obj.common.name);    // Zu Array hinzufügen
                             }                
                             log("Licht Nr. " + i + ": " + getObject(id).common.name + ": " + status);
                             ++anzahlFenster;                                        // Zählt die Anzahl der vorhandenen Lichter unabhängig vom Status
                         }); 
                      
                         // Schleife ist durchlaufen. Im Log wird der aktuelle Status (Anzahl, davon an) ausgegeben
                             log("Text: " + anzahlFensterauf);
                             log("Anzahl Fesnter: " + anzahlFenster + " # davon Lichter auf: " +  anzahlFensterauf);
                      
                         // die ermittelten Werte werden als javascript.0\. Variable in ioBroker gespeichert (z.B. für die Verarbeitung in VIS)
                        setState("zählen_Fenster.textFensterauf", textFensterauf.join(','));    // Schreibt die aktuelle Namen der eingeschalteten Lichter
                        setState("zählen_Fenster.anzahlFensterauf", textFensterauf.length);    // Schreibt die aktuelle Anzahl der eingeschalteten Lichter
                        setState("zählen_Fenster.anzahlFenster", anzahlFenster);        // Schreibt die aktuelle Anzahl der vorhandene Elemente im Gewerk Licht
                     }
                      
                     cacheSelectorState.on(function(obj) {    // bei Zustandänderung *. STATE im Gewerk Fenster
                        countFenster(obj);
                     });
                    
                    paul53P 1 Reply Last reply
                    0
                    • Masterg 23M Masterg 23

                      @paul53 said in Fensterzähler mit Aufzählungen:

                      @masterg-23 sagte: hatte ich oben gepostet. Fenster ist großgeschrieben

                      Dort ist es in der ID klein geschrieben! Also so:

                      var cacheSelectorState = $('*.opened(functions=fenster)');
                      

                      Ich weiß nicht wie das sein kann. Oben ist es definitiv groß geschrieben.
                      Anbei noch einmal der gesamte Code

                      createState('zählen_Fenster.anzahlFenster', 0);    // wenn benötigt: Anzahl der vorhandenen Lichter
                       createState('zählen_Fenster.anzahlFensterauf', 0);  // Anzahl der Lichter, die an sind als Variable unter Javascript.0 anlegen
                       createState('zählen_Fenster.textFensterauf', " ");  // Anzahl der Lichter, die an sind als Variable unter Javascript.0 anlegen
                        
                       var cacheSelector = $('channel[state.id=*.STATE](functions=Fenster)');
                        
                      var cacheSelectorState = $('*.opened(functions=Fenster)');
                        
                       function countFenster(obj) {
                            // Setzt die Zähler vor dem Durchlauf aller Elemente *.STATE im Gewerk Licht auf 0
                           var anzahlFenster = 0;
                           var anzahlFensterauf = 0;
                           var textFensterauf = [];
                        
                          log('Auslösender Aktor: ' + obj.id + ': ' + obj.newState.val);    // Info im Log, welcher Zustand sich geändert hat
                        
                          cacheSelectorState.each(function (id, i) {                       // Schleife für jedes gefundenen Element *.STATE im Gewerk Licht
                               var status = getState(id).val;                          // Zustand *.STATE abfragen (jedes Element)
                               var obj    = getObject(id);
                               if (status === true) {    // wenn Zustand = true, dann wird die ANzahl der Lichter hochgezählt
                                    textFensterauf.push(obj.common.name);    // Zu Array hinzufügen
                               }                
                               log("Licht Nr. " + i + ": " + getObject(id).common.name + ": " + status);
                               ++anzahlFenster;                                        // Zählt die Anzahl der vorhandenen Lichter unabhängig vom Status
                           }); 
                        
                           // Schleife ist durchlaufen. Im Log wird der aktuelle Status (Anzahl, davon an) ausgegeben
                               log("Text: " + anzahlFensterauf);
                               log("Anzahl Fesnter: " + anzahlFenster + " # davon Lichter auf: " +  anzahlFensterauf);
                        
                           // die ermittelten Werte werden als javascript.0\. Variable in ioBroker gespeichert (z.B. für die Verarbeitung in VIS)
                          setState("zählen_Fenster.textFensterauf", textFensterauf.join(','));    // Schreibt die aktuelle Namen der eingeschalteten Lichter
                          setState("zählen_Fenster.anzahlFensterauf", textFensterauf.length);    // Schreibt die aktuelle Anzahl der eingeschalteten Lichter
                          setState("zählen_Fenster.anzahlFenster", anzahlFenster);        // Schreibt die aktuelle Anzahl der vorhandene Elemente im Gewerk Licht
                       }
                        
                       cacheSelectorState.on(function(obj) {    // bei Zustandänderung *. STATE im Gewerk Fenster
                          countFenster(obj);
                       });
                      
                      paul53P Offline
                      paul53P Offline
                      paul53
                      wrote on last edited by paul53
                      #14

                      @masterg-23 sagte: Oben ist es definitiv groß geschrieben.

                      Bin ich blind? Die Schreibweise in der ID ist entscheidend, nicht der Name!

                      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

                      Masterg 23M 2 Replies Last reply
                      1
                      • paul53P paul53

                        @masterg-23 sagte: Oben ist es definitiv groß geschrieben.

                        Bin ich blind? Die Schreibweise in der ID ist entscheidend, nicht der Name!

                        Masterg 23M Offline
                        Masterg 23M Offline
                        Masterg 23
                        wrote on last edited by
                        #15

                        @paul53 Achsooo, ok dann muss ich überall klein schreiben. Sorry für die Umstände :/

                        1 Reply Last reply
                        0
                        • paul53P paul53

                          @masterg-23 sagte: Oben ist es definitiv groß geschrieben.

                          Bin ich blind? Die Schreibweise in der ID ist entscheidend, nicht der Name!

                          Masterg 23M Offline
                          Masterg 23M Offline
                          Masterg 23
                          wrote on last edited by Masterg 23
                          #16

                          @paul53 Super danke dir. Jetzt funktioniert es.

                          Bildschirmfoto 2021-02-18 um 13.23.16.png

                          Jetzt muss ich nur noch hinbekommen, dass im DP textFensterauf die Namen der jeweiligen Fenster die auf sind geschrieben wird. Muss ich dafür bei Aufzählungen die Räume anlegen?

                          paul53P 1 Reply Last reply
                          0
                          • Masterg 23M Masterg 23

                            @paul53 Super danke dir. Jetzt funktioniert es.

                            Bildschirmfoto 2021-02-18 um 13.23.16.png

                            Jetzt muss ich nur noch hinbekommen, dass im DP textFensterauf die Namen der jeweiligen Fenster die auf sind geschrieben wird. Muss ich dafür bei Aufzählungen die Räume anlegen?

                            paul53P Offline
                            paul53P Offline
                            paul53
                            wrote on last edited by paul53
                            #17

                            @Masterg-23 sagte: Muss ich dafür bei Aufzählungen die Räume anlegen?

                            Nein, der Name muss aus dem Parent-Objekt genommen werden (Zeile hinter Zeile 18 einfügen).

                                     var status = getState(id).val;                          // Zustand *.STATE abfragen (jedes Element)
                                     id = id.substring(0, id.lastIndexOf('.'); // Parent-ID
                                     var obj    = getObject(id);
                            

                            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

                            Masterg 23M 1 Reply Last reply
                            0
                            • paul53P paul53

                              @Masterg-23 sagte: Muss ich dafür bei Aufzählungen die Räume anlegen?

                              Nein, der Name muss aus dem Parent-Objekt genommen werden (Zeile hinter Zeile 18 einfügen).

                                       var status = getState(id).val;                          // Zustand *.STATE abfragen (jedes Element)
                                       id = id.substring(0, id.lastIndexOf('.'); // Parent-ID
                                       var obj    = getObject(id);
                              
                              Masterg 23M Offline
                              Masterg 23M Offline
                              Masterg 23
                              wrote on last edited by Masterg 23
                              #18

                              @paul53 Ok danke für deine Hilfe. Ich merke es, dass es mir zu viel ist. Mit Javascript steh ich auf Kriegsfuß.
                              Das ganze kann man auch mit Blockly realisieren oder? Da hab ich ein bisschen mehr Ahnung und kann mich besser reinfuchsen.

                              Mein Ziel ist es, paar Sachen von diesem Projekt von dos1973 zu übernehmen. Speziell geht es mir um die Fenstererkennung usw hier.

                              1603355062600-1_startseite.png

                              1 Reply Last reply
                              0
                              • Masterg 23M Offline
                                Masterg 23M Offline
                                Masterg 23
                                wrote on last edited by Masterg 23
                                #19

                                Mein Problem ist, die richtige Zuweisung damit die Anzeigen korrekt dargestellt werden. Aber wenn ich es mir so anschaue, dann ist es ziemlich komplex.
                                Vielleicht sollte ich erstmal kleinere Brötchen backen.
                                Bildschirmfoto 2021-02-18 um 14.15.51.png

                                EDIT: Die Fensteranzeige habe ich hinbekommen, jedoch die kleine Symbole unten (Ausrufezeichen oder Haken) noch nicht. Aber ich denke das kriege ich auch hin.
                                Ich stelle es hier auf gelöst.

                                Vielen Dank :)
                                Bildschirmfoto 2021-02-18 um 14.27.05.png

                                1 Reply Last reply
                                0

                                Hello! It looks like you're interested in this conversation, but you don't have an account yet.

                                Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.

                                With your input, this post could be even better 💗

                                Register Login
                                Reply
                                • Reply as topic
                                Log in to reply
                                • Oldest to Newest
                                • Newest to Oldest
                                • Most Votes


                                Support us

                                ioBroker
                                Community Adapters
                                Donate

                                420

                                Online

                                32.8k

                                Users

                                82.7k

                                Topics

                                1.3m

                                Posts
                                Community
                                Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                ioBroker Community 2014-2025
                                logo
                                • Login

                                • Don't have an account? Register

                                • Login or register to search.
                                • First post
                                  Last post
                                0
                                • Home
                                • Recent
                                • Tags
                                • Unread 0
                                • Categories
                                • Unreplied
                                • Popular
                                • GitHub
                                • Docu
                                • Hilfe