NEWS
DP wurde aktualisiert anerkannt ist "egal","Update","Befehl"
-
@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
-
@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.
-
@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
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
-
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?
-
@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()
mitack: 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)
-
@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.
-
@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);
-
@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 hatEigentlich ist ACK dafür gedacht, dass die Änderung erfolgt ist. Wenn einige Adapter das nicht so handhaben, ist es nicht korrekt.
-
@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 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
-
@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.