NEWS
[gelöst]Verständnisfrage setState('Kitchen.Light.Lamp', false, false, function () {
-
Hallo , habe dazu nichts gefunden…
Deshalb hier meine Frage...
Habe mittlerweile diverse scripte am Laufen und auch selbst geschrieben und verprobt.
Natürlich habe ich auch Scriptbeispiele hier aufgegriffen und auf meine Bedüürfnisse angepasst, was auch schon Prima klappt...
Aber was sich mir nicht ganz erschließt sind folgende Beispiele...
Warum wird ein state zuerst mit false und dann wieder mit true gesetzt oder 2 mal false false...
Kann mir das einer in einem Dreizeiler erklären?
1. setStateDelayed('Kitchen.Light.Lamp', false, 5000, false, function () {
2. setState(javascript.0.xxxxx', false, true);
-
Warum wird ein state zuerst mit false und dann wieder mit true gesetzt oder 2 mal false false… `
Das erste ist der Wert, das zweite die Bestätigung (siehe https://github.com/ioBroker/ioBroker.javascript/blob/master/doc/en/javascript.md#setstate). -
Danke für den Hinweis, diesen Part habe ich überlesen…Das Beispiel hatte ich ja aus der Doku...
Wenn die folgenden Zeilen identisch sind, warum macht man das dann? Was habe ich für einen Vorteil, wenn ich das so mache?
Note: The following commands are identical
setState('myState', 1, false);
setState('myState', {val: 1, ack: false});
setState('myState', 1);
-
Wenn die folgenden Zeilen identisch sind, warum macht man das dann? `
Ich mache es immer so:setState('adapter.0.myState', 1); // Ack false, wird gesendet setState('myState', 1, true); // Ack true, wird nicht gesendet
-
Danke für deine Geduld, aber wenn ich mich ehrlich mache habe icv den sinn immer noch nicht kapiert.
Hast du ein beispiel mit einer erklärung wo das ack gebraucht wird und sinn macht?
Gesendet von meinem SM-G800F mit Tapatalk
-
Das ack Flag wird true gesetzt wenn ein Status gesetzt wurde und der Wert bestätigt wurde. Wenn ack = false vom Skript gesetzt wird, wird erwartet das der Empfänger des Wertes diesen bestätigt.
Was paul53 also sagen wollte ist das Variante 1
setState('adapter.0.myState', 1); // Ack false, wird gesendet
einen Wert setzt der dann an einen Empfänger gesendet wird.
Und Variante 2
setState('myState', 1, true); // Ack true, wird nicht gesendet
nicht gesendet wird weil du/dein Skript ja den Wert schon bestätigt habt.
Das ganze hat was damit zu tun das ein Adapter auf einen State reagiert wenn er gesetzt wird, wird aber ack = true gesetzt weis der Adapter das nichts mehr zu tun ist.
-
Ok, danke für die Ausführung…Das heisst, wenn ich ein Objekt/ State eines anderen Adapter beschreibe, kann man das Ack weglassen.
Wird innerhalb des Adapter ein Objekt ( z.B. innerhalb des Javascript Adapter ) beschrieben wird, sollte ein Ack true eingetragen werden?
Was passiert wenn das nicht berücksichtigt wird? Unnötiger Traffic ausserhalb der Javascript Instanz?
Weil funktionieren tut es ja trotzdem...
-
Das heisst, wenn ich ein Objekt/ State eines anderen Adapter beschreibe, kann man das Ack weglassen. `
Man <u>muss</u> das Ack weglassen oder false zuweisen, wenn der Adapter senden soll (was die Regel ist).
@smartboart:Wird innerhalb des Adapter ein Objekt ( z.B. innerhalb des Javascript Adapter ) beschrieben wird, sollte ein Ack true eingetragen werden? `
Ja. Allgemeiner: Wenn ein virtueller Datenpunkt (z.B. für Vis) beschrieben wird, sollte (muss nicht) Ack true eingetragen werden.
@smartboart:Was passiert wenn das nicht berücksichtigt wird? Unnötiger Traffic ausserhalb der Javascript Instanz? `
Nein, es passiert nichts, außer dass im Reiter "Objekte" die Werte dauerhaft in rot angezeigt werden. -
Ok, jetzt hab ich es…Dann ist ja alles paletti und kann bleiben wie es ist......
Vielen Dank euch Beiden für eure Ausführungen...