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.5k

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

  • 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.
  • 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

                      674

                      Online

                      32.6k

                      Benutzer

                      82.3k

                      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