Skip to content
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Logo
  1. ioBroker Community Home
  2. Deutsch
  3. ioBroker Allgemein
  4. Bestätigt/Acknowledged-Flag Bedeutung - ein Mysterium ;-)

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.1k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    1.8k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    15
    1
    2.1k

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

Scheduled Pinned Locked Moved ioBroker Allgemein
62 Posts 14 Posters 19.5k Views 14 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • LoredoL Loredo

    @paul53 das ist genauso wie bei einem physischen Gerät hinten dran: Ein Logik-Adapter bekommt eine Kommando-Anfrage mit ack=false und kann sich überlegen, ob er es verarbeitet oder nicht. Ein physisches, externes Gerät macht das genauso und je nachdem, wie "gut" die externe API implementiert ist, liefert das externe Gerät dann den neuen Wert als Bestätigung zurück oder eben den alten Wert wieder. In beiden Fällen wird der Adapter aber die Antwort dann mit ack=true schreiben. Ich mache in meinem Residents Adapter nichts anderes, nur dass ich auch so geschäftig bin zusätzlich noch das Quality Flag zu benutzen, so wie es gedacht ist 😉

    paul53P Offline
    paul53P Offline
    paul53
    wrote on last edited by
    #33

    @loredo sagte: liefert das externe Gerät dann den neuen Wert als Bestätigung zurück oder eben den alten Wert wieder. In beiden Fällen wird der Adapter aber die Antwort dann mit ack=true schreiben.

    Im dritten Fall, dass das Gerät sich nicht zurück meldet, schreibt ein Geräte-Adapter nichts zurück. Das würde wohl eher dem Fall "nicht annehmen" entsprechen.

    Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
    Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

    LoredoL 1 Reply Last reply
    0
    • paul53P paul53

      @loredo sagte: liefert das externe Gerät dann den neuen Wert als Bestätigung zurück oder eben den alten Wert wieder. In beiden Fällen wird der Adapter aber die Antwort dann mit ack=true schreiben.

      Im dritten Fall, dass das Gerät sich nicht zurück meldet, schreibt ein Geräte-Adapter nichts zurück. Das würde wohl eher dem Fall "nicht annehmen" entsprechen.

      LoredoL Offline
      LoredoL Offline
      Loredo
      Developer
      wrote on last edited by Loredo
      #34

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

      @loredo sagte: liefert das externe Gerät dann den neuen Wert als Bestätigung zurück oder eben den alten Wert wieder. In beiden Fällen wird der Adapter aber die Antwort dann mit ack=true schreiben.

      Im dritten Fall, dass das Gerät sich nicht zurück meldet, schreibt ein Geräte-Adapter nichts zurück. Das würde wohl eher dem Fall "nicht annehmen" entsprechen.

      Jaein, das kommt eben ganz drauf an. Einige Adapter reagieren leider so, selbst wenn sie eigentlich "verbunden" sind und werten die Rückmeldung (oder eben das Fehlen jener) nicht gut aus. Ist zumindest meine bescheidene Beobachtung und ist nicht der Anspruch, den ich an einen gut implementierten Adapter hätte.

      paul53P 1 Reply Last reply
      0
      • LoredoL Loredo

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

        @loredo sagte: liefert das externe Gerät dann den neuen Wert als Bestätigung zurück oder eben den alten Wert wieder. In beiden Fällen wird der Adapter aber die Antwort dann mit ack=true schreiben.

        Im dritten Fall, dass das Gerät sich nicht zurück meldet, schreibt ein Geräte-Adapter nichts zurück. Das würde wohl eher dem Fall "nicht annehmen" entsprechen.

        Jaein, das kommt eben ganz drauf an. Einige Adapter reagieren leider so, selbst wenn sie eigentlich "verbunden" sind und werten die Rückmeldung (oder eben das Fehlen jener) nicht gut aus. Ist zumindest meine bescheidene Beobachtung und ist nicht der Anspruch, den ich an einen gut implementierten Adapter hätte.

        paul53P Offline
        paul53P Offline
        paul53
        wrote on last edited by
        #35

        @loredo
        Es entspricht der Philosophie von ioBroker, dass der Datenpunkt ein Sollzustands-Datenpunkt (val = neuer Wert, ack = false) bleibt, solange die Rückmeldung ausbleibt.

        Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
        Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

        LoredoL 1 Reply Last reply
        1
        • K Offline
          K Offline
          klassisch
          Most Active
          wrote on last edited by
          #36

          Ich hatte mir zum ack Thema mal den github-iobroker-wiki-Artikel notiert: https://github.com/ioBroker/ioBroker/wiki/Adapter-Development-Documentation#commands-and-statuses

          Ist das noch aktuell?

          paul53P 1 Reply Last reply
          0
          • paul53P paul53

            @loredo
            Es entspricht der Philosophie von ioBroker, dass der Datenpunkt ein Sollzustands-Datenpunkt (val = neuer Wert, ack = false) bleibt, solange die Rückmeldung ausbleibt.

            LoredoL Offline
            LoredoL Offline
            Loredo
            Developer
            wrote on last edited by
            #37

            @paul53 Es ist halt ein Unterschied nicht zu reagieren oder etwas nicht anzunehmen und zurückzuweisen. Nicht zu reagieren, obwohl man das Kommando wahrgenommen hat, ist halt nicht zu unterscheiden davon, dass der Adapter einfach nicht läuft. Ich finde es aber wichtig das zu unterscheiden. IMHO sollte ein laufender Adapter immer etwas tun, aber mir persönlich reicht da ein einfacher Logeintrag nicht. Ich möchte das auch Event basiert verarbeiten können und auch direkt im Admin Adapter sehen können, ohne das Log zu durchforsten.

            Die von dir besagte Philosophie stört mich nicht selten und hinterlässt bei mir oft den Eindruck eines nur halb fertigen Adapters. 🤷‍♂️
            Es ist aber erlaubt, dass du eine andere Meinung hast als ich 😉

            1 Reply Last reply
            0
            • K klassisch

              Ich hatte mir zum ack Thema mal den github-iobroker-wiki-Artikel notiert: https://github.com/ioBroker/ioBroker/wiki/Adapter-Development-Documentation#commands-and-statuses

              Ist das noch aktuell?

              paul53P Offline
              paul53P Offline
              paul53
              wrote on last edited by paul53
              #38

              @klassisch sagte: Ist das noch aktuell?

              Ja, und es beschreibt es so, wie ich geschrieben habe.
              Beispiel: HomeMatic, Datenpunkt MANUAL_MODE: Darüber schaltet man den Thermostaten in den manuellen Modus und man übergibt den manuellen Sollwert. Dieser Datenpunkt wird nie bestätigt.

              Anmerkung: ioBroker ist ursprünglich aus einer Erweiterung für HomeMatic hervorgegangen. Das ist für Dich sicher nicht neu, aber wahrscheinlich für @Loredo.

              Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
              Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

              LoredoL 1 Reply Last reply
              1
              • paul53P paul53

                @klassisch sagte: Ist das noch aktuell?

                Ja, und es beschreibt es so, wie ich geschrieben habe.
                Beispiel: HomeMatic, Datenpunkt MANUAL_MODE: Darüber schaltet man den Thermostaten in den manuellen Modus und man übergibt den manuellen Sollwert. Dieser Datenpunkt wird nie bestätigt.

                Anmerkung: ioBroker ist ursprünglich aus einer Erweiterung für HomeMatic hervorgegangen. Das ist für Dich sicher nicht neu, aber wahrscheinlich für @Loredo.

                LoredoL Offline
                LoredoL Offline
                Loredo
                Developer
                wrote on last edited by Loredo
                #39

                @paul53 Korrekt. Nein das ist nicht neu für mich, sondern an vielen Stellen sehr offensichtlich (was nicht schlimm ist). Ich kenne ioBroker auch schon seit etlichen Jahren, auch wenn ich ihn noch nicht so lange aktiv nutze.
                Das ist für mich aber deshalb nicht dauerhaft in Stein gemeißelt, sondern kann sich weiterentwickeln 😉
                Ich habe für meinen Adapter entschieden, dass ich das Verhalten so sinnvoller finde. Vor allem auch deshalb, weil eine Darstellung der tatsächlich korrekten Werte über eine externe GUI möglich sein soll. Da stört es, wenn in der GUI dann plötzlich aber Werte angezeigt werden, die gar nicht dem Ist-Zustand entsprechen. Meine oberste Priorität ist immer, den Ist-Zustand zu jeder möglichen Zeit richtig anzuzeigen, nicht den Soll-Zustand.

                paul53P 1 Reply Last reply
                0
                • LoredoL Loredo

                  @paul53 Korrekt. Nein das ist nicht neu für mich, sondern an vielen Stellen sehr offensichtlich (was nicht schlimm ist). Ich kenne ioBroker auch schon seit etlichen Jahren, auch wenn ich ihn noch nicht so lange aktiv nutze.
                  Das ist für mich aber deshalb nicht dauerhaft in Stein gemeißelt, sondern kann sich weiterentwickeln 😉
                  Ich habe für meinen Adapter entschieden, dass ich das Verhalten so sinnvoller finde. Vor allem auch deshalb, weil eine Darstellung der tatsächlich korrekten Werte über eine externe GUI möglich sein soll. Da stört es, wenn in der GUI dann plötzlich aber Werte angezeigt werden, die gar nicht dem Ist-Zustand entsprechen. Meine oberste Priorität ist immer, den Ist-Zustand zu jeder möglichen Zeit richtig anzuzeigen, nicht den Soll-Zustand.

                  paul53P Offline
                  paul53P Offline
                  paul53
                  wrote on last edited by paul53
                  #40

                  @loredo sagte: Ist-Zustand zu jeder möglichen Zeit richtig anzuzeigen, nicht den Soll-Zustand.

                  Dann muss aber auch der Wert mit dem Ist-Wert überschrieben werden - nicht nur das Ack-Flag. Der Fehlversuch wird dann natürlich in der History mit aufgezeichnet.

                  Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                  Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                  LoredoL 1 Reply Last reply
                  1
                  • paul53P paul53

                    @loredo sagte: Ist-Zustand zu jeder möglichen Zeit richtig anzuzeigen, nicht den Soll-Zustand.

                    Dann muss aber auch der Wert mit dem Ist-Wert überschrieben werden - nicht nur das Ack-Flag. Der Fehlversuch wird dann natürlich in der History mit aufgezeichnet.

                    LoredoL Offline
                    LoredoL Offline
                    Loredo
                    Developer
                    wrote on last edited by Loredo
                    #41

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

                    @loredo sagte: Ist-Zustand zu jeder möglichen Zeit richtig anzuzeigen, nicht den Soll-Zustand.

                    Dann muss aber auch der Wert mit dem Ist-Wert überschrieben werden - nicht nur das Ack-Flag.

                    Hatte ich ja oben auch so geschrieben, dass ich oldState mit ack=true ergänzt von z.B. q=0x40 zurückschreibe 😉
                    oldState muss sich halt der laufende Adapter selbst organisieren, weshalb es auch unschön ist, wenn Änderungen an Objekten passieren, während der Adapter nicht läuft. der JS-Controller wäre besser dafür geeignet, oldState (also nur die States mit ack=true) für alle Adapter bereitzuhalten, aber sowas gibts wohl bisher nicht.

                    By the way, da fällt mir gerade wieder der Bug ein, der mir bei der Entwicklung begegnet ist:
                    getForeignStateAsync() liefert nur ack: false

                    Dadurch muss man beim zurückschreiben (je nachdem, wie lange der Adapter schon läuft) trotzdem nochmal explizit ack=true setzen. Das aber nur am Rande erwähnt, weil es auch was mit der Nutzung der ack Werte zu tun hat. Das macht es leider derzeit auch schwierig den ack-Wert außerhalb von Events abzuprüfen, weil der Wert eben immer false ist und nie true </OffTopic>

                    1 Reply Last reply
                    0
                    • W Wildbill

                      @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

                      M Offline
                      M Offline
                      Marty56
                      wrote on last edited by
                      #42

                      @wildbill
                      das stimmt und ich finde es bedauerlich!
                      Ich hätte gerne, dass ich mit setState() steuern könnte, ob ein Wert im History Adapter an die jeweilige DB übertragen wird.

                      HW:NUC (16 GB Ram)
                      OS: Debian Bullseye, Promox V7, node v16.x npm 8.19.3

                      HomoranH CodierknechtC apollon77A 3 Replies Last reply
                      0
                      • W Wildbill

                        @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

                        HomoranH Offline
                        HomoranH Offline
                        Homoran
                        Global Moderator Administrators
                        wrote on last edited by
                        #43

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

                        z.B. beim Harmony-Adapter zum Starten von Activities

                        da ist es ja tatsächlich so dass ein "working" über einen anderen Wert als der initiale oder der Zielwert ist.
                        Ich finde es richtig wenn das auch geloggt wird, da damit die korrekte Funktion ind Gänze abgebildet wird.

                        kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

                        Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                        der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

                        1 Reply Last reply
                        1
                        • M Marty56

                          @wildbill
                          das stimmt und ich finde es bedauerlich!
                          Ich hätte gerne, dass ich mit setState() steuern könnte, ob ein Wert im History Adapter an die jeweilige DB übertragen wird.

                          HomoranH Offline
                          HomoranH Offline
                          Homoran
                          Global Moderator Administrators
                          wrote on last edited by
                          #44

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

                          Ich hätte gerne, dass ich mit setState() steuern könnte, ob ein Wert im History Adapter an die jeweilige DB übertragen wird.

                          Das wäre Bilanzfälschung! 😂
                          Entweder ich logge jede Veränderung um auch später jeden Eingriff sehen zu können, oder ich lasse es.
                          "Beweise manipulieren" zu können, indem man aktiv bei bestimmten Aktionen die Spuren verwischt, halte ich für keine gute Idee!

                          Ist jetzt absichtlich überspitzt formuliert!

                          kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

                          Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                          der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

                          M 1 Reply Last reply
                          3
                          • M Marty56

                            @wildbill
                            das stimmt und ich finde es bedauerlich!
                            Ich hätte gerne, dass ich mit setState() steuern könnte, ob ein Wert im History Adapter an die jeweilige DB übertragen wird.

                            CodierknechtC Offline
                            CodierknechtC Offline
                            Codierknecht
                            Developer Most Active
                            wrote on last edited by
                            #45

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

                            Ich hätte gerne, dass ich mit setState() steuern könnte, ob ein Wert im History Adapter an die jeweilige DB übertragen wird.

                            Wie @Homoran schon schrieb: Das wäre „geschummelt“ 😉
                            Aber Du kannst ja beim Abfragen der DB die Datensätze ohne ack wegfiltern.

                            "Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Martin Fowler, "Refactoring")

                            Proxmox 8.2.4 LXC|8 GB|Core i7-6700
                            HmIP|ZigBee|Tasmota|Unifi + dies & das
                            Konnte ich Dir helfen? Dann benutze bitte das Voting unten rechts im Beitrag

                            1 Reply Last reply
                            1
                            • HomoranH Homoran

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

                              Ich hätte gerne, dass ich mit setState() steuern könnte, ob ein Wert im History Adapter an die jeweilige DB übertragen wird.

                              Das wäre Bilanzfälschung! 😂
                              Entweder ich logge jede Veränderung um auch später jeden Eingriff sehen zu können, oder ich lasse es.
                              "Beweise manipulieren" zu können, indem man aktiv bei bestimmten Aktionen die Spuren verwischt, halte ich für keine gute Idee!

                              Ist jetzt absichtlich überspitzt formuliert!

                              M Offline
                              M Offline
                              Marty56
                              wrote on last edited by
                              #46

                              @homoran Ok. Netter Nonsense Witz, ha ha!

                              HW:NUC (16 GB Ram)
                              OS: Debian Bullseye, Promox V7, node v16.x npm 8.19.3

                              1 Reply Last reply
                              0
                              • M Marty56

                                @wildbill
                                das stimmt und ich finde es bedauerlich!
                                Ich hätte gerne, dass ich mit setState() steuern könnte, ob ein Wert im History Adapter an die jeweilige DB übertragen wird.

                                apollon77A Online
                                apollon77A Online
                                apollon77
                                wrote on last edited by
                                #47

                                @marty56 dann erstelle dir einen Schattenstate und sortiere per Skript oder irgendeiner Logik aus und logge den dann. Easy

                                Beitrag hat geholfen? Votet rechts unten im Beitrag :-) https://paypal.me/Apollon77 / https://github.com/sponsors/Apollon77

                                • Debug-Log für Instanz einschalten? Admin -> Instanzen -> Expertenmodus -> Instanz aufklappen - Loglevel ändern
                                • Logfiles auf Platte /opt/iobroker/log/… nutzen, Admin schneidet Zeilen ab
                                M 1 Reply Last reply
                                1
                                • apollon77A apollon77

                                  @marty56 dann erstelle dir einen Schattenstate und sortiere per Skript oder irgendeiner Logik aus und logge den dann. Easy

                                  M Offline
                                  M Offline
                                  Marty56
                                  wrote on last edited by
                                  #48

                                  @apollon77 Ja, dass mit dem "Schattenstate" habe ich natürlich gemacht. Dennoch nicht besonders elegant

                                  HW:NUC (16 GB Ram)
                                  OS: Debian Bullseye, Promox V7, node v16.x npm 8.19.3

                                  apollon77A 1 Reply Last reply
                                  0
                                  • M Marty56

                                    @apollon77 Ja, dass mit dem "Schattenstate" habe ich natürlich gemacht. Dennoch nicht besonders elegant

                                    apollon77A Online
                                    apollon77A Online
                                    apollon77
                                    wrote on last edited by
                                    #49

                                    @marty56 da diese Anforderung meiner Meinung nach ein Edge Case ist finde ich die Lösung sehr elegant ;-)) (ich weiß das du das so nicht hören wolltest 😉 )

                                    Beitrag hat geholfen? Votet rechts unten im Beitrag :-) https://paypal.me/Apollon77 / https://github.com/sponsors/Apollon77

                                    • Debug-Log für Instanz einschalten? Admin -> Instanzen -> Expertenmodus -> Instanz aufklappen - Loglevel ändern
                                    • Logfiles auf Platte /opt/iobroker/log/… nutzen, Admin schneidet Zeilen ab
                                    1 Reply Last reply
                                    3
                                    • apollon77A 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

                                      U Offline
                                      U Offline
                                      UKek
                                      wrote on last edited by
                                      #50

                                      Der Beitrag hat mir sehr geholfen, vielen Dank!

                                      Wie ist das aber mit VIS Buttons?
                                      Offenbar nutzen die immer "Steuere ID.."

                                      Kann ich mit einem Button einen Datenpunkt setzen?
                                      Natürlich könnte ich mit einem Script laufend den Datenpunkt abfragen und ihn beim Ändern des Wertes aktualisieren.
                                      Aber das muß doch auch einfach aus dem Widget heraus gehen?

                                      Viele Grüße
                                      Uwe

                                      apollon77A haus-automatisierungH 2 Replies Last reply
                                      0
                                      • HomoranH Offline
                                        HomoranH Offline
                                        Homoran
                                        Global Moderator Administrators
                                        wrote on last edited by
                                        #51

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

                                        Offenbar nutzen die immer "Steuere ID.."
                                        Kann ich mit einem Button einen Datenpunkt setzen?

                                        so herum ist das kein Problem.

                                        nur mit ACK (aktualisiere) kann man keinen Adapter zum steuern bewegen.

                                        kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

                                        Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                                        der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

                                        1 Reply Last reply
                                        0
                                        • U UKek

                                          Der Beitrag hat mir sehr geholfen, vielen Dank!

                                          Wie ist das aber mit VIS Buttons?
                                          Offenbar nutzen die immer "Steuere ID.."

                                          Kann ich mit einem Button einen Datenpunkt setzen?
                                          Natürlich könnte ich mit einem Script laufend den Datenpunkt abfragen und ihn beim Ändern des Wertes aktualisieren.
                                          Aber das muß doch auch einfach aus dem Widget heraus gehen?

                                          Viele Grüße
                                          Uwe

                                          apollon77A Online
                                          apollon77A Online
                                          apollon77
                                          wrote on last edited by
                                          #52

                                          @ukek was genau willst du „setzen“? Verstehe die Frage nicht.

                                          Beitrag hat geholfen? Votet rechts unten im Beitrag :-) https://paypal.me/Apollon77 / https://github.com/sponsors/Apollon77

                                          • Debug-Log für Instanz einschalten? Admin -> Instanzen -> Expertenmodus -> Instanz aufklappen - Loglevel ändern
                                          • Logfiles auf Platte /opt/iobroker/log/… nutzen, Admin schneidet Zeilen ab
                                          U 1 Reply Last reply
                                          0
                                          Reply
                                          • Reply as topic
                                          Log in to reply
                                          • Oldest to Newest
                                          • Newest to Oldest
                                          • Most Votes


                                          Support us

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

                                          641

                                          Online

                                          32.4k

                                          Users

                                          81.4k

                                          Topics

                                          1.3m

                                          Posts
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Login

                                          • Don't have an account? Register

                                          • Login or register to search.
                                          • First post
                                            Last post
                                          0
                                          • Recent
                                          • Tags
                                          • Unread 0
                                          • Categories
                                          • Unreplied
                                          • Popular
                                          • GitHub
                                          • Docu
                                          • Hilfe