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. Wie warn-Meldungen bei nicht gesetztem Selector vermeiden

NEWS

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.3k

Wie warn-Meldungen bei nicht gesetztem Selector vermeiden

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
11 Beiträge 4 Kommentatoren 2.0k Aufrufe
  • Ä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.
  • A Offline
    A Offline
    AndyUM61
    schrieb am zuletzt editiert von
    #1

    Hallo,

    ich benutze zum zählen der eingeschalteten Lichter das hier schon mal veröffentlichte "LichterAn"-Script.

    Leider habe ich bei jedem Script-Aufruf Warnungen der Art:

    javascript.0	2016-09-24 20:46:09.870	warn	javascript.0 State "hm-rpc.2.CUX4000008.6.LEVEL" not found
    javascript.0	2016-09-24 20:46:09.870	warn	javascript.0 State "hm-rpc.2.CUX4000008.3.LEVEL" not found
    javascript.0	2016-09-24 20:46:09.869	warn	javascript.0 State "hm-rpc.2.CUX4000008.1.LEVEL" not found
    

    Die ID's und auch die entsprechenden States, also z.B. ".LEVEL", sind vorhanden, können aber irgendwie nicht gefunden werden.

    Wie kann ich die Warn-Meldungen vermeiden?

    Internette Grüße
    Andy

    RaspberryMatic (Raspberry Pi3), CUxD, ioBroker (Synology/ Docker)

    1 Antwort Letzte Antwort
    0
    • BluefoxB Offline
      BluefoxB Offline
      Bluefox
      schrieb am zuletzt editiert von
      #2

      @AndyUM61:

      Hallo,

      ich benutze zum zählen der eingeschalteten Lichter das hier schon mal veröffentlichte "LichterAn"-Script.

      Leider habe ich bei jedem Script-Aufruf Warnungen der Art:

      javascript.0	2016-09-24 20:46:09.870	warn	javascript.0 State "hm-rpc.2.CUX4000008.6.LEVEL" not found
      javascript.0	2016-09-24 20:46:09.870	warn	javascript.0 State "hm-rpc.2.CUX4000008.3.LEVEL" not found
      javascript.0	2016-09-24 20:46:09.869	warn	javascript.0 State "hm-rpc.2.CUX4000008.1.LEVEL" not found
      

      Die ID's und auch die entsprechenden States, also z.B. ".LEVEL", sind vorhanden, können aber irgendwie nicht gefunden werden.

      Wie kann ich die Warn-Meldungen vermeiden? `
      Kann es sein, dass für diese States noch nie ein Wert geliefert wurde?

      1 Antwort Letzte Antwort
      0
      • A Offline
        A Offline
        AndyUM61
        schrieb am zuletzt editiert von
        #3

        Ja, kann sein.

        Die Actoren werden derzeit nicht benutzt.

        Aber irgend wie müsste man das doch auch abfangen können.

        Internette Grüße
        Andy

        RaspberryMatic (Raspberry Pi3), CUxD, ioBroker (Synology/ Docker)

        1 Antwort Letzte Antwort
        0
        • paul53P Offline
          paul53P Offline
          paul53
          schrieb am zuletzt editiert von
          #4

          @AndyUM61:

          Die ID's und auch die entsprechenden States, also z.B. ".LEVEL", sind vorhanden, `
          Du meinst, dass die Datenpunktobjekte vorhanden sind. Die States (im Sinne von ioBroker: Zustände) sind noch nicht vorhanden, wenn diese Warnung kommt.
          @AndyUM61:

          Wie kann ich die Warn-Meldungen vermeiden? `
          Im Reiter "Zustände" einen Wert (0) eintragen.

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

          1 Antwort Letzte Antwort
          0
          • A Offline
            A Offline
            AndyUM61
            schrieb am zuletzt editiert von
            #5

            @paul53:

            Im Reiter "Zustände" einen Wert (0) eintragen. `

            Ähm, na ja, da soll ich also alle meine Actoren nach Nullen durchsuchen??

            Das kann ja nicht wirklich die Lösung sein!?

            Ich muss das doch Scrip-Technisch irgend wie abfangen können;)?

            Internette Grüße
            Andy

            RaspberryMatic (Raspberry Pi3), CUxD, ioBroker (Synology/ Docker)

            1 Antwort Letzte Antwort
            0
            • paul53P Offline
              paul53P Offline
              paul53
              schrieb am zuletzt editiert von
              #6

              @AndyUM61:

              Ich muss das doch Scrip-Technisch irgend wie abfangen können;)? `
              Ja, indem das Script so ergänzt wird, dass wenn getState(id) nicht existiert, mit setState(id, 0) der State erzeugt wird. Beispiel:

              if(!getState(id)) setState(id, 0);
              else {
                var x = getState(id).val;
              }
              

              Dann kommt die Warnung nur noch einmal.

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

              1 Antwort Letzte Antwort
              0
              • A Offline
                A Offline
                AndyUM61
                schrieb am zuletzt editiert von
                #7

                @paul53:

                if(!getState(id)) setState(id, 0);
                else {
                  var x = getState(id).val;
                }
                ```` `  
                

                Dann könnte ich ja auch gleich die Schleife mit

                if (!getState(id)) return;
                

                beenden.

                Aber leider funktioniert ja genau das - aus welchem Grund auch immer - eben NICHT.

                Internette Grüße
                Andy

                RaspberryMatic (Raspberry Pi3), CUxD, ioBroker (Synology/ Docker)

                1 Antwort Letzte Antwort
                0
                • paul53P Offline
                  paul53P Offline
                  paul53
                  schrieb am zuletzt editiert von
                  #8

                  @AndyUM61:

                  Dann könnte ich ja auch gleich die Schleife mit

                  if (!getState(id)) return;
                  

                  beenden. `
                  Eben nicht, da die Abfrage if(!getState(id)) die Warnung erzeugt, solange der State nicht gesetzt ist.

                  Bei meinem Vorschlag passiert dies nur noch genau einmal, weil bei Nichtexistenz der State erzeugt wird.

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

                  1 Antwort Letzte Antwort
                  0
                  • A Offline
                    A Offline
                    AndyUM61
                    schrieb am zuletzt editiert von
                    #9

                    Die warn-Meldung kommt trotzdem bei jedem Scriptaufruf.

                    Hier mal das komplette Script, vielleicht ist ja da trotzdem noch ein anderer Fehler.

                    createState('zählenLichter.anzahlLichter', 0);    // wenn benötigt: Anzahl der vorhandenen Lichter
                    createState('zählenLichter.anzahlLichterAn', 0);  // Anzahl der Lichter, die an sind als Variable unter Javascript.0 anlegen
                    
                    var cacheSelectorState  = $('channel[state.id=*.STATE](functions=Licht)');
                    var cacheSelectorDimmer = $('channel[state.id=*.LEVEL](functions=Licht)');
                    
                    function countLamps(obj) {
                        if (!obj) return;
                         // Setzt die Zähler vor dem Durchlauf aller Elemente *.STATE im Gewerk Licht auf 0
                        var anzahlLichterAn = 0;
                        var anzahlLichter = 0;
                    
                        //log('New state of ' + 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
                            if(!getState(id)) {setState(id, 0);} else {
                            var status = getState(id).val;                      // Zustand *.STATE abfragen (jedes Element)
                            }   
                            if (status === true) {++anzahlLichterAn}                // wenn Zustand = true, dann wird die ANzahl der Lichter hochgezählt
                            // log("Licht Nr. " + i + ": " + id + ": " + status);    // gibt alle Elemente *.STATE im Gewerk Licht mit dem aktuelle Status im Log aus
                            if (status != "undefined") {++anzahlLichter;}            // Zählt die Anzahl der vorhandenen Lichter unabhängig vom Status
                    
                        });
                        cacheSelectorDimmer.each(function (id, i) {  // Schleife für jedes gefundenen Element *.LEVEL im Gewerk Licht
                            if(!getState(id)) {setState(id, 0);} else {
                            var status = getState(id).val;                          // Zustand *.LEVEL abfragen (jedes Element)
                            }
                            if (parseFloat(status) > 0) {++anzahlLichterAn}                // wenn Zustand = true, dann wird die ANzahl der Lichter hochgezählt
                            // log("Licht Nr. " + i + ": " + id + ": " + status);    // gibt alle Elemente *.STATE im Gewerk Licht mit dem aktuelle Status im Log aus
                            if (status != "undefined") {++anzahlLichter;}            // 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("Anzahl Lichter: " + anzahlLichter + " # davon an: " + anzahlLichterAn);
                    
                        // die ermittelten Werte werden als javascript.0\. Variable in ioBroker gespeichert (z.B. für die Verarbeitung in VIS)
                        setState("zählenLichter.anzahlLichter", anzahlLichter);        // Schreibt die aktuelle Anzahl der vorhandene Elemente im Gewerk Licht
                        setState("zählenLichter.anzahlLichterAn", anzahlLichterAn);    // Schreibt die aktuelle Anzahl der eingeschalteten Lichter
                    }
                    
                    cacheSelectorState.on(function(obj) {    // bei Zustandänderung *. STATE im Gewerk Licht
                       countLamps(obj);
                    });
                    cacheSelectorDimmer.on(function(obj) {    // bei Zustandänderung *. LEVEL im Gewerk Licht
                       countLamps(obj);
                    });
                    

                    Internette Grüße
                    Andy

                    RaspberryMatic (Raspberry Pi3), CUxD, ioBroker (Synology/ Docker)

                    1 Antwort Letzte Antwort
                    0
                    • paul53P Offline
                      paul53P Offline
                      paul53
                      schrieb am zuletzt editiert von
                      #10

                      Man sollte boolsche Werte nicht mit 0 sondern mit false initialisieren:

                          cacheSelectorState.each(function (id, i) {                 // Schleife für jedes gefundenen Element *.STATE im Gewerk Licht
                              if(!getState(id)) setState(id, false);
                              else {
                              	var status = getState(id).val;                      // Zustand *.STATE abfragen (jedes Element)
                              	if (status === true) ++anzahlLichterAn;                 // wenn Zustand = true, dann wird die ANzahl der Lichter hochgezählt
                              	// log("Licht Nr. " + i + ": " + id + ": " + status);   // gibt alle Elemente *.STATE im Gewerk Licht mit dem aktuelle Status im Log aus
                              	++anzahlLichter;                                    // Zählt die Anzahl der vorhandenen Lichter unabhängig vom Status
                      	    }
                          });
                      
                      

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

                      1 Antwort Letzte Antwort
                      0
                      • D Offline
                        D Offline
                        dering
                        schrieb am zuletzt editiert von
                        #11

                        Das sollte die Lösung dafür sein oder?

                        http://forum.iobroker.net/viewtopic.php … 37#p130837

                        nur der vollständigkeithalber.

                        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

                        731

                        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