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. JavaScript
  5. [Gelöst] Fensterzähler mit Aufzählungen

NEWS

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.2k

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

Geplant Angeheftet Gesperrt Verschoben JavaScript
19 Beiträge 3 Kommentatoren 1.3k Aufrufe 1 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.
  • Masterg 23M Offline
    Masterg 23M Offline
    Masterg 23
    schrieb am zuletzt editiert von Masterg 23
    #1

    Hallo zusammen,
    ich wollte in meiner VIS den Status meiner Fenster anzeigen lassen (wie viele Fenster sind geöffnet). Dazu habe ich hier im Forum diesen Thread gefunden Skript LOWBAT

    Bei Aufzählungen habe ich die Funktion "Fenster" angelegt und die jeweiligen Fenstersensoren diese Funktion zugeordnet. Dann den JavaScript Adapter neu gestartet.
    Das habe ich als JavaScript angelegt:

    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  = $('channel[state.id=*.STATE](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);
     });
    

    Muss man im Script irgendwas ändern? Wenn ich das Script starte, bekomme ich im Log folgende Fehlermeldungen:

    javascript.0	2021-02-18 09:30:39.149	error	(24729) at processTicksAndRejections (internal/process/task_queues.js:97:5)
    javascript.0	2021-02-18 09:30:39.149	error	(24729) at runMicrotasks (<anonymous>)
    javascript.0	2021-02-18 09:30:39.148	error	(24729) at /opt/iobroker/node_modules/standard-as-callback/built/index.js:19:49
    javascript.0	2021-02-18 09:30:39.148	error	(24729) at tryCatcher (/opt/iobroker/node_modules/standard-as-callback/built/utils.js:11:23)
    javascript.0	2021-02-18 09:30:39.148	error	(24729) at /opt/iobroker/node_modules/iobroker.js-controller/lib/states/statesInRedis.js:616:17
    javascript.0	2021-02-18 09:30:39.147	error	(24729) at /opt/iobroker/node_modules/iobroker.javascript/main.js:1238:17
    javascript.0	2021-02-18 09:30:39.147	error	(24729) at /opt/iobroker/node_modules/iobroker.javascript/main.js:1722:17
    javascript.0	2021-02-18 09:30:39.147	error	(24729) at prepareScript (/opt/iobroker/node_modules/iobroker.javascript/main.js:1621:37)
    javascript.0	2021-02-18 09:30:39.146	error	(24729) at createVM (/opt/iobroker/node_modules/iobroker.javascript/main.js:1383:28)
    javascript.0	2021-02-18 09:30:39.146	error	(24729) at Object.createScript (vm.js:261:10)
    javascript.0	2021-02-18 09:30:39.146	error	(24729) at new Script (vm.js:88:7)
    javascript.0	2021-02-18 09:30:39.145	error	(24729) SyntaxError: Invalid or unexpected token
    javascript.0	2021-02-18 09:30:39.145	error	(24729) ^^
    javascript.0	2021-02-18 09:30:39.145	error	(24729) setState("zählen_Fenster.textFensterauf", textFensterauf.join(',
    javascript.0	2021-02-18 09:30:39.144	error	at script.js.common.Eigene_Skrippte.Fenster_Status:32
    javascript.0	2021-02-18 09:30:39.144	error	(24729) script.js.common.Eigene_Skrippte.Fenster_Status compile failed:
    
    dirk1962D paul53P 2 Antworten Letzte Antwort
    0
    • Masterg 23M Masterg 23

      Hallo zusammen,
      ich wollte in meiner VIS den Status meiner Fenster anzeigen lassen (wie viele Fenster sind geöffnet). Dazu habe ich hier im Forum diesen Thread gefunden Skript LOWBAT

      Bei Aufzählungen habe ich die Funktion "Fenster" angelegt und die jeweiligen Fenstersensoren diese Funktion zugeordnet. Dann den JavaScript Adapter neu gestartet.
      Das habe ich als JavaScript angelegt:

      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  = $('channel[state.id=*.STATE](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);
       });
      

      Muss man im Script irgendwas ändern? Wenn ich das Script starte, bekomme ich im Log folgende Fehlermeldungen:

      javascript.0	2021-02-18 09:30:39.149	error	(24729) at processTicksAndRejections (internal/process/task_queues.js:97:5)
      javascript.0	2021-02-18 09:30:39.149	error	(24729) at runMicrotasks (<anonymous>)
      javascript.0	2021-02-18 09:30:39.148	error	(24729) at /opt/iobroker/node_modules/standard-as-callback/built/index.js:19:49
      javascript.0	2021-02-18 09:30:39.148	error	(24729) at tryCatcher (/opt/iobroker/node_modules/standard-as-callback/built/utils.js:11:23)
      javascript.0	2021-02-18 09:30:39.148	error	(24729) at /opt/iobroker/node_modules/iobroker.js-controller/lib/states/statesInRedis.js:616:17
      javascript.0	2021-02-18 09:30:39.147	error	(24729) at /opt/iobroker/node_modules/iobroker.javascript/main.js:1238:17
      javascript.0	2021-02-18 09:30:39.147	error	(24729) at /opt/iobroker/node_modules/iobroker.javascript/main.js:1722:17
      javascript.0	2021-02-18 09:30:39.147	error	(24729) at prepareScript (/opt/iobroker/node_modules/iobroker.javascript/main.js:1621:37)
      javascript.0	2021-02-18 09:30:39.146	error	(24729) at createVM (/opt/iobroker/node_modules/iobroker.javascript/main.js:1383:28)
      javascript.0	2021-02-18 09:30:39.146	error	(24729) at Object.createScript (vm.js:261:10)
      javascript.0	2021-02-18 09:30:39.146	error	(24729) at new Script (vm.js:88:7)
      javascript.0	2021-02-18 09:30:39.145	error	(24729) SyntaxError: Invalid or unexpected token
      javascript.0	2021-02-18 09:30:39.145	error	(24729) ^^
      javascript.0	2021-02-18 09:30:39.145	error	(24729) setState("zählen_Fenster.textFensterauf", textFensterauf.join(',
      javascript.0	2021-02-18 09:30:39.144	error	at script.js.common.Eigene_Skrippte.Fenster_Status:32
      javascript.0	2021-02-18 09:30:39.144	error	(24729) script.js.common.Eigene_Skrippte.Fenster_Status compile failed:
      
      dirk1962D Offline
      dirk1962D Offline
      dirk1962
      schrieb am zuletzt editiert von
      #2

      @masterg-23 Bei Deinem Script Problem kann ich Dir nicht helfen, aber schau Dir mal folgenden Thread an:
      https://forum.iobroker.net/topic/40424/alexa-ansagen-i-telegram-i-email-i-alias-i-visu-i-html

      NUC8i5 mit Proxmox; Raspberrymatic in VM, iobroker, Motioneye, infuxDB und Grafana in CT.

      Masterg 23M 1 Antwort Letzte Antwort
      1
      • dirk1962D dirk1962

        @masterg-23 Bei Deinem Script Problem kann ich Dir nicht helfen, aber schau Dir mal folgenden Thread an:
        https://forum.iobroker.net/topic/40424/alexa-ansagen-i-telegram-i-email-i-alias-i-visu-i-html

        Masterg 23M Offline
        Masterg 23M Offline
        Masterg 23
        schrieb am zuletzt editiert von
        #3

        @dirk1962 Vielen Dank, ich werde es mir gleich anschauen. Ich habe noch eine andere Anleitung gefunden:

        Scheint einfach zu sein aber trotzdem bekomme ich es nicht hin. Der DP der hochzählen soll, bleibt bei 0.
        Sobald ich ein Fenster öffne, blinkt die Zahl in grün auf aber der Wert bleibt bei 0.

        1 Antwort Letzte Antwort
        0
        • Masterg 23M Masterg 23

          Hallo zusammen,
          ich wollte in meiner VIS den Status meiner Fenster anzeigen lassen (wie viele Fenster sind geöffnet). Dazu habe ich hier im Forum diesen Thread gefunden Skript LOWBAT

          Bei Aufzählungen habe ich die Funktion "Fenster" angelegt und die jeweiligen Fenstersensoren diese Funktion zugeordnet. Dann den JavaScript Adapter neu gestartet.
          Das habe ich als JavaScript angelegt:

          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  = $('channel[state.id=*.STATE](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);
           });
          

          Muss man im Script irgendwas ändern? Wenn ich das Script starte, bekomme ich im Log folgende Fehlermeldungen:

          javascript.0	2021-02-18 09:30:39.149	error	(24729) at processTicksAndRejections (internal/process/task_queues.js:97:5)
          javascript.0	2021-02-18 09:30:39.149	error	(24729) at runMicrotasks (<anonymous>)
          javascript.0	2021-02-18 09:30:39.148	error	(24729) at /opt/iobroker/node_modules/standard-as-callback/built/index.js:19:49
          javascript.0	2021-02-18 09:30:39.148	error	(24729) at tryCatcher (/opt/iobroker/node_modules/standard-as-callback/built/utils.js:11:23)
          javascript.0	2021-02-18 09:30:39.148	error	(24729) at /opt/iobroker/node_modules/iobroker.js-controller/lib/states/statesInRedis.js:616:17
          javascript.0	2021-02-18 09:30:39.147	error	(24729) at /opt/iobroker/node_modules/iobroker.javascript/main.js:1238:17
          javascript.0	2021-02-18 09:30:39.147	error	(24729) at /opt/iobroker/node_modules/iobroker.javascript/main.js:1722:17
          javascript.0	2021-02-18 09:30:39.147	error	(24729) at prepareScript (/opt/iobroker/node_modules/iobroker.javascript/main.js:1621:37)
          javascript.0	2021-02-18 09:30:39.146	error	(24729) at createVM (/opt/iobroker/node_modules/iobroker.javascript/main.js:1383:28)
          javascript.0	2021-02-18 09:30:39.146	error	(24729) at Object.createScript (vm.js:261:10)
          javascript.0	2021-02-18 09:30:39.146	error	(24729) at new Script (vm.js:88:7)
          javascript.0	2021-02-18 09:30:39.145	error	(24729) SyntaxError: Invalid or unexpected token
          javascript.0	2021-02-18 09:30:39.145	error	(24729) ^^
          javascript.0	2021-02-18 09:30:39.145	error	(24729) setState("zählen_Fenster.textFensterauf", textFensterauf.join(',
          javascript.0	2021-02-18 09:30:39.144	error	at script.js.common.Eigene_Skrippte.Fenster_Status:32
          javascript.0	2021-02-18 09:30:39.144	error	(24729) script.js.common.Eigene_Skrippte.Fenster_Status compile failed:
          
          paul53P Offline
          paul53P Offline
          paul53
          schrieb am zuletzt editiert von paul53
          #4

          @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
          

          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 Antwort Letzte Antwort
          0
          • 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
            schrieb am zuletzt editiert von
            #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 Antwort Letzte Antwort
            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
              schrieb am zuletzt editiert von
              #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 Antwort Letzte Antwort
              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
                schrieb am zuletzt editiert von
                #7

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

                paul53P 1 Antwort Letzte Antwort
                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
                  schrieb am zuletzt editiert von 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 Antwort Letzte Antwort
                  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
                    schrieb am zuletzt editiert von
                    #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 Antwort Letzte Antwort
                    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
                      schrieb am zuletzt editiert von
                      #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 Antwort Letzte Antwort
                      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
                        schrieb am zuletzt editiert von 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 Antwort Letzte Antwort
                        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
                          schrieb am zuletzt editiert von 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 Antwort Letzte Antwort
                          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
                            schrieb am zuletzt editiert von
                            #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 Antwort Letzte Antwort
                            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
                              schrieb am zuletzt editiert von 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 Antworten Letzte Antwort
                              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
                                schrieb am zuletzt editiert von
                                #15

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

                                1 Antwort Letzte Antwort
                                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
                                  schrieb am zuletzt editiert von 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 Antwort Letzte Antwort
                                  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
                                    schrieb am zuletzt editiert von 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 Antwort Letzte Antwort
                                    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
                                      schrieb am zuletzt editiert von 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 Antwort Letzte Antwort
                                      0
                                      • Masterg 23M Offline
                                        Masterg 23M Offline
                                        Masterg 23
                                        schrieb am zuletzt editiert von 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 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

                                        708

                                        Online

                                        32.6k

                                        Benutzer

                                        82.2k

                                        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