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

    • Neuer Blog: Fotos und Eindrücke aus Solingen

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

    • 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 last edited by

      Hallo Freunde,

      ich habe da noch mal eine Verständnisfrage zu den Unterpunkten im Trigger:

      fc735426-7c99-4415-b7d2-1a4f7997dc31-image.png

      Bislang hatte ich immer "egal" dort gelassen. In irgendeinem nicht allzu alten Post von @UncleSam hatte ich gelesen, dass er immer "Update" nehmen/verlangen würde, um sicher zu sein, dass der Trigger auch wirklich stimmt.

      Das oben abgebildete Script soll triggern, wenn der DP Stromzaehler-Taktung aktualisiert wurde. Etwa alle 120 Sekunden zählt er um eins hoch. Dann müsste er doch bei "Update" eigentlich triggern und den Debug "Zeitstempel" des DP ausgeben.
      Das geht aber nicht, es funktioniert nur, wenn ich "egal" wähle".

      Unter dem Hinweis auf die Forderung, dass jeder Trigger "anerkannt ist Update" haben sollte hatte ich meine 25 anderen Skripte alle von egal auf Update geändert und die funktionieren alle.

      Wo ist mein Knoten? Warum triggert das oben gezeigte nicht?

      Danke!

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

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

        Warum triggert das oben gezeigte nicht?

        Update erwartet ack = true, das aber von der Stromzähler Taktung nicht kommt.

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

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

          Update erwartet ack = true

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

          FredF 1 Reply Last reply Reply Quote 0
          • 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

                                  948
                                  Online

                                  31.9k
                                  Users

                                  80.3k
                                  Topics

                                  1.3m
                                  Posts

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