Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. DP wurde aktualisiert anerkannt ist "egal","Update","Befehl"

    NEWS

    • Wir empfehlen: Node.js 22.x

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker goes Matter ... Matter Adapter in Stable

    DP wurde aktualisiert anerkannt ist "egal","Update","Befehl"

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

      @FredF,

      das ist erst mal einleuchtend. Bei dem DP handelt es sich um einen selbst erstellten. Können diese ein ack=true senden? Wenn ja, wie kann man das einrichten? Dann müsste ich im Umkehrschluss in all meinen Scripten prüfen, ob ein ack=true überhaupt gesendet wird... Oder ob einige durch die Änderung auf "Update" gar nicht triggern und ich habe es nicht bemerkt.

      FredF 1 Reply Last reply Reply Quote 0
      • FredF
        FredF Most Active Forum Testing @dslraser last edited by

        @dslraser sagte in DP wurde aktualisiert anerkannt ist "egal","Update","Befehl":

        wo wir schon mal dabei sind, was genau macht Befehl ?

        das Gegenteil von Update, also ack = false

        1 Reply Last reply Reply Quote 1
        • FredF
          FredF Most Active Forum Testing @XxJooO last edited by

          @XxJooO sagte in DP wurde aktualisiert anerkannt ist "egal","Update","Befehl":

          Können diese ein ack=true senden?

          Bis jemand der sich besser auskennt das bejaht, sage ich, das selbst angelegte Datenpunkte kein ack=true senden können.

          F UncleSam 2 Replies Last reply Reply Quote 0
          • F
            fastfoot @FredF last edited by fastfoot

            @FredF sagte in DP wurde aktualisiert anerkannt ist "egal","Update","Befehl":

            Bis jemand der sich besser auskennt das bejaht, sage ich, das selbst angelegte Datenpunkte kein ack=true senden können.

            Na, ob ich mich besser auskenne sei dahingestellt. Das ack Flag kommt ja von acknowledge=Bestätigung, und das funktioniert so:

            • Ein DP wird mit einem Wert gesteuert, das ack flag steht auf false
            • Der DP ändert sich zu dem neuen Wert
            • Ein Adapter reagiert darauf und steuert die Hardware entsprechend an
            • Dann wird vom Adapter diese Ansteuerung bestätigt, d.h. er setzt das ack-Flag auf true
            • Das bedeutet mW nicht, dass die Hardware auch entsprechend reagiert hat

            Zum Spielen ein Skript, welches eine Lampe anschaltet:
            Die ersten beiden Einträge kommen vom ansteuern durch das Skript, die beiden letzten vom Adapter, man sieht auch schön die Verzögerung von. 113ms
            Play.PNG

            22:01:56.068	info	javascript.1 (686) Start javascript script.js.Aktiv.ScriptBL
            22:01:56.073	info	javascript.1 (686) script.js.Aktiv.ScriptBL: registered 1 subscription and 0 schedules
            22:01:56.080	info	javascript.1 (686) script.js.Aktiv.ScriptBL: ack: false
            22:01:56.080	info	javascript.1 (686) script.js.Aktiv.ScriptBL: Wert: true
            22:01:56.193	info	javascript.1 (686) script.js.Aktiv.ScriptBL: ack: true
            22:01:56.194	info	javascript.1 (686) script.js.Aktiv.ScriptBL: Wert: true
            

            Normalerweise gibt es in einem Skript keinen Grund, dieses Flag abzufragen, deshalb ist egal wohl fast immer eine gute Wahl

            XxJooO AlCalzone 2 Replies Last reply Reply Quote 1
            • XxJooO
              XxJooO @fastfoot last edited by XxJooO

              @UncleSam,

              könntest Du mal kurz sagen, warum Du dann in dem anderen thread gesagt hast, dass Du "Update" für sinnvoll hältst? Kannst Du einen kurzen Anwendungsfall konstruieren? Bei dem mässigen Echo auf meine Frage könnte das vielleicht noch einige Andere interessieren...

              Vielen Dank an Alle, die bislang geantwortet haben!

              PS: Beim Rückändern meiner Scripteinstellungen ergibt sich gerade bei mir die Frage ob alias-Werte, die auf Sensoren Datenpunkte verweisen deren ack-Status übernehmen?

              paul53 1 Reply Last reply Reply Quote 0
              • UncleSam
                UncleSam Developer @FredF last edited by

                @FredF sagte in DP wurde aktualisiert anerkannt ist "egal","Update","Befehl":

                Bis jemand der sich besser auskennt das bejaht, sage ich, das selbst angelegte Datenpunkte kein ack=true senden können.

                Blockly kenne ich leider gar nicht, aber in JavaScript kann man einfach setState() mit ack: true aufrufen (siehe Doku).

                Die Unterscheidung zwischen Befehl und Update ist sehr wichtig bei Datenpunkten aus Adaptern: Befehl kommt von ausserhalb des Adapters und Update von innerhalb.

                Beispiel:

                • Ich will eine Lampe einschalten
                • Ich schicke den Befehl "Lampe = ein"
                • Der Adapter erkennt den Befehl und schaltet die Lampe ein
                • Sobald der Adapter die Lampe erfolgreich eingeschaltet hat, schickt er das Update "Lampe = ein"
                • Erst jetzt sollte ein Skript darauf reagieren, dass die Lampe eingeschaltet wurde (es könnte ja sein, dass der Adapter nicht läuft oder die Lampe nicht eingeschaltet werden kann; dann möchte ich ja in meinem Skript die Aktion nicht ausführen)
                FredF 1 Reply Last reply Reply Quote 2
                • FredF
                  FredF Most Active Forum Testing @UncleSam last edited by

                  @UncleSam sagte in DP wurde aktualisiert anerkannt ist "egal","Update","Befehl":

                  Blockly kenne ich leider gar nicht,

                  Um das vielleicht rund zu machen, hier mal die JS codes der verschiedenen anerkannt Zustände eines Falls Triggers.
                  0d9ed172-bf19-411a-a232-584aa60dbcb5-grafik.png

                  on({id: 'default', change: "ne"}, function (obj) {
                   var value = obj.state.val;
                   var oldValue = obj.oldState.val;
                  });
                  


                  on({id: 'default', change: "ne", ack: true}, function (obj) {
                   var value = obj.state.val;
                   var oldValue = obj.oldState.val;
                  });
                  


                  on({id: 'default', change: "ne", ack: false}, function (obj) {
                   var value = obj.state.val;
                   var oldValue = obj.oldState.val;
                  });
                  

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

                    @XxJooO sagte:

                    ob alias-Werte, die auf Sensoren Datenpunkte verweisen deren ack-Status übernehmen?

                    Ja.

                    @FredF sagte:

                    sage ich, das selbst angelegte Datenpunkte kein ack=true senden können.

                    Wenn selbst angelegte Datenpunkte durch ein (Blockly-)Skript geschrieben werden, setzt "aktualisiere" ack auf true. Oder JS:

                    setState(id, wert, true); 
                    
                    1 Reply Last reply Reply Quote 1
                    • AlCalzone
                      AlCalzone Developer @fastfoot last edited by

                      @fastfoot sagte in DP wurde aktualisiert anerkannt ist "egal","Update","Befehl":

                      Dann wird vom Adapter diese Ansteuerung bestätigt, d.h. er setzt das ack-Flag auf true
                      Das bedeutet mW nicht, dass die Hardware auch entsprechend reagiert hat

                      Eigentlich ist ACK dafür gedacht, dass die Änderung erfolgt ist. Wenn einige Adapter das nicht so handhaben, ist es nicht korrekt.

                      paul53 F 2 Replies Last reply Reply Quote 1
                      • paul53
                        paul53 @AlCalzone last edited by paul53

                        @AlCalzone sagte:

                        Wenn einige Adapter das nicht so handhaben, ist es nicht korrekt.

                        Wenn es keine Rückmeldung gibt (433 MHz, IR), bleibt nichts anderes übrig.

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

                          @AlCalzone sagte in DP wurde aktualisiert anerkannt ist "egal","Update","Befehl":

                          Eigentlich ist ACK dafür gedacht, dass die Änderung erfolgt ist. Wenn einige Adapter das nicht so handhaben, ist es nicht korrekt.

                          Mein Verständnis davon war bisher, dass ack 'nur' bedeutet, dass der Befehl an die Hardware gesendet wurde. zB im Fall der Hue Bridge oder auch FritzBox, wie sollte ein Adapter wissen ob der Befehl auch wirklich umgesetzt wurde, wenn das Polling nur alle paar Sekunden erfolgt? Ich denke zumindest dass eine Prüfung auch nicht immer möglich ist(Hat Alexa die Sprachausgabe auch wirklich gemacht?).

                          EDIT: Versuch macht klug. Die Hue Bridge zumindest gibt irgend eine Rückmeldung an den Adapter, und der wertet die auch richtig aus.

                          Lampe vom Strom -> Befehl zum Einschalten -> Adapter setzt ack=true und liefert gleichzeitig den richtigen Wert false
                          
                          1 Reply Last reply Reply Quote 0
                          • AlCalzone
                            AlCalzone Developer @paul53 last edited by

                            @paul53 sagte in DP wurde aktualisiert anerkannt ist "egal","Update","Befehl":

                            Wenn es keine Rückmeldung gibt (433 MHz, IR), bleibt nichts anderes übrig.

                            @fastfoot sagte in DP wurde aktualisiert anerkannt ist "egal","Update","Befehl":

                            wenn das Polling nur alle paar Sekunden erfolgt?

                            Stimmt natürlich. Ich bin eher in den Gefilden unterwegs, wo direkte Kommunikation erfolgt.

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

                            Support us

                            ioBroker
                            Community Adapters
                            Donate

                            810
                            Online

                            32.0k
                            Users

                            80.4k
                            Topics

                            1.3m
                            Posts

                            7
                            15
                            722
                            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