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 erkenne ich ob ein SetState erfolgreich war?

    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 erkenne ich ob ein SetState erfolgreich war?

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

      Hallo zusammen!

      Mein Problem: Ich möchte binnen 1-2s nachdem ein Gerät nicht mehr da ist (Strom weg, kaputt, was auch immer) reagieren können.
      Jedoch habe ich keinen Weg gefunden um zu erfahren ob ein Gerät JETZT GERADE tatsächlich da ist.

      <Gerät>.AVAILABLE ist zwar nett, aber braucht zu lange für ein Update.
      Auch ein <Gerät>.DEVICE_QUERY geht nicht häufig genug und ich hätte so 10s Verzögerung.

      TL;DR: Wie ermittle ich ob ein Gerät JETZT AKTUELL verfügbar ist?

      Danke im Voraus!

      P mickym paul53 F 4 Replies Last reply Reply Quote 0
      • P
        peterfido @Kodijack last edited by

        @kodijack
        Wenn es anpingbar ist, dann z.B. mit dem ping-adapter.

        Kodijack 1 Reply Last reply Reply Quote 0
        • mickym
          mickym Most Active @Kodijack last edited by

          @kodijack Ich würde es direkt mit try/catch versuchen.

          Das heißt über ein try den SetState setzen, falls der nicht erfolgreich ist, dann über Catch abfangen. Aktueller gehts nicht. 😉

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

            @kodijack: Wie erkenne ich ob ein SetState erfolgreich war?
            Das sollte durch state.ack = true mitgeteilt werden.

            setState(id, soll);
            var timer = setTimeout(function() {
               // Aktion, wenn nicht erfolgreich 
            }, 1000);
            
            on({id: id, ack: true}, function(dp) {
               if(dp.state.val == soll) clearTimeout(timer);
            });
            
            1 Reply Last reply Reply Quote 0
            • F
              fastfoot @Kodijack last edited by

              @kodijack sagte in Wie erkenne ich ob ein SetState erfolgreich war?:

              Hallo zusammen!

              Mein Problem: Ich möchte binnen 1-2s nachdem ein Gerät nicht mehr da ist (Strom weg, kaputt, was auch immer) reagieren können.
              Jedoch habe ich keinen Weg gefunden um zu erfahren ob ein Gerät JETZT GERADE tatsächlich da ist.

              <Gerät>.AVAILABLE ist zwar nett, aber braucht zu lange für ein Update.
              Auch ein <Gerät>.DEVICE_QUERY geht nicht häufig genug und ich hätte so 10s Verzögerung.

              TL;DR: Wie ermittle ich ob ein Gerät JETZT AKTUELL verfügbar ist?

              Danke im Voraus!

              Ob ein SetState() erfolgreich war kannst du am Ack-Flag sehen. Normalerweise steuerst du eine Hardware, indem das Ack-Flag false ist. Der Adapter reagiert darauf und setzt das Ack-Flag bei Erfolg auf true.

              Wie schnell der Adapter ein Gerät als offline erkennt, wenn keine Aktion damit erfolgt, hängt einzig vom Adapter ab

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

                @paul53
                Ah danke dir, so ähnlich hatte ich es versucht, aber ohne Erfolg.

                Allerdings klappt das so auch nur mit AN/AUS oder Brightness. Ändere ich unwichtige States (so daß das Licht nicht verändert wird ich aber dennoch eine Rückmeldung bekomme), so ist das stets erfolgreich (da verm. nicht an den Empfänger gesendet). Aber immerhin 🙂

                1 Reply Last reply Reply Quote 0
                • Kodijack
                  Kodijack @peterfido last edited by

                  @peterfido Danke, aber leider nicht so simpel. Hätte auch Zigbee erwähnen sollen, sorry 🙂

                  1 Reply Last reply Reply Quote 0
                  • Kodijack
                    Kodijack @mickym last edited by

                    @mickym Hm, wär auch zu einfach gewesen, aber geht leider so nicht. Ist stets erfolgreich. Aber danke!

                    1 Reply Last reply Reply Quote 0
                    • Kodijack
                      Kodijack @fastfoot last edited by

                      @fastfoot Danke auch dir! Das ist wohl tatsächlich die einzige Möglichkeit.

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

                      Support us

                      ioBroker
                      Community Adapters
                      Donate

                      818
                      Online

                      31.8k
                      Users

                      80.0k
                      Topics

                      1.3m
                      Posts

                      5
                      9
                      562
                      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