NEWS
createState (Ack)
-
Hi,
ich erzeuge über die Programmierung diverse States, mir ist jetzt aufgefallen das diese States im IoBroker rot bleiben nach dem setzen(also sie sind unbestätigt)
Was muss man da machen damit die normal schwarz werden? Wenn ich über die Programmierung setState ausführe und ack mitgeben werden sie zwar schwarz aber ich hab irgendwie das Gefühl dass ich beim erzeugen was falsch mache denn wenn ich über die GUI vom Broker es setze bleiben sie auch rot.//..... createState(tStateName,0, { read: true, write: true, desc: "executed Commands with google", type: "number", def: 0, value :0, role: 'value' }); ....
beim setzten mit setState bleiben sie rot:
setState(pName,25);
wenn ich es so aufrufe:
setState(pName,25,true);
werden sie zwar schwarz
Viele Grüße
-
@Nahasapee sagte:
wenn ich es so aufrufe:
setState(pName,25,true);
werden sie zwar schwarzDann ist alles in Ordnung. Wenn Ack direkt bei createState() gesetzt werden soll, dann über die Callback-Funktion.
createState(name, init, common, function() { setState(name, init, true); });
-
@Nahasapee Das mit dem Ack hast du richtig verstanden.
Wenn du den Wert über Admin von Hand setzt, dann wird Ack nicht gesetzt, deshalb bleibt der Wert rot.
Wenn du ganz korrekt arbeiten willst, solltest du auf Veränderungen des Datenpunktes hören und nur wenn Ack nicht gesetzt ist (false), dann machst du was auch immer du auf eine Status Änderung machen musst und setzt dann den Datenpunkt auf denselben Wert, aber mit Ack=true. Somit kannst du anhand des Ack unterscheiden, ob der Wert von aussen (Ack=false) oder von "innen" (Ack=true) gesetzt wurde.
-
@UncleSam sagte:
anhand des Ack unterscheiden, ob der Wert von aussen (Ack=false) oder von "innen" (Ack=true) gesetzt wurde.
Das betrifft Datenpunkte in Adaptern, aber nicht eigene, virtuelle Datenpunkte, die mittels createState() erstellt werden.