Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. Wozu ist der ack-Flag da?

    NEWS

    • Monatsrückblick - April 2025

    • Minor js-controller 7.0.7 Update in latest repo

    • Save The Date: ioBroker@Smart Living Forum Solingen, 14.06.

    Wozu ist der ack-Flag da?

    This topic has been deleted. Only users with topic management privileges can see it.
    • Homoran
      Homoran Global Moderator Administrators @mickym last edited by

      @mickym sagte in js-controller 3.3 jetzt im STABLE!:

      Ich gehe mal davon aus, ohne die Internas zu kennen, dass die Warnung nur bei Adaptern auftaucht, aber nicht wenn DU mit VIS oder Deine Logikmaschine einen Wert ohne ACK setzt.

      da sind wir schon zwei!
      Ich fabuliere mal weiter: Vielleicht ist auch der Namespace 0_userdata.0 (und javascript.0) von der Kontrolle ausgenommen.
      Ich habe diese Meldungen (noch) nicht.

      @mickym sagte in js-controller 3.3 jetzt im STABLE!:

      Im Gegenteil Du "steuerst" ja gerade mit dem NICHT-ACK Flag setzten in einem Skript, dass der Adapter erkennt - ah eine Änderung - muss was tun - und bestätigen, dass das Gemachte erfolgreich war.

      Das war das was ich eben meinte:
      Wenn man das Ganze auch für eigene Scripte zu Ende denkt, müsste/könnte man auch dort mit den Flags arbeiten um z.B. bei einem Datenpunkt zu erkennen, ob eine Bedienung über die vis stattgefunden hatte und nur dann mit dem eigenen Skript zu reagieren und anschließend (wie ein Adapter) ack=true zu setzen

      mickym 1 Reply Last reply Reply Quote 0
      • Homoran
        Homoran Global Moderator Administrators @IdleBit last edited by

        @idlebit sagte in js-controller 3.3 jetzt im STABLE!:

        Genau das sagte ich doch?!

        dann war das unglücklich formuliert:

        @idlebit sagte in js-controller 3.3 jetzt im STABLE!:

        Wenn der Script den Datenpunkt erfolgreich verarbeitet hat, bestätigt er diesen mit den selben Wert und ack=true

        Das bedeutete für mich, dass jedes Skript das von sich aus macht

        IdleBit paul53 2 Replies Last reply Reply Quote 0
        • IdleBit
          IdleBit @Homoran last edited by IdleBit

          @homoran Ok, ich meinte eher das es so sein sollte wenn man einen Script schreibt 🙂

          Hier noch ein Snipped:

          on({id: dp_present, change: 'ne'}, (obj)=>{
              ultraCooleLogic(obj.state.val);    
              setState(obj.id, obj.state.val, true);
          });
          
          1 Reply Last reply Reply Quote 1
          • apollon77
            apollon77 @IdleBit last edited by

            @idlebit NNaaajjjaaaaaaa ... wenn die Meldung kommt dann wird ein Read-Only State geschrieben ... die Hauptfrage für mich ist : Warum denn überhaupt? Aber ja eine Lösung (die pragmatischste aber nicht die beste) ist das von Dir vorgeschlagene. Die richtige Lösung ist zu schauen warum man überhaupt auf ein Read-Only-State schreibt und warum

            Homoran IdleBit 2 Replies Last reply Reply Quote 0
            • paul53
              paul53 @Homoran last edited by

              @homoran sagte: Das bedeutete für mich, dass jedes Skript das von sich aus macht

              Nur dann, wenn das Skript in den (virtuellen) Datenpunkt schreibt. Wird der Datenpunkt im Skript nur gelesen, kann/sollte ack auf false bleiben.

              1 Reply Last reply Reply Quote 0
              • Homoran
                Homoran Global Moderator Administrators @apollon77 last edited by

                @apollon77 sagte in js-controller 3.3 jetzt im STABLE!:

                wenn die Meldung kommt dann wird ein Read-Only State geschrieben

                cool, es geht also gar nicht um ack 😂

                Danke für die Info

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

                  @homoran sagte in js-controller 3.3 jetzt im STABLE!:

                  @mickym sagte in js-controller 3.3 jetzt im STABLE!:

                  Im Gegenteil Du "steuerst" ja gerade mit dem NICHT-ACK Flag setzten in einem Skript, dass der Adapter erkennt - ah eine Änderung - muss was tun - und bestätigen, dass das Gemachte erfolgreich war.

                  Das war das was ich eben meinte:
                  Wenn man das Ganze auch für eigene Scripte zu Ende denkt, müsste/könnte man auch dort mit den Flags arbeiten um z.B. bei einem Datenpunkt zu erkennen, ob eine Bedienung über die vis stattgefunden hatte und nur dann mit dem eigenen Skript zu reagieren und anschließend (wie ein Adapter) ack=true zu setzen

                  In meinen Skripts (auch mit NodeRed 😉 ) - mache ich das auch so. Sprich ändere ich ein Objekt in einem Adapter - dann wird ACK=false (also nicht gesetzt).
                  Schreibe ich hingegen selbst einen Wert unter 0_userdata.0 - setze ich immer das ACK=true Flag, da es ja sonst niemand macht. 😉

                  Im Prinzip muss ich als Skript-Schreiber mir nur überlegen, welchen Wert ich aktualisiere und mir überlegen - gibts da jemand oder was, der meinen Wert bestätigen kann. 😉 😉

                  1 Reply Last reply Reply Quote 1
                  • apollon77
                    apollon77 @cash last edited by

                    Auch wenn es schon diskutiert wurde noch mein "senf dazu"

                    Kurz ist es:

                    • ack=false bedeutet "Der gesetzte Wert ist ein Steuerkommando was besagt das der State eine Aktion ausführt mit diesem Wert. Erstmal egal was dahinter passiert. Auch egal ob die Logik wird den Wert so weitersendet oder was anderes damit tut. Mit ack=false hat der Wert faktisch "keine klare Bedeutung" weil unklar ist was der echte Gerätszustand ist.
                    • ack=true bedeutet "Das ist der aktuelle Wert der so vom "gerät" bzw von der "Logik die hinter diesem State liegt" bestätigt wurde (daher auch der name ack=="acknowledged"). Das ist damit kein Kommando sondern ein" Fakt"

                    @cash sagte in js-controller 3.3 jetzt im STABLE!:

                    Angenommen ich habe einen Datenpunkt erstellt z. B. automatisch saugen als boolean. Einmal täglich läuft ein Script welches den Sauger startet aber nur wenn der Datenpunkt auf true steht.
                    Wenn ich den nun per vis setze wird er mit ack false gesetzt oder? Muss das nun per ack = true erfolgen?

                    Interessanter Fall. Formal korrekt wäre das das true mit ack=false geschrieben wurd und dein Skript wenn es den Sauger dann "einmalig" gestartet hat das state mit "value=false, ack=true" quasi zurücksetzt.
                    Und korrekt vis setzt immer ack=false weil Vis im Normalfall immer etweas steuern will!

                    @cash sagte in js-controller 3.3 jetzt im STABLE!:

                    Angenommen ich habe einen eigenen Datenpunkt erstellt "Licht" diesen habe ich in Yahka Adapter eingebunden. Wenn ich per Homekit das Licht auf true setzte reagiert mein Script und schaltet das Licht ein.
                    Muss Yahka den Wert mit ack=true setzen? Oder muss ich per Script die Änderung mit true bestätigen?

                    Yahka MUSS (wenn es ein Steuerkommando ist!) mit ack=false setzen weil sonst keine Steueraktion erfolgen sollte. Und dein Skript sollte auf "ack=true" nicht reagieren.

                    Ob Du die Aktion mit "true" bestätigst oder nicht bleibt Dir überlassen (in dem Fall gehen ja andere States - nämlich die der Lichter - auf true. Wenn dein State also ein "Button" ist dann weiss der ja eh nicht was der echte Status ist (kannst du deinem Wand-taster ja auch nicht ansehen). Also einen Button zu bestätigen ist faktisch falsch. Wenn es ein Schalter wäre dann macht es sinn zu bestätigen weil der einen klaren Zustand hat.

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

                      @apollon77

                      Hab noch eine Detailfrage in Verbindung mit dem ack-Flag

                      folgende Situation:
                      Im tvprogram-vis widget schreibe ich diverse Daten direkt in Datenpunkte.
                      Darunter sind auch Datenpunkte, die auf readonly stehen, da der Nutzer diese nicht beschreiben sollte.
                      Leider bietet die vis-Funktion setValue nicht die Möglichkeit optional das ack-Flag mit anzugeben.

                      Es gibt jetzt 2 Möglichkeiten wie man das beheben könnte:

                      1. in vis wird die Funktion setValue erweitert, so das man das ackFlag=true setzen kann
                      2. ich sende die Informationen erst per sendTo an den Adapter, so das der Adapter die Daten dann in den Datenpunkt schreibt.

                      Wie sollen wir damit umgtehen?

                      paul53 apollon77 2 Replies Last reply Reply Quote 0
                      • paul53
                        paul53 @OliverIO last edited by

                        @oliverio sagte: Darunter sind auch Datenpunkte, die auf readonly stehen, da der Nutzer diese nicht beschreiben sollte.

                        Du willst sie trotzdem per Vis beschreiben? Wozu sind sie dann "read only"?

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

                          @paul53
                          die widget logik beschreibt diese intern.
                          beispiel: in einem steht die configuration drin, welche senderauswahl im widget angezeigt werden soll.
                          das widget hat dazu eine eigene oberfläche die der benutzer bedienen kann. das widget schreibt dann json daten. dies sollten die nutzer nicht selbst tun.

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

                            @paul53 sagte in Wozu ist der ack-Flag da?:

                            @oliverio sagte: Darunter sind auch Datenpunkte, die auf readonly stehen, da der Nutzer diese nicht beschreiben sollte.

                            Du willst sie trotzdem per Vis beschreiben? Wozu sind sie dann "read only"?

                            @paul53
                            die widget logik beschreibt diese intern.
                            beispiel: in einem steht die configuration drin, welche senderauswahl im widget angezeigt werden soll.
                            das widget hat dazu eine eigene oberfläche die der benutzer bedienen kann. das widget schreibt dann json daten. dies sollten die nutzer nicht selbst tun.

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

                              @oliverio Also wenn es unbedingt das Widget sein muss 8was ein eher ungewöhnliches Konstrukt ist) brauchst Du wohl das genannte neue vis Feature 🙂

                              Sonst mach option 2

                              1 Reply Last reply Reply Quote 0
                              • Negalein
                                Negalein Global Moderator last edited by Negalein

                                Hallo

                                Habe aktuell wiedermal dieses ack-Flag Problem.

                                fast 2 Monate war Ruhe.
                                Heute wieder selbes Problem.

                                web.0 2021-08-24 22:01:47.187 warn Read-only state "alexa2.0.Echo-Devices.G090U5099045059V.Player.mediaProgress" has been written without ack-flag with value "210"
                                

                                Ich hab damals nichts geändert.
                                Widget ist auch unverändert.

                                [{"tpl":"tplValueString","data":{"oid":"alexa2.0.Echo-Devices.G090U5099045059V.Player.mediaProgressStr","g_fixed":true,"g_visibility":true,"g_css_font_text":true,"g_css_background":false,"g_css_shadow_padding":false,"g_css_border":false,"g_gestures":false,"g_signals":false,"g_last_change":false,"visibility-cond":"==","visibility-val":"","visibility-groups-action":"hide","signals-cond-0":"==","signals-val-0":true,"signals-icon-0":"/vis.0/Buchenweg/lowbattery.png","signals-icon-size-0":0,"signals-blink-0":false,"signals-horz-0":0,"signals-vert-0":0,"signals-hide-edit-0":false,"signals-cond-1":"==","signals-val-1":true,"signals-icon-1":"/vis.0/Buchenweg/lowbattery.png","signals-icon-size-1":0,"signals-blink-1":false,"signals-horz-1":0,"signals-vert-1":0,"signals-hide-edit-1":false,"signals-cond-2":"==","signals-val-2":true,"signals-icon-2":"/vis.0/Buchenweg/lowbattery.png","signals-icon-size-2":0,"signals-blink-2":false,"signals-horz-2":0,"signals-vert-2":0,"signals-hide-edit-2":false,"lc-type":"last-change","lc-is-interval":true,"lc-is-moment":false,"lc-format":"","lc-position-vert":"top","lc-position-horz":"right","lc-offset-vert":0,"lc-offset-horz":0,"lc-font-size":"12px","lc-font-family":"","lc-font-style":"","lc-bkg-color":"","lc-color":"","lc-border-width":"0","lc-border-style":"","lc-border-color":"","lc-border-radius":10,"lc-zindex":0,"visibility-oid":"","html_prepend":"","class":"mdui-blue-glow"},"style":{"left":"354px","top":"503px","color":"#ffffff","width":"78px","height":"37px","text-align":"left","font-style":"normal","font-size":"x-large","z-index":"58","font-weight":"bold","font-family":"RobotoCondensed-Light","text-shadow":"rgba(0, 0, 0, 0.9) 3px 3px 4px"},"widgetSet":"basic"}]
                                

                                1625776995006-edit-vis.png

                                Liegt das Problem an Alexa, an VIS oder an Web?
                                Was kann ich machen, damit es wieder normal ist? Derzeit wird das Log mit den Meldungen geflutet.

                                1 Reply Last reply Reply Quote 0
                                • metaxa
                                  metaxa @Homoran last edited by metaxa

                                  Servus @homoran!

                                  ich habe diesen Thread zwar gelesen, aber scheinbar doch nicht restlos verstanden. Folgende Situation:

                                  Enigma2 DP
                                  5c1c7f6d-0a26-4251-acfa-a6338899e1cd-image.png

                                  {
                                   "_id": "enigma2.0.command.SET_VOLUME",
                                   "type": "state",
                                   "common": {
                                     "role": "level.volume",
                                     "name": "SET VOLUME",
                                     "type": "number",
                                     "min": 0,
                                     "max": 100,
                                     "read": true,
                                     "write": true
                                   },
                                   "native": {},
                                   "from": "system.adapter.enigma2.0",
                                   "ts": 1640339071751,
                                   "acl": {
                                     "object": 1636,
                                     "state": 1636,
                                     "owner": "system.user.admin",
                                     "ownerGroup": "system.group.administrator"
                                   },
                                   "user": "system.user.admin"
                                  }
                                  


                                  Sobald ich unter Objekten eine Zahl (egal 10, oder 10.0) eingebe,
                                  a0c939f7-a11f-407a-8df8-e0f67cb5dce4-image.png
                                  wird die Lautstärke erfolgreich am Receiver geändert. Gleichzeitig bekomme ich allerdings einen Logeintrag und der übergebene Wert verschwindet im DP:

                                  enigma2.0
                                  2021-12-28 09:58:54.682	info	State value to set for "enigma2.0.command.SET_VOLUME" has to be type "number" but received type "string"
                                  

                                  Detto wenn ich in einem Blockly einen Wert setze:
                                  19361630-c240-405b-82cd-dc49924369bd-image.png


                                  f3e833a3-542a-420e-94f6-1772c57ce012-image.png

                                  {
                                    "common": {
                                      "name": "Wunsch Volume 0-100%",
                                      "desc": "Manuell erzeugt",
                                      "role": "level.volume",
                                      "type": "number",
                                      "min": 0,
                                      "max": 100,
                                      "read": true,
                                      "write": true,
                                      "def": 0
                                    },
                                    "type": "state",
                                    "_id": "0_userdata.0.Audio_Video.WoZ.Wunsch_Volume_iQ",
                                    "acl": {
                                      "object": 1636,
                                      "state": 1636,
                                      "owner": "system.user.admin",
                                      "ownerGroup": "system.group.administrator"
                                    },
                                    "from": "system.adapter.admin.0",
                                    "user": "system.user.admin",
                                    "ts": 1640512411775
                                  }
                                  

                                  Setze ich den Wert allerdings mit "Bestätigt"
                                  05b52bb7-2b95-4407-8969-a38141c81add-image.png
                                  Bleibt der Wert stehen und es kommt auch kein Logeintrag.
                                  b8de10d1-667c-4f79-a118-bdf539cae8b8-image.png

                                  Wie kann ich dieses "Bestätigt" in einem Blockly simulieren? Oder bin ich da gedanklich komplett falsch abgebogen?

                                  Homoran 1 Reply Last reply Reply Quote 0
                                  • Homoran
                                    Homoran Global Moderator Administrators @metaxa last edited by Homoran

                                    @metaxa sagte in Wozu ist der ack-Flag da?:

                                    Oder bin ich da gedanklich komplett falsch abgebogen?

                                    Hallo MXA
                                    nicht ganz 😉

                                    @metaxa sagte in Wozu ist der ack-Flag da?:

                                    Wie kann ich dieses "Bestätigt" in einem Blockly simulieren?

                                    mit "aktualisiere", dann ist ack=true - dann wird aber der Adapter nichts machen und deine Box behält die alte Lautstärke
                                    mit "steuere" ist ack = false

                                    @metaxa sagte in Wozu ist der ack-Flag da?:

                                    Gleichzeitig bekomme ich allerdings einen Logeintrag und der übergebene Wert verschwindet im DP:

                                    Das muss ich mal später näher ansehen.
                                    Sieht eigentlich gut aus und verschwinden soll wegen der Meldung nix

                                    metaxa 1 Reply Last reply Reply Quote 0
                                    • metaxa
                                      metaxa @Homoran last edited by

                                      @homoran sagte in Wozu ist der ack-Flag da?:

                                      mit "aktualisiere", dann ist ack=true - dann wird aber der Adapter nichts machen und deine Box behält die alte Lautstärke
                                      mit "steuere" ist ack = false

                                      Naja, blöd. "aktualisiere" schaltet nix, bringt aber auch keine irreführende Fehlermeldung. "steure" ist richtig und schaltet auch, bringt aber die Fehlermeldung.

                                      Im Log steht eh ständig viel drinnen, kommt darauf nicht an, aber unsauber ist es allemal.

                                      @homoran sagte in Wozu ist der ack-Flag da?:

                                      Das muss ich mal später näher ansehen.

                                      Überhaupt kein Problem, ist eher ein optisches Problem 🙂 , lieben Dank Rainer!

                                      Homoran 1 Reply Last reply Reply Quote 0
                                      • Homoran
                                        Homoran Global Moderator Administrators @metaxa last edited by

                                        @metaxa sagte in Wozu ist der ack-Flag da?:

                                        "steure" ist richtig und schaltet auch, bringt aber die Fehlermeldung.

                                        kannst du da mal den enigma-Adapter auf debug schalten und nachsehen was da passiert
                                        ich vermute, dass vorher vom Receiver die bestehende Lautstärke als Sring kommt

                                        metaxa 1 Reply Last reply Reply Quote 1
                                        • metaxa
                                          metaxa @Homoran last edited by

                                          @homoran sagte in Wozu ist der ack-Flag da?:

                                          kannst du da mal den enigma-Adapter auf debug schalten und nachsehen was da passiert

                                          Log ohne "Bestätigt":

                                          enigma2.0
                                          2021-12-28 11:39:52.144	debug	Box Muted:false
                                          
                                          enigma2.0
                                          2021-12-28 11:39:52.144	debug	Box Volume:10
                                          
                                          enigma2.0
                                          2021-12-28 11:39:52.143	debug	evaluating response for command 'GETVOLUME': {"e2volume":{"e2result":["True"],"e2resulttext":["Status"],"e2current":["10"],"e2ismuted":["False"]}}
                                          
                                          enigma2.0
                                          2021-12-28 11:39:52.103	info	State value to set for "enigma2.0.command.SET_VOLUME" has to be type "number" but received type "string"
                                          
                                          enigma2.0
                                          2021-12-28 11:39:52.076	debug	using authorization with user 'root'
                                          
                                          enigma2.0
                                          2021-12-28 11:39:52.062	debug	creating request for command 'GETVOLUME' (deviceId: [object Object], host: 192.168.0.58, port: 80, path: '/web/vol')
                                          
                                          enigma2.0
                                          2021-12-28 11:39:51.996	debug	using authorization with user 'root'
                                          
                                          enigma2.0
                                          2021-12-28 11:39:51.994	debug	creating request for command 'NONE' (deviceId: 1, host: 192.168.0.58, port: 80, path: '/web/vol?set=set10')
                                          

                                          Log mit "Bestätigt":
                                          0, nix, kein Eintrag

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

                                            @metaxa sagte in Wozu ist der ack-Flag da?:

                                            creating request for command 'GETVOLUME'

                                            wie ich vermutete
                                            Ich denke dass der Befehl es zu ändern SETVOLUME heißen müsste

                                            Ist aber alles nur Halbwissen

                                            BLÖDSINN!!!
                                            da steht es doch..

                                            @metaxa sagte in Wozu ist der ack-Flag da?:

                                            State value to set for "enigma2.0.command.SET_VOLUME" has to be type "number" but received type "string"

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

                                            Support us

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

                                            1.0k
                                            Online

                                            31.6k
                                            Users

                                            79.4k
                                            Topics

                                            1.3m
                                            Posts

                                            10
                                            33
                                            4958
                                            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