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. [gelöst] Lichter zählen Script läuft nicht

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.6k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    2.1k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    16
    1
    2.8k

[gelöst] Lichter zählen Script läuft nicht

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
156 Beiträge 33 Kommentatoren 29.4k Aufrufe 6 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.
  • T Offline
    T Offline
    tempestas
    schrieb am zuletzt editiert von
    #35

    Screenshots wären schön, dann kann man gezielter schauen.

    Screens bitte im Forum hochladen, nicht bei externen Anbietern

    <size="85">ioBroker | 21 Adapter | Ubuntu Server | intel NUC | Homematic CCU2 | Hue | Osram Lightify| Sonos | 2x Instar Cam | Samsung Tab A 2016 im Holzrahmen| 3x Echo dot | 1x Echo | Neato Botvac D5</size>

    1 Antwort Letzte Antwort
    0
    • HomoranH Nicht stören
      HomoranH Nicht stören
      Homoran
      Global Moderator Administrators
      schrieb am zuletzt editiert von
      #36

      @Matthias I:

      Dort steht bei allen Rollläden unter Rolle ausschließlich "blind"!

      In der CCU2 habe ich das nochmals überprüft, kein Rollladen ist dem Gewerk "Licht" zugeordnet. `

      Was hat Licht mit blind zu tun?

      Und Rollen sind nicht Gewerke.

      Was möchtest du genau wissen/erreichen??

      Gruß

      Rainer

      kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

      Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

      der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

      1 Antwort Letzte Antwort
      0
      • T Offline
        T Offline
        tempestas
        schrieb am zuletzt editiert von
        #37

        Hallo Rainer,

        er hat das Problem (gehabt), dass seine Rolläden als Lichter gezählt wurden. Daher war meine Vermutung, scheinbar zu Recht, dass seine Rolläden zunächst dem Gewker Licht zugeordnet waren (denn dieses wird ja im Skript geprüft).

        Die Frage ist nun, ob sie in ioB wirklich auch nicht mehr als "Licht" ankommen. Daher wollte ich Screens sehen.

        Ich vermute mal, ein einfacher Restart der rpc und rega Adapter dürfte das Problem lösen.

        Edit: wurden wohl schon neugestartet, wobei unklar ist, welche Instanzen als "betroffen" eingeschättz wurden. Ich rate weiter, dass dnur RPC und nicht REGA Adapter neu gestartet wurden und daher die Rollos noch immer als "Licht" laufen

        <size="85">ioBroker | 21 Adapter | Ubuntu Server | intel NUC | Homematic CCU2 | Hue | Osram Lightify| Sonos | 2x Instar Cam | Samsung Tab A 2016 im Holzrahmen| 3x Echo dot | 1x Echo | Neato Botvac D5</size>

        1 Antwort Letzte Antwort
        0
        • HomoranH Nicht stören
          HomoranH Nicht stören
          Homoran
          Global Moderator Administrators
          schrieb am zuletzt editiert von
          #38

          Das ist aber doch im (verborgenen) Reiter Aufzählungen zu suchen, oder?

          Gruß

          Rainer

          kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

          Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

          der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

          1 Antwort Letzte Antwort
          0
          • M Offline
            M Offline
            Matthias I
            schrieb am zuletzt editiert von
            #39

            Ich habe beide Adapter bereits neu gestartet.

            Leider ohne Erfolg.

            Ich mache morgen einige Screenshots. Welche Screenshots bräuchtet ihr denn?

            Liebe Grüße

            Matthias

            1 Antwort Letzte Antwort
            0
            • T Offline
              T Offline
              tempestas
              schrieb am zuletzt editiert von
              #40

              Screen vom Reiter "Aufzählungen" mit "enum.functions" geöffnet wäre schonmal gut.

              Eventuell musst du diesen Reiter erst sichtbar machen. Dazu rechts auf den Stift klicken und dann bei "zeige" den Reiter aktivieren

              <size="85">ioBroker | 21 Adapter | Ubuntu Server | intel NUC | Homematic CCU2 | Hue | Osram Lightify| Sonos | 2x Instar Cam | Samsung Tab A 2016 im Holzrahmen| 3x Echo dot | 1x Echo | Neato Botvac D5</size>

              1 Antwort Letzte Antwort
              0
              • M Offline
                M Offline
                Matthias I
                schrieb am zuletzt editiert von
                #41

                Hier also wie versprochen die Screenshots ;-)

                4453_objekte.jpg
                4453_aufz_hlungen.jpg

                Wenn ich den Reiter "Objekte" öffne und bei "Funktion" anschließend "Licht" auswähle werden leider alle Rollladen weiterhin neben den Lichtern aufgezählt.

                Kann ich bei den Rollladen einfach jeweils rechts auf den Mülleimer klicken um diese aus "Licht" zu löschen oder lösche ich diese dann komplett und mache mir somit die restliche Steuerung kaputt?

                Gruß

                Matthias

                1 Antwort Letzte Antwort
                0
                • HomoranH Nicht stören
                  HomoranH Nicht stören
                  Homoran
                  Global Moderator Administrators
                  schrieb am zuletzt editiert von
                  #42

                  Die Aufzählungen sind wahrscheinlich leider schon in der CCU defekt.

                  Bitte dort unter Einstellungen - Gewerke die Liste öffnen und wieder schließen.

                  Anschließend den hm-rega restarten und dann nochmal in die Aufzählungen sehen.

                  Gruß

                  Rainer

                  kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

                  Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                  der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

                  1 Antwort Letzte Antwort
                  0
                  • M Offline
                    M Offline
                    Matthias I
                    schrieb am zuletzt editiert von
                    #43

                    Hallo Rainer,

                    danke für die schnelle Antwort. Leider hat das den Fehler nicht behoben.

                    Interessant finde ich, dass es bei den Aufzählungen auch "Licht1" gibt und dort bei Mitglieder "21" steht.

                    Das müsste stimmen, da ich 16 Rollladen verbaut habe und das genau die Differenz zu den "37" bei "Licht" erklären würde!

                    Kann es sein, dass sich das Skript mit einem anderen "beißt"?

                    Ich habe noch ein anderes Skript am laufen, welches ich ebenfalls hier gefunden habe und alles mögliche zählt. (Das Skript heißt "Counter", zählt aber leider nur die Dimmer und nicht Dimmer und Lampen weshalb ich ein weiteres Skript zum zählen den eingeschalteten Lampen UND Dimmer brauchte und dann dieses hier geunden habe).

                    Gruß

                    Matthias

                    1 Antwort Letzte Antwort
                    0
                    • HomoranH Nicht stören
                      HomoranH Nicht stören
                      Homoran
                      Global Moderator Administrators
                      schrieb am zuletzt editiert von
                      #44

                      Wie sehen denn jetzt die Aufzählungen aus?

                      Gruß

                      Rainer

                      kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

                      Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                      der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

                      1 Antwort Letzte Antwort
                      0
                      • M Offline
                        M Offline
                        Matthias I
                        schrieb am zuletzt editiert von
                        #45

                        Lieber Rainer,

                        ich habe das Problem lösen können!!!

                        Hatte das Gewerk "Licht" einmal in "Licht1" umbenannt (wie zu sehen war, wurde dann ja richtig gezählt).

                        Ich war so mutig und habe die Aufzählungen "Licht" und "Licht1" beide gelöscht und anschließend hm-rega einmal neu gestartet.

                        Jetzt klappt alles genauso wie es soll!

                        Nochmals vielen Dank an dich und alle anderen die mitgeholfen haben!!!

                        Das war klasse!!!

                        Gruß

                        Matthias

                        1 Antwort Letzte Antwort
                        0
                        • J Offline
                          J Offline
                          jerzimeik
                          schrieb am zuletzt editiert von
                          #46

                          Hallo zusammen,

                          vielen Dank vorab für das Script.

                          Ich habe nur ein paar Probleme damit:

                          Meine Hue-Lampen werden alle gezählt, ob in der Gruppe oder einzeln. Ich habe aber nur den Gruppen die entsprechende Funktion zugeordnet?!?

                          Dann gibt er mir bei den Räumen immer das "Esszimmer" mit dazu, egal ob da eine Lampe leuchtet oder nicht?!?

                          Und nach einiger Zeit kommt er mit dem Zählen nicht mehr klar und zählt völlig durcheinander?!?

                          (Screenshots anbei)

                          Was muss ich machen?
                          5356_hue-iobroker.png
                          5356_hue-iobroker2.png

                          1 Antwort Letzte Antwort
                          0
                          • wendy2702W Online
                            wendy2702W Online
                            wendy2702
                            schrieb am zuletzt editiert von
                            #47

                            Was steht den bei dir unter Aufzählungen –> Functions --> Licht ?

                            Bitte keine Fragen per PN, die gehören ins Forum!

                            Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                            1 Antwort Letzte Antwort
                            0
                            • BuZZyB Offline
                              BuZZyB Offline
                              BuZZy
                              schrieb am zuletzt editiert von
                              #48

                              @coyote:

                              Ok, aber ich hatte gestern ja nicht nur den Namen unter enum.functions geändert, sondern auch vorne die ID von "licht" in "Licht geändert, brachte aber keinen Erfolg. `
                              Wenn die IDs/Namen der enums geändert werden, muss der Javascript Adapter neu gestartet werden damit die Änderung wirksam wird.

                              Gruß

                              1 Antwort Letzte Antwort
                              0
                              • J Offline
                                J Offline
                                jerzimeik
                                schrieb am zuletzt editiert von
                                #49

                                Unter den Aufzählungen stehen auch nur die Lampen bzw Gruppen drin, denen ich das zugeordnet habe. Passt also.

                                1 Antwort Letzte Antwort
                                0
                                • wendy2702W Online
                                  wendy2702W Online
                                  wendy2702
                                  schrieb am zuletzt editiert von
                                  #50

                                  Tja,

                                  ohne Screenshots deiner Einstellungen unter den Aufzählungen wird es etwas schwierig.

                                  Mir fällt nur z.B. auf das dein Gewerk für Esszimmer "licht" heißt, das Script aber wenn man es nicht ändert ein "Licht" mit großem "L" benötigt.

                                  Hast du deine HUE Lampen doppelt eingetragen, einmal einzeln und einmal als Gruppe?

                                  So verstehe ich diesen Satz zumindest:

                                  > Meine Hue-Lampen werden alle gezählt, ob in der Gruppe oder einzeln. Ich habe aber nur den Gruppen die entsprechende Funktion zugeordnet?!?

                                  Bitte keine Fragen per PN, die gehören ins Forum!

                                  Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                                  1 Antwort Letzte Antwort
                                  0
                                  • J Offline
                                    J Offline
                                    jerzimeik
                                    schrieb am zuletzt editiert von
                                    #51

                                    Anbei mal meine Einstellungen inkl. Script

                                    /* Status Zahl Lichter
                                    
                                    zählt die Lichter in allen Räumen und meldet die Eingeschalteten namentlich
                                    Daten kommen vom Gewerk "Licht"
                                    
                                    erstellt: 17.06.2015 nach diesem Vorbild: viewtopic.php?f=21&t=869&sid=f9ba5657489ff431a1990884f90779c1#p6564
                                    23.06.2015 globale Variablendefinition zählen_Lichter.textLichterAn fehlte und wurde hinzugefügt
                                    Log Ausgabe auskommentiert
                                    05.08.2015 STATE aus der Ausgabe entfernt nach Idee von stephan61 http://forum.iobroker.org/viewtopic.php ... t=20#p9267
                                    24.03.2016 keine Anzeigen von virtuellen Kanälen mehr (in Abhängigkeit der Abfrage des Namens)
                                    06.05.2016 Datenpunkt für Ansagen zugefügt
                                    02.07.2016 abgeschaltet, da Fehler
                                    03.07.2016 Zähl-Funktion getrennt nach Schalter und Dimmer
                                    search statt indexOf und RegEx für Suche nach Virtuellen Kanälen
                                    27.11.2016 Verschoben in Status
                                    Code optimiert
                                    23.12.2016 Räume eingebaut
                                    */
                                    var logging = true;
                                    
                                    var idAnzahlEin = 'javascript.0.Status.Lichter.Anzahl_ein',
                                    idAnzahl = 'javascript.0.Status.Lichter.Anzahl',
                                    idText = 'javascript.0.Status.Lichter.Text',
                                    idRaum = 'javascript.0.Status.Lichter.Raum', // <---- NEU
                                    idAnsage = 'javascript.0.Status.Lichter.Ansage';
                                    
                                    // Ab hier nix mehr ändern
                                    createState(idAnzahl, { // wenn benötigt: Anzahl der vorhandenen Lichter
                                    type: 'number',
                                    name: 'Anzahl aller Lichter',
                                    min: 0,
                                    def: 0,
                                    role: 'value'
                                    });
                                    createState(idAnzahlEin, { // Anzahl der Lichter, die auf sind als Variable unter Javascript.0 anlegen
                                    type: 'number',
                                    name: 'Anzahl der eingeschalteten Lichter',
                                    min: 0,
                                    def: 0,
                                    role: 'value'
                                    });
                                    createState(idText, { // Anzahl der brennenden Lichter und deren Namen als Variable unter Javascript.0 anlegen
                                    type: 'string',
                                    name: 'Eingeschaltete Lichter',
                                    desc: 'Namen der eingeschalteten Lichter',
                                    def: ' ',
                                    role: 'value'
                                    });
                                    createState(idAnsage, {
                                    type: 'string',
                                    name: 'Eingeschaltete Lichter (Ansage)',
                                    desc: 'Namen der eingeschalteten Lichter (für Ansage aufbereitet)',
                                    def: ' ',
                                    role: 'value'
                                    });
                                    createState(idRaum, { // Räume, in denen Lichter brennen // <---- NEU
                                    type: 'string',
                                    name: 'Räume mit eingeschalteten Lichter',
                                    desc: 'Namen der Räume, in denen Lichter eingeschaltet sind',
                                    def: ' ',
                                    role: 'value'
                                    });
                                    
                                    var cacheSelectorState = $('channel[state.id=*.state](functions="licht")'); // Gewerk Licht
                                    var cacheSelectorLevel = $('channel[state.id=*.level](functions="licht")');
                                    
                                    var cacheSelectorHue = $('channel[state.id=*.on](functions="licht")'); // HUE Lampen (müssen im Gewerk Licht sein)
                                    
                                    //var cacheSelectorHue = $('state[id=*.on](functions=Licht)');
                                    
                                    function checkDevices(obj) {
                                    // Setzt die Zähler vor dem Durchlauf aller Elemente *.STATE im Gewerk Licht auf 0
                                    var anzahlLichterAn = 0;
                                    var anzahlLichter = 0;
                                    var textLichterAn = [];
                                    var textRaum = [];
                                    
                                    if (logging) {
                                    log('++++++ Lichter Anzahl ++++ ');
                                    log('#### SCHALTER ##### ');
                                    }
                                    cacheSelectorState.each(function (id, i) { // Schleife für jedes gefundenen Element *.STATE im Gewerk Licht
                                    var obj = getObject(id);
                                    var name = getObject(id).common.name;
                                    var status = getState(id).val; // Zustand *.STATE abfragen (jedes Element)
                                    var devicename = name.substring(0, name.indexOf(".STATE")); //.state aus Text entfernen
                                    var raumname = getObject(id, "rooms"); // <---- NEU
                                    
                                    // ########## Abfrage ob Virtueller Kanal? VK oder : im Namen)
                                    // if ( (devicename.search(/(CUX)|(K2)|(K3)|(VK)|(:)/ig) == -1) ) { 
                                    /*
                                    if (logging) {
                                    log('-------');
                                    log('Kanal: ' + name);
                                    log('Status: ' + status); 
                                    }
                                    */
                                    
                                    if (status) { // wenn Zustand = true, dann wird die ANzahl der Lichter hochgezählt
                                    ++anzahlLichterAn; 
                                    textLichterAn.push(devicename); // Zu Array hinzufügen
                                    textRaum.push(raumname.enumNames); // <---- NEU
                                    }
                                    ++anzahlLichter; // Zählt die Anzahl der vorhandenen Lichter unabhängig vom Status
                                    // } // ENDE VK-Abfrage
                                    
                                    });
                                    
                                    if (logging) log('#### DIMMER ##### ');
                                    cacheSelectorLevel.each(function (id, i) { // Schleife für jedes gefundenen Element *.LEVEL im Gewerk Licht
                                    var obj = getObject(id);
                                    var name = getObject(id).common.name;
                                    var status = getState(id).val; // Zustand *.LEVEL abfragen (jedes Element)
                                    var devicename = name.substring(0, name.indexOf(".LEVEL")); //.state aus Text entfernen
                                    var raumname = getObject(id, "rooms"); // <---- NEU
                                    
                                    // ########## Abfrage ob Virtueller Kanal? VK oder : im Namen)
                                    // if ( (devicename.search(/(CUX)|(K2)|(K3)|(V10)|(VK)|(:)/ig) == -1) ) { // Geräte mit diesen Strings im namen nicht beachten
                                    /*
                                    if (logging) {
                                    log('-------');
                                    log('Kanal: ' + name);
                                    log('Status: ' + status + '%'); 
                                    }
                                    */
                                    
                                    if (parseFloat(status) > 0) { // Wenn Dimmwert über 0
                                    ++anzahlLichterAn; 
                                    textLichterAn.push(devicename); // Zu Array hinzufügen
                                    textRaum.push(raumname.enumNames); // <---- NEU
                                    }
                                    ++anzahlLichter; // Zählt die Anzahl der vorhandenen Lichter unabhängig vom Status
                                    // } // Ende Abfrage VK 
                                    
                                    }); 
                                    
                                    // Array mit Lichternamen sortieren
                                    textLichterAn.sort();
                                    textRaum.sort(); // <---- NEU
                                    // Schleife ist durchlaufen. Im Log wird der aktuelle Status (Anzahl, davon an) ausgegeben
                                    if (logging) log("Text: " + textLichterAn);
                                    if (logging) log("Anzahl Lichter: " + anzahlLichter + " # davon Lichter an: " + anzahlLichterAn);
                                    // die ermittelten Werte werden als javascript.0\. Variable in ioBroker gespeichert (z.B. für die Verarbeitung in VIS)
                                    setState(idText, textLichterAn.join(',
                                    ')); // Schreibt die aktuelle Namen der eingeschalteten Lichter
                                    setState(idAnzahlEin, textLichterAn.length); // Schreibt die aktuelle Anzahl der eingeschalteten Lichter
                                    setState(idAnzahl, anzahlLichter); // Schreibt die aktuelle Anzahl der vorhandene Elemente im Gewerk Licht
                                    // setState(idRaum, textRaum.join(',
                                    ')); // Räume, in denen Licht brennt // <---- NEU
                                    setState(idRaum, textRaum.join(', ')); // Räume, in denen Licht brennt // <---- NEU
                                    }
                                    
                                    // Trigger
                                    cacheSelectorState.on(function(obj) { // bei Zustandänderung *.STATE im Gewerk Licht
                                    if (logging) log('Auslösender Schalter: ' + obj.id + ': ' + obj.state.val); // Info im Log, welcher Zustand sich geändert hat
                                    checkDevices();
                                    });
                                    cacheSelectorLevel.on(function(obj) { // bei Zustandänderung *.LEVEL im Gewerk Licht
                                    if (logging) log('Auslösender Dimmer: ' + obj.id + ': ' + obj.state.val); // Info im Log, welcher Zustand sich geändert hat
                                    checkDevices();
                                    });
                                    
                                    function main() {
                                    setTimeout(function(){
                                    if (logging) log('Auslöser Skriptstart');
                                    checkDevices();
                                    }, 2000);
                                    }
                                    
                                    main(); // Skriptstart-Auslöser
                                    
                                    // Aufbereitung für Ansage
                                    function strip_tags(data) {
                                    var rueckgabe = data.replace(/( |<([^>]+)>)/ig, " ");
                                    return(rueckgabe);
                                    }
                                    
                                    on(idText, function (obj) {
                                    var text = obj.state.val;
                                    text = (getState(idAnzahl).val > 0 ) ? 'Lichter eingeschaltet: ' + strip_tags(text) : 'Alle Lichter sind ausgeschaltet';
                                    setState(idAnsage, text);
                                    });
                                    

                                    5356_hue1.png
                                    5356_hue2.png
                                    5356_hue3.png

                                    1 Antwort Letzte Antwort
                                    0
                                    • wendy2702W Online
                                      wendy2702W Online
                                      wendy2702
                                      schrieb am zuletzt editiert von
                                      #52

                                      Brauchst du die zweite Aufzählung "func.light"?

                                      Wenn nicht würde ich die erstmal löschen da die Lampen eh doppelt drin stehen.

                                      Desweiteren muss für HUE der Datenpunkt "on" in den Aufzählungen gewählt werden.

                                      Z.B. so:

                                      999_hue_on.jpg

                                      Bitte keine Fragen per PN, die gehören ins Forum!

                                      Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                                      1 Antwort Letzte Antwort
                                      0
                                      • J Offline
                                        J Offline
                                        jerzimeik
                                        schrieb am zuletzt editiert von
                                        #53

                                        Sind die nicht automatisch mit drin, wenn ich bei dem "Ordner" das setze?
                                        5356_hue4.png

                                        1 Antwort Letzte Antwort
                                        0
                                        • wendy2702W Online
                                          wendy2702W Online
                                          wendy2702
                                          schrieb am zuletzt editiert von
                                          #54

                                          Sieht so aus, ich habe bei mir den "on" gewählt.

                                          Hast du das in deinem Script berücksichtigt:

                                          @Nikoxx:

                                          Also mir hat das keine Ruhe gelassen das es nicht richtig funktioniert hat. Bei mir hat er nämlich auch alle Lampen und Gruppen gezählt und stellenweise eine Fehlermeldung ausgegeben.

                                          Hab ein wenig rumprobiert und bei mir funktioniert bis jetzt folgendes ohne fehlermeldung und er zählt nur die Lampen aus dem Gewerk Licht.

                                          var cacheSelectorHue = $('state[id=*.on](functions=Licht)');
                                          

                                          Vieleicht kann das mal jemand anderes ausprobieren. Glaube der Fehler lag bei dem Typ Channel. Die Hue´s im Gewerk sind aber vom Typ "state". Nachdem ich das korrigiert habe scheint es zu funktionieren.

                                          Edit:

                                          Gerade ausprobiert, funktioniert auch mit "level".

                                          var cacheSelectorLevel =$('state[id=*.level](functions=Licht)');
                                          ```` `  
                                          

                                          Steht ein paar Posts vorher auch für den "on" state.

                                          Hier mal mein script wie es bei mir läuft: Mein Gewerk heißt allerding "LICHT"

                                          ! ````
                                          /* Status Zahl Lichter
                                          ! zählt die Lichter in allen Räumen und meldet die Eingeschalteten namentlich
                                          Daten kommen vom Gewerk "Licht"
                                          ! erstellt: 17.06.2015 nach diesem Vorbild: viewtopic.php?f=21&t=869&sid=f9ba5657489ff431a1990884f90779c1#p6564
                                          23.06.2015 globale Variablendefinition zählen_Lichter.textLichterAn fehlte und wurde hinzugefügt
                                          Log Ausgabe auskommentiert
                                          05.08.2015 STATE aus der Ausgabe entfernt nach Idee von stephan61 http://forum.iobroker.org/viewtopic.php ... t=20#p9267
                                          24.03.2016 keine Anzeigen von virtuellen Kanälen mehr (in Abhängigkeit der Abfrage des Namens)
                                          06.05.2016 Datenpunkt für Ansagen zugefügt
                                          02.07.2016 abgeschaltet, da Fehler
                                          03.07.2016 Zähl-Funktion getrennt nach Schalter und Dimmer
                                          search statt indexOf und RegEx für Suche nach Virtuellen Kanälen
                                          27.11.2016 Verschoben in Status
                                          Code optimiert
                                          23.12.2016 Räume eingebaut
                                          21.06.2017 HUE Lampen eingebaut
                                          */
                                          var logging = true;
                                          ! var idAnzahlEin = 'javascript.0.Status.Lichter.Anzahl_ein',
                                          idAnzahl = 'javascript.0.Status.Lichter.Anzahl',
                                          idText = 'javascript.0.Status.Lichter.Text',
                                          idRaum = 'javascript.0.Status.Lichter.Raum', // <---- NEU
                                          idAnsage = 'javascript.0.Status.Lichter.Ansage';
                                          ! // Ab hier nix mehr ändern
                                          createState(idAnzahl, { // wenn benötigt: Anzahl der vorhandenen Lichter
                                          type: 'number',
                                          name: 'Anzahl aller Lichter',
                                          min: 0,
                                          def: 0,
                                          role: 'value'
                                          });
                                          createState(idAnzahlEin, { // Anzahl der Lichter, die auf sind als Variable unter Javascript.0 anlegen
                                          type: 'number',
                                          name: 'Anzahl der eingeschalteten Lichter',
                                          min: 0,
                                          def: 0,
                                          role: 'value'
                                          });
                                          createState(idText, { // Anzahl der brennenden Lichter und deren Namen als Variable unter Javascript.0 anlegen
                                          type: 'string',
                                          name: 'Eingeschaltete Lichter',
                                          desc: 'Namen der eingeschalteten Lichter',
                                          def: ' ',
                                          role: 'value'
                                          });
                                          createState(idAnsage, {
                                          type: 'string',
                                          name: 'Eingeschaltete Lichter (Ansage)',
                                          desc: 'Namen der eingeschalteten Lichter (für Ansage aufbereitet)',
                                          def: ' ',
                                          role: 'value'
                                          });
                                          createState(idRaum, { // Räume, in denen Lichter brennen // <---- NEU
                                          type: 'string',
                                          name: 'Räume mit eingeschalteten Lichter',
                                          desc: 'Namen der Räume, in denen Lichter eingeschaltet sind',
                                          def: ' ',
                                          role: 'value'
                                          });
                                          ! var cacheSelectorState = $('channelstate.id=*.STATE'); // Gewerk Licht
                                          var cacheSelectorLevel = $('channelstate.id=*.LEVEL');
                                          //var cacheSelectorHue = $('channelstate.id=*.ON'); // HUE Lampen (müssen im Gewerk Licht sein)
                                          var cacheSelectorHue = $('stateid=*.on');
                                          ! function checkDevices(obj) {
                                          // Setzt die Zähler vor dem Durchlauf aller Elemente *.STATE im Gewerk Licht auf 0
                                          var anzahlLichterAn = 0;
                                          var anzahlLichter = 0;
                                          var textLichterAn = [];
                                          var textRaum = [];
                                          if (logging) {
                                          log('++++++ Lichter Anzahl ++++ ');
                                          log('#### SCHALTER ##### ');
                                          }
                                          cacheSelectorState.each(function(id, i) { // Schleife für jedes gefundenen Element *.STATE im Gewerk Licht
                                          var obj = getObject(id);
                                          var name = getObject(id).common.name;
                                          var status = getState(id).val; // Zustand *.STATE abfragen (jedes Element)
                                          var devicename = name.substring(0, name.indexOf(".STATE")); //.state aus Text entfernen
                                          var raumname = getObject(id, "rooms"); // <---- NEU
                                          ! // ########## Abfrage ob Virtueller Kanal? VK oder : im Namen)
                                          // if ( (devicename.search(/(CUX)|(K2)|(K3)|(VK)|(:)/ig) == -1) ) {
                                          if (logging) {
                                          log('-------');
                                          log('Kanal: ' + name);
                                          log('Status: ' + status);
                                          }
                                          if (status) { // wenn Zustand = true, dann wird die Anzahl der Lichter hochgezählt
                                          ++anzahlLichterAn;
                                          textLichterAn.push(devicename); // Zu Array hinzufügen
                                          textRaum.push(raumname.enumNames); // <---- NEU
                                          }
                                          ++anzahlLichter; // Zählt die Anzahl der vorhandenen Lichter unabhängig vom Status
                                          // } // ENDE VK-Abfrage
                                          });

                                          cacheSelectorHue.each(function(id, i) { // Schleife für jedes gefundenen Element *.ON im Gewerk Licht
                                              var obj = getObject(id);
                                              var name = getObject(id).common.name;
                                              var status = getState(id).val; // Zustand *.ON abfragen (jedes Element)
                                              var devicename = name.substring(0, name.indexOf(".on")); //.state aus Text entfernen
                                              var raumname = getObject(id, "rooms"); // <---- NEU
                                          

                                          ! // ########## Abfrage ob Virtueller Kanal? VK oder : im Namen)
                                          // if ( (devicename.search(/(CUX)|(K2)|(K3)|(VK)|(:)/ig) == -1) ) {
                                          if (logging) {
                                          log('-------');
                                          log('Kanal: ' + name);
                                          log('Status: ' + status);
                                          }
                                          if (status) { // wenn Zustand = true, dann wird die Anzahl der Lichter hochgezählt
                                          ++anzahlLichterAn;
                                          textLichterAn.push(devicename); // Zu Array hinzufügen
                                          textRaum.push(raumname.enumNames); // <---- NEU
                                          }
                                          ++anzahlLichter; // Zählt die Anzahl der vorhandenen Lichter unabhängig vom Status
                                          // } // ENDE VK-Abfrage
                                          });
                                          ! if (logging) log('#### DIMMER ##### ');
                                          cacheSelectorLevel.each(function(id, i) { // Schleife für jedes gefundenen Element *.LEVEL im Gewerk Licht
                                          var obj = getObject(id);
                                          var name = getObject(id).common.name;
                                          var status = getState(id).val; // Zustand *.LEVEL abfragen (jedes Element)
                                          var devicename = name.substring(0, name.indexOf(".LEVEL")); //.state aus Text entfernen
                                          var raumname = getObject(id, "rooms"); // <---- NEU
                                          ! // ########## Abfrage ob Virtueller Kanal? VK oder : im Namen)
                                          // if ( (devicename.search(/(CUX)|(K2)|(K3)|(V10)|(VK)|(:)/ig) == -1) ) { // Geräte mit diesen Strings im namen nicht beachten
                                          ! if (logging) {
                                          log('-------');
                                          log('Kanal: ' + name);
                                          log('Status: ' + status + '%');
                                          }
                                          if (parseFloat(status) > 0) { // Wenn Dimmwert über 0
                                          ++anzahlLichterAn;
                                          textLichterAn.push(devicename); // Zu Array hinzufügen
                                          textRaum.push(raumname.enumNames); // <---- NEU
                                          }
                                          ++anzahlLichter; // Zählt die Anzahl der vorhandenen Lichter unabhängig vom Status
                                          // } // Ende Abfrage VK
                                          });
                                          ! // Array mit Lichternamen sortieren
                                          textLichterAn.sort();
                                          textRaum.sort(); // <---- NEU
                                          // Schleife ist durchlaufen. Im Log wird der aktuelle Status (Anzahl, davon an) ausgegeben
                                          if (logging) log("Text: " + textLichterAn);
                                          if (logging) log("Anzahl Lichter: " + anzahlLichter + " # davon Lichter an: " + anzahlLichterAn);
                                          // die ermittelten Werte werden als javascript.0. Variable in ioBroker gespeichert (z.B. für die Verarbeitung in VIS)
                                          setState(idText, textLichterAn.join(',
                                          ')); // Schreibt die aktuelle Namen der eingeschalteten Lichter
                                          setState(idAnzahlEin, textLichterAn.length); // Schreibt die aktuelle Anzahl der eingeschalteten Lichter
                                          setState(idAnzahl, anzahlLichter); // Schreibt die aktuelle Anzahl der vorhandene Elemente im Gewerk Licht
                                          // setState(idRaum, textRaum.join(',
                                          ')); // Räume, in denen Licht brennt // <---- NEU
                                          setState(idRaum, textRaum.join(', ')); // Räume, in denen Licht brennt // <---- NEU
                                          }
                                          ! // Trigger
                                          cacheSelectorState.on(function(obj) { // bei Zustandänderung *.STATE im Gewerk Licht
                                          if (logging) log('Auslösender Schalter: ' + obj.id + ': ' + obj.state.val); // Info im Log, welcher Zustand sich geändert hat
                                          checkDevices();
                                          });
                                          cacheSelectorHue.on(function(obj) { // bei Zustandänderung *.ON von HUE Lampen im Gewerk Licht
                                          if (logging) log('Auslösende HUE: ' + obj.id + ': ' + obj.state.val); // Info im Log, welcher Zustand sich geändert hat
                                          checkDevices();
                                          });
                                          cacheSelectorLevel.on(function(obj) { // bei Zustandänderung *.LEVEL im Gewerk Licht
                                          if (logging) log('Auslösender Dimmer: ' + obj.id + ': ' + obj.state.val); // Info im Log, welcher Zustand sich geändert hat
                                          checkDevices();
                                          });
                                          ! function main() {
                                          setTimeout(function() {
                                          if (logging) log('Auslöser Skriptstart');
                                          checkDevices();
                                          }, 2000);
                                          }
                                          ! main(); // Skriptstart-Auslöser
                                          ! // Aufbereitung für Ansage
                                          function strip_tags(data) {
                                          var rueckgabe = data.replace(/( |<([^>]+)>)/ig, " ");
                                          return (rueckgabe);
                                          }
                                          ! on(idText, function(obj) {
                                          var text = obj.state.val;
                                          text = (getState(idAnzahl).val > 0) ? 'Lichter eingeschaltet: ' + strip_tags(text) : 'Alle Lichter sind ausgeschaltet';
                                          setState(idAnsage, text);
                                          });

                                          Bitte keine Fragen per PN, die gehören ins Forum!

                                          Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                                          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

                                          557

                                          Online

                                          32.4k

                                          Benutzer

                                          81.5k

                                          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