Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. Wie beim Selector keine EIntrag abfangen?

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    Wie beim Selector keine EIntrag abfangen?

    This topic has been deleted. Only users with topic management privileges can see it.
    • Ben1983
      Ben1983 last edited by Ben1983

      Hallo, ich habe folgendes Skript:
      Ändert sich der Feuchtigkeitswert eines Raumsensors, so wird der Raum geholt und eine Regelfunktion übergeben.
      Diese soll dann nachschauen, ob anhand des Soll-Istwert Vergleichs nachgeregelt werden soll (ist ein Zweipunktregler).
      Nun habe ich auch im Badezimmer einen Feuchtesensor (Script reagiert auf alle Sensoren).
      Aber dafür gib es keinen Sollwert.

      Also führt dies hier:

      const sollwert = $(`state(rooms=${idRoom})[role=${roleFeuchtesollwert}]`).getState(); 
      

      zu diesem Fehler:

      script.js.common.MobileMessungen.Raumfeuchteregelung: getState has been called with id of type "undefined" but expects a string
      

      kann ich nicht irgendwie abfangen, ob die Selectorfunktion etwas zurückgegeben hat?

      Edit?
      Erst alles mit der .toArray() funktion prüfen?

      Habe es jetzt so gelöst:

          // Zuerst ids als Array holen und wenn nichts zurück kommt, dann funktion mit return beenden.
          // (Kein Wert für den Raum vorhanden) 
          const sollwertArray = $(`state(rooms=${idRoom})[role=${roleFeuchtesollwert}]`).toArray();
          if(sollwertArray.length === 0){
              return;
          }
      
          const sollwert = getState(sollwertArray[0]).val;
      

      Oder hat jemand eine bessere Idee?

      T 1 Reply Last reply Reply Quote 0
      • T
        ticaki Developer @Ben1983 last edited by

        @ben1983

        keine Ahnung ob das "besser" ist oder obs geht. Mehr Auswahl schadet aber nicht.

        let sollwert = undefined;
        try {
          sollwert = $(`state(rooms=${idRoom})[role=${roleFeuchtesollwert}]`).getState();
        } catch {
          // nix
        }
        
        Ben1983 1 Reply Last reply Reply Quote 1
        • Ben1983
          Ben1983 @ticaki last edited by Ben1983

          @ticaki Danke, habe es mal so eingebaut.
          Ist kürzer und übersichtlicher.
          Wäre trotzdem schön, wenn man irgendwie über die Selektorfunktion herausfinden könnte, dass nichts verfügbar ist.
          Ich schreibe am Besten mal ein Issue 😉

          paul53 1 Reply Last reply Reply Quote 0
          • paul53
            paul53 @Ben1983 last edited by paul53

            @ben1983 sagte: über die Selektorfunktion herausfinden könnte, dass nichts verfügbar ist.

            const ids = $(`state(rooms=${idRoom})[role=${roleFeuchtesollwert}]`);
            if(ids.length) {}
            

            Der Selektor enthält das Attribut "length".

            Ben1983 1 Reply Last reply Reply Quote 0
            • Ben1983
              Ben1983 @paul53 last edited by

              @paul53 cool, ohne eine Funktion dahinter? Ok

              T 1 Reply Last reply Reply Quote 0
              • T
                ticaki Developer @Ben1983 last edited by ticaki

                @ben1983
                Ich benutze nie funktionen dahinter 😄 immer for (let i = 0 ... das toArray() wird aber jetzt immer hinzugefügt - dann geht for (const x of xxx)

                1 Reply Last reply Reply Quote 0
                • First post
                  Last post

                Support us

                ioBroker
                Community Adapters
                Donate

                891
                Online

                31.9k
                Users

                80.1k
                Topics

                1.3m
                Posts

                3
                6
                187
                Loading More Posts
                • Oldest to Newest
                • Newest to Oldest
                • Most Votes
                Reply
                • Reply as topic
                Log in to reply
                Community
                Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                The ioBroker Community 2014-2023
                logo