Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. Bestätigt/Acknowledged-Flag Bedeutung - ein Mysterium ;-)

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Bestätigt/Acknowledged-Flag Bedeutung - ein Mysterium ;-)

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

      Hi All,

      weil ich im Forum und in GitHub in letzter Zeit vermehrt darüber gestolpert bin, möchte ich heute mal ein paar Zeilen zum Thema Bestätigt/Acknowledged-Flag beim setzen von State-Werten schreiben.

      Wer jetzt denkt, das weiß ich doch alles ... lest doch vllt. noch ein Stück weiter 🙂

      Aber fangen wir doch mal an mit einer kleinen Preisfrage (und bevor jemand fragt: Die Belohnung ist Wissen 🙂 )

      Kleine Preisfrage ...

      Was genau bedeutet es "bestätigt/acknowleged" beim Setzen von State Werten auf "true" zu setzen?

      Antwort A: Ich als User (bzw mein Skript) setzt "bestätigt" auf "true" um zu sagen das ich bestätige das der Wert so sein soll. (Ich bestätige dem Gerät das der Wert mein Wunsch ist.)

      Antwort B: Das Gerät (bzw. der Adapter der das Gerät anbindet) zeigt mit "bestätigt" auf "true", das dies der Wert ist der beim Gert gerade wirklich gesetzt ist (Das Gerät hat diesen Wert als "echt" bestätigt.)

      Bevor Ihr weiterlest beantwortet die Frage mal für euch ... ... ...

      ....

      ....

      ....

      Wer für sich bei Antwort A gelandet ist, der sollte in jedem Fall weiterlesen, weil für Ihn schreibe ich das ganze 🙂 Alle anderen dürfen zur Überprüfung Ihres Wissens natürlich auch gern weiterlesen.

      Ok, wie ist es denn nun mit ack=true?

      Antwort B ist korrekt.

      Der "acknowledged" Flag (Deutsch "Bestätigt") kennzeichnet einen Wert ,der vom Gerät (bzw. vom Adapter auf Basis von Rückmeldungen vom Gerät - oder "bester Annahme") bestätigt wurde, als der Wert der gerade gesetzt ist. Es ist also "die Realität".
      Im Normalfall setzen ausschließlich Adapter (bzw. eigene Skripte die den Status eines States "kennen") Werte mit ack=true. Es gibt nur sehr wenige Anwendungsfälle wo es Sinn macht das ein User bzw. ein Skript einen Wert mit ack=true setzt!
      Jeder Adapter sollte jegliche Wertänderungen mit ack=true einfach ignorieren und nichts tun! Falls er es doch tut ist es ein Sonderfall oder ein Bug im Adapter 🙂

      Bestätigte Werte werden im Admin "grün" angezeigt um zu visualisieren das der Wert direkt vom Adapter kommt und es der Wert sein sollte der dort gerade real ist.

      Und wozu nutze ich dann ack=false?

      Mit "Acknowledged=false" (was auch überall die Standardeinstellung ist) steuert man ein Gerät. Darauf sollten Adapter (wenn States schreibbar sind) dann auch reagieren und eine Steueraktion auslösen und den Wert zum Gerät senden.

      Admin Zeigt Werte mit "ack=false" in rot an, um zu zeigen das man diesem Wert im ersten Schritt nicht uneingeschränkt vertrauen darf, weil das Gerät noch nichts dazu gesagt hat.

      Im Normalfall wird der Adapter direkt (oder über Updates dann vom Gerät) nach einer Steueraktion einen neuen bestätigten Wert nach der erfolgten Steuerung setzen - das kann der Wert sein den man gesendet hat oder ein anderer!
      Im Admin sieht man das das der gesetzte Wert kurz rot ist und dann kurz darauf von einem "grünen" Wert überschrieben wird. Das ist der Idealfall.

      Was heisst es wenn ein Wert "rot" bleibt?

      Am Ende kann es grob drei Fälle geben wenn ein Wert "rot" (also unbestätigt) bleibt:

      • Der Adapter bzw. das Skript die diesen State normalerweise abarbeiten werden gerade nicht ausgeführt. Dann nimmt niemand die Steueraktion entgegen und es bleibt halt so.
      • Aus irgendeinem Grund konnte der Adapter die Steueraktion nicht ausführen (zB. weil das Gerät gerade offline ist) und hat auch keinen anderen neuen Wert vom Gerät. Dann könnte es im Logfile was zu finden geben.
      • Es ist ein "write only State". Ein Write Only State (zB oft bei "Buttons) triggern bei Betätigung mit dem Wert "true" etwas, aber ausser dem "Trigger" haben sie keinen Wert. Ob so ein State vom Adapter wieder zurückgesetzt wird auf zB False mit ack=true ist Adapterspezifisch und nicht ganz so einfach zu definieren. Das jetzt hier genauer auszuführen würde diesen Rahmen deutlich sprengen.

      Gibts das auch nochmal ausführlicher?

      Ja, @haus-automatisierung hat das Thema uch in einem Video verarbeitet: Wer also die Erklärung gerne noch einmal in bewegten Bildern (mit ein paar Beispielen) sehen möchte:

      https://www.youtube.com/watch?v=p5FyeifYUnw

      Und bei eigenen Skripten?

      Wenn Ihr Adapter-States steuern wollt ist das oben genannte genau so wichtig. Die "setState"-Methode hat den "ack"-Flag als dritten Parameter. Wenn er weggelassen wird oder auf false steht ist es eine "Steuern" Aktion, sonst wird der Wert "Aktualisiert" (ohne Steuerung). In Blockly und Rulez ist die Terminologie die gleiche.

      Für eigene States (in zB 0_userdata.0.* oder javascript.X.*) obliegt es formal Euch wie Ihr arbeiten wollt. Wer die Unterscheidung, ob ein Wert "erfolgreich verarbeitet und umgesetzt" ist vs. "das wollte ich steuern" nicht braucht, kann den ack-Flag ignorieren ... Eine normale subscription auf einen State Wert liefert beide Wert-Änderungen, kann aber über Zusatzparameter eingeschränkt werden auf nur "ack: false" als Beispiel.
      Aus Erfahrung sorgt das dann aber dafür das man in dem Umfeld gern mit "ack=true" arbeitet damit es im Admin "nicht als rot dargestellt wird" ... das kann hat zu einer Falle führen weil man dann immer umdenken muss.

      Ich persönlich versuche auch in Skripten mit korrekten ack-Flags zu arbeiten, um zu sehen ob ein Wert eine Steuerung ist oder der bestätigte Wert. Muss aber jeder für Sich entscheiden.

      Gibts im Admin noch andere Farben?

      In seltenen Fällen (bzw aktuell bei eher ausgewählten Adaptern) kann man noch State Werte in gelb sehen. Diese weisen an sich darauf hin das der Wert in irgendeiner Hinsicht als "Stale" (denke am besten als "veraltet" übersetzt) anzusehen ist. Das wird über das sogenannte "q" (aka "quality") Flag am State Wert gesteuert mit dem ein Adapter mitgeben kann das/ob ein Wert nur eine Annahme ist oder das Gerät aktuell offline ist und daher der Wert der "zuletzt bekannte aber potentiell veraltete" ist.
      Das nutzen momentan nicht so viele Adapter - kommt vllt mal wieder mehr in Mode 🙂

      Ich hoffe der kleine Exkurs hat mehr Fragen beantwortet als neue aufgeworfen - falls doch bitte einfach Fragen!
      Eine aktuelle Idee ist das auch in der Admin UI etwas besser darzustellen das dort klarer wird das "bestätigt" bedeutet.

      Ingo

      K haus-automatisierung OliverIO U 4 Replies Last reply Reply Quote 27
      • K
        klassisch Most Active @apollon77 last edited by klassisch

        @apollon77 Vielen Dank für die Info.
        Frage: Wird sich daran etwas ändern? Ich nehme das mit den Farben seit Jahren so hin (wurde vor Jahren man in einem Thread erklärt), bediene nichts in Skripten und frage auch nichts ab in eigenen Skripten. Daran ist bisher noch nichts gescheitert. Und solange es läuft, läuft es. Ist geplant, an dem Verhalten etwas zu ändern, so daß man alle seine Skripte durchflöhen und umstellen müßte?

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

          Das Konzept ist so tief verankert und macht - aus Datensicht - in jedem Fall weiterhin sinn.

          Die Frage ist für mich eher wie man es für die User verständlicher aufbereiten/darstellen kann das es weniger zu Issues führt wie aktuell öfters mal.

          Es kann höchsten sein das der Quality Flag vllt mehr genutzt wird, aber das ist erstmal eine andere Baustelle.

          1 Reply Last reply Reply Quote 3
          • haus-automatisierung
            haus-automatisierung Developer Most Active @apollon77 last edited by

            Das sind wirklich wichtige Grundlagen, welche viele noch nicht verstanden habe. Wer die Erklärung gerne noch einmal in bewegten Bildern (mit ein paar Beispielen) sehen möchte:

            https://www.youtube.com/watch?v=p5FyeifYUnw

            apollon77 1 Reply Last reply Reply Quote 5
            • apollon77
              apollon77 @haus-automatisierung last edited by

              @haus-automatisierung sagte in Bestätigt/Acknowledged-Flag Bedeutung - ein Mysterium 😉:

              Wer die Erklärung gerne noch einmal in bewegten Bildern (mit ein paar Beispielen) sehen möchte:
              https://www.youtube.com/watch?v=p5FyeifYUnw

              Cool ... kommt oben noch mit rein. Danke!!

              1 Reply Last reply Reply Quote 1
              • M
                mading last edited by

                Dazu muss ich mal eine Frage stellen: gibt es eine Möglichkeit auf unbestätigt zu prüfen? Ich lasse zb unsere Zirkulationspumpe laufen (über eine Tasmota Schaltsteck). Da wäre es wichtig mit zu bekommen, wenn der Sonoff Adapter die Schaltsteck nicht erreichen und zb nicht ausschalten kann.

                apollon77 1 Reply Last reply Reply Quote 0
                • apollon77
                  apollon77 @mading last edited by

                  @mading naja Du könntest ein Skript schreiben welches den relevanten State subscribed einmal mit "ack: true" und einmal mit "ack:false". Wenn ack:false dann startest Du einen Timer nach dessen Ablauf Du etwas tun willst, zB ne email senden oder sowas. Wenn ack: true kommt beendest du den Timer, sodas er nicht auslöst.

                  Voilaa 🙂

                  M M 2 Replies Last reply Reply Quote 1
                  • M
                    mading @apollon77 last edited by mading

                    @apollon77

                    44F4BD67-6C2F-4D8B-ADFF-3305A4B31043.jpeg

                    So meinst du, oder?

                    // edit vermutlivh macht es Sinn, nochmal den Status von Power nach 2s zu holen und dann aus zu schalten falls true

                    Asgothian 1 Reply Last reply Reply Quote 0
                    • M
                      Marty56 @apollon77 last edited by

                      Ich benutze das regelmäßig, wenn ich Datenpunkte habe, die gleichzeitig einen Status anzeigen und aber nicht immer auslösen sollen.

                      z.B. bei dem HomeKit Garagenöffner gibt es den Target State für die Garage, der im Normalfall, wenn es nicht gleich dem Current State ist, die Garage bedienen soll. Wenn ich die Garage ausschließlich über HomeKit bediene, ist das kein Problem, ich will sie habe auch über die Homematic Fernbedienung bedienen und gleichzeitig soll der Status in der HomeKit App korrekt sein.

                      Für diesen Fall benutze ich ack == false und in dem entsprechenden Listner die Konstruktion also

                      on({ id: path_garage + 'Garage_TargetDoorState',change:"any",ack: false }, function (obj) {
                          setState(path_alias + 'direct.AS_Garagenschalter',true)
                      });
                      

                      Und wenn "Garage_TargetDoorState' nicht auslösen, aber für die Anzeige in HomeKit geändert werden soll, dann

                      setState(path_garage +'Garage_TargetDoorState',siri_closed,true)
                      
                      1 Reply Last reply Reply Quote 0
                      • OliverIO
                        OliverIO @apollon77 last edited by OliverIO

                        @apollon77

                        Eine Grafik hilft evtl auch?

                        93d89896-1e37-4481-b336-1063ce2a3f1b-image.png
                        https://sequencediagram.org/index.html#initialData=FABwhgTgLglgxjcA7KACAQgUyQVygL0wlElgWTQEEATMEKIk6eRMFVACUmoHdJNgwJAHsGqYQDciGbHkIQAXKgDOcABYRMMAEZoAImAZIQOJAGsoAHSQBbGGjBwzAXgBmYADbKBWXASIAtAB8NHQMiqgAYgA-EKgGRibmaPg4ylAAJ0jUMADmRNah9EQA9ADKZhCIaDwwENSo+VBVufnQwEXhwVz1fJpKndIeAG-pqAAj2USmudYwSKjU0j28-KhgaUKimOJScSt9mEqTSxAzqLX1qHuQ2loMUMAH-MGDEQBymDjSZVCGaRc6g1rPkbJgPEs0MJTtdhAtCrRinEwNp8q4IGBco8RGJJNI3koEtgkhZAfVrHYHE5nM1vqgQZhVBoYJg7kgOoiukFfHIiEoACotNqoeaoCpVehkhobZT5EZjIA

                        1 Reply Last reply Reply Quote 2
                        • Asgothian
                          Asgothian Developer @mading last edited by

                          @mading sagte in Bestätigt/Acknowledged-Flag Bedeutung - ein Mysterium 😉:

                          @apollon77

                          44F4BD67-6C2F-4D8B-ADFF-3305A4B31043.jpeg

                          So meinst du, oder?

                          // edit vermutlivh macht es Sinn, nochmal den Status von Power nach 2s zu holen und dann aus zu schalten falls true

                          So auf keinen Fall.

                          Bitte so:

                          Screenshot 2023-01-09 at 12.41.17.png

                          M 1 Reply Last reply Reply Quote 2
                          • Homoran
                            Homoran Global Moderator Administrators last edited by

                            Für die Blockly-User noch eine Eselsbrücke:
                            wenn ich mit dem Wert etwas über einen Adapter steuern will muss ich den Block steuere ID... nehmen. (dieser arbeitet mit Ack=false.

                            In eigenen Datenpunkten will ich den Wert nur aktualisieren. Also mit dem Block aktualisiere ID...

                            K 1 Reply Last reply Reply Quote 2
                            • K
                              klassisch Most Active @Homoran last edited by

                              @homoran sagte in Bestätigt/Acknowledged-Flag Bedeutung - ein Mysterium 😉:

                              In eigenen Datenpunkten will ich den Wert nur aktualisieren. Also mit dem Block aktualisiere ID...

                              Auch wenn history dieses Datum wegschreiben soll?

                              Homoran W apollon77 3 Replies Last reply Reply Quote 0
                              • Homoran
                                Homoran Global Moderator Administrators @klassisch last edited by

                                @klassisch sagte in Bestätigt/Acknowledged-Flag Bedeutung - ein Mysterium 😉:

                                @homoran sagte in Bestätigt/Acknowledged-Flag Bedeutung - ein Mysterium 😉:

                                In eigenen Datenpunkten will ich den Wert nur aktualisieren. Also mit dem Block aktualisiere ID...

                                Auch wenn history dieses Datum wegschreiben soll?

                                ja!
                                jetzt wird es semantisch anspruchsvoll. Hoffentlich korrekt:
                                history verarbeitet nicht den Wert in dem Adapter wie z.B. die Zielhelligkeit im Dimmer , sondern loggt diesen nur.

                                1 Reply Last reply Reply Quote 3
                                • W
                                  Wildbill @klassisch last edited by

                                  @klassisch History (oder influx oder sonstige) reagieren auf die Stgate-Änderung an sich, egal ob ack true oder nicht.
                                  Sobald sich was ändert, wird geschrieben. Wenn Du jetzt einen Adapter-Datenpunkt mit 1 beschreibst und dieser dann vom Adapter auf 2 rückgemeldet wird (z.B. beim Harmony-Adapter zum Starten von Activities) so wird sowohl die 1, als auch die 2 weggespeichert.

                                  Gruss, Jürgen

                                  Homoran M 3 Replies Last reply Reply Quote 2
                                  • M
                                    mading @Asgothian last edited by

                                    @asgothian danke, d.h. mit dem deutschen UI so:

                                    ad7834c2-ea57-443e-9735-de0887f58b9f-image.png

                                    haus-automatisierung 1 Reply Last reply Reply Quote 0
                                    • Homoran
                                      Homoran Global Moderator Administrators @Wildbill last edited by

                                      @wildbill sagte in Bestätigt/Acknowledged-Flag Bedeutung - ein Mysterium 😉:

                                      History (oder influx oder sonstige) reagieren auf die Stgate-Änderung an sich, egal ob ack true oder nicht.

                                      diese Formulierung hatte ich verworfen 🙂 da auch bei Aktualisierung geloggt werden kann.

                                      K 1 Reply Last reply Reply Quote 1
                                      • K
                                        klassisch Most Active @Homoran last edited by

                                        @homoran Jedenfalls halten sich history, influx & Co nicht an die übliche Adapter-Verhaltensweise. Macht Sinn, ist aber eine erwähnenswerte Ausnahme. Gibt es noch mehr solcher Ausnahmen. Visualisierungsadapter?

                                        Homoran apollon77 2 Replies Last reply Reply Quote 0
                                        • Homoran
                                          Homoran Global Moderator Administrators @klassisch last edited by

                                          @klassisch sagte in Bestätigt/Acknowledged-Flag Bedeutung - ein Mysterium 😉:

                                          Jedenfalls halten sich history, influx & Co nicht an die übliche Adapter-Verhaltensweise

                                          Das sind zwei Paar Schuhe! Das wollte ich mit dem Satz: "History verarbeitet nicht den Wert" klar machen, was mir anscheinend nicht gelungen ist.
                                          Dort wird -egal was da steht- nur geloggt.

                                          @klassisch sagte in Bestätigt/Acknowledged-Flag Bedeutung - ein Mysterium 😉:

                                          ist aber eine erwähnenswerte Ausnahme.

                                          richtig! Das sollte erwähnt werden.

                                          @klassisch sagte in Bestätigt/Acknowledged-Flag Bedeutung - ein Mysterium 😉:

                                          Gibt es noch mehr solcher Ausnahmen. Visualisierungsadapter?

                                          ich weiss jetzt nicht genau, was du damit meinst. Aber analog zu den Historisierungen, werden nur die Werte in den Widgets übernommen.

                                          1 Reply Last reply Reply Quote 1
                                          • haus-automatisierung
                                            haus-automatisierung Developer Most Active @mading last edited by

                                            @mading sagte in Bestätigt/Acknowledged-Flag Bedeutung - ein Mysterium 😉:

                                            @asgothian danke, d.h. mit dem deutschen UI so:

                                            Warum der zweite Trigger? Geht auch in einem:

                                            ioBroker-Quiz2.jpg

                                            (hatte ich damals mal im Community-Tab auf YouTube als Quiz gepostet - daher auch noch die alten Bezeichner "anerkannt" statt "bestätigt")

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate
                                            FAQ Cloud / IOT
                                            HowTo: Node.js-Update
                                            HowTo: Backup/Restore
                                            Downloads
                                            BLOG

                                            732
                                            Online

                                            31.6k
                                            Users

                                            79.6k
                                            Topics

                                            1.3m
                                            Posts

                                            14
                                            62
                                            14659
                                            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