Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. WARN im Log verhindern wenn getState null ist

    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

    WARN im Log verhindern wenn getState null ist

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

              var lastChange = getState("mysensors.0.192_168_178_87.0.8_DOOR.V_TRIPPED");
              if(lastChange.notExist !== true)
              {
      
      

      produziert

      javascript.0	2018-03-17 15:14:00.144	warn	at Object. (script.js.common.98_check_recent:25:26)
      javascript.0	2018-03-17 15:14:00.141	warn	getState "mysensors.0.192_168_178_87.0.8_DOOR.V_TRIPPED" not found (3) states[id]=null
      
      

      … Warum und wie kann ich das verhindern? Mein Script läuft alle 15 Sekunden und müllt den Log somit zu.

      Für einige Sensoren ist einfach noch kein Wert hinterlegt, weil diese sich noch nie gemeldet haben ..

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

        @cimba007:

        wie kann ich das verhindern? Mein Script läuft alle 15 Sekunden und müllt den Log somit zu. `
        Den State erzeugen, dann kommt die Warnung nur noch einmal.

        const id1 = "mysensors.0.192_168_178_87.0.8_DOOR.V_TRIPPED";
        if(getState(id1).notExist) setState(id1, 0);
        else {
           mache was
        }
        

        Alternativ können auch im Reiter "Objekte" Werte eingegeben werden, wenn nicht "write": false im Objekt angegeben ist.

        P 1 Reply Last reply Reply Quote 0
        • C
          cimba007 last edited by

          @paul53: Erstmal danke für den Tipp. Der Wert ist jedoch ready-only (mysensors).

          Wenn ich mit setState den gleichen Pfad angebe wird dieser unter javascript erzeugt und nicht im adapter mysensors. Bin recht neu bei iobroker und vllt. bin ich hier noch nicht ganz durchgestiegen warum ich mit getState von beliebigen Adaptern lesen kann, mit setState jedoch im javascript-adapter lande.

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

            @cimba007:

            warum ich mit getState von beliebigen Adaptern lesen kann, mit setState jedoch im javascript-adapter lande. `
            Es ist nicht so. Man kann mit setState(id, val) den Datenpunktwert in jedem Adapter setzen. Was man nicht kann, ist mittels createState(name) einen Datenpunkt in einem anderen Adpater erzeugen.

            Es gibt allerdings eine verkürzte Schreibweise für die ID in setState(id, val) und auch getState(id), bei der Datenpunkte innerhalb von javascript.N addressiert werden. Das ist der Fall, wenn die ID zwischen erstem und zweiten Punkt keine Zahl enthält.

            1 Reply Last reply Reply Quote 0
            • C
              cimba007 last edited by

              Habe jetzt die Variablen auf Schreibbar geändert und Werte gesetzt … schade, dass es nicht anders geht und man überall manuell eingreifen muss.

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

                @paul53: ich habe das gleiche Thema.

                Ziel: wenn ein Sensor den Wert des illuminance-dp mit "null" übergibt, dann schau dir den wert des illuminance_raw-dp anstelle davon an.

                (Vereinfachter) Vorschlag, der aber nicht funktioniert:

                const id1 = "alias.0.KG.Hobbyraum.Bewegungssensor1.illuminance";
                if(getState(id1).notExist) id1 = String(id1) + '_raw';
                //danach schaue wieder auf den Wert von id1 ...
                

                Habe ich hier nur einen Syntax-Fehler?

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

                  @ptr
                  Es gibt inzwischen die Funktion existsState(id).

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

                    @paul53: Funktioniert. Hervorragend. Danke.

                    var id1 = "alias.0.KG.KG-Flur.Bewegungssensor1.illuminance";
                    if (existsState(id1))
                     {
                      console.log('existiert');
                    } else {
                      id1 = String(id1) + '_raw';
                      console.log(id1);
                    }
                    
                    paul53 1 Reply Last reply Reply Quote 0
                    • paul53
                      paul53 @ptr last edited by

                      @ptr sagte: Funktioniert.

                      Mit .val?

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

                        @paul53 copy & paste Fehler. Habs im Code oben korrigiert.

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

                        Support us

                        ioBroker
                        Community Adapters
                        Donate

                        770
                        Online

                        31.9k
                        Users

                        80.1k
                        Topics

                        1.3m
                        Posts

                        3
                        10
                        2112
                        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