NEWS
Toggle/Increment/Decrement
-
Hallo Zusammen,
ich versuche gerade ein script zu schreiben welches generell toggle/increment/decrement einbaut, also:
command = toggle => switch state true/false bzw
command = +10 => increment mit 10Ich habe bisher (für scene.0 virtual groups):
$("scene.0.*").on(function (obj) { if (obj.state.val == 'toggle') { setStateDelayed(obj.id,!(obj.oldState.val), 10, true) } else if (obj.state.val.startsWith("+")) { setStateDelayed(obj.id,obj.oldState.val + parseFloat(obj.state.val.substring(1)), 100, true) } else if (obj.state.val.startsWith("-")) { setStateDelayed(obj.id,obj.oldState.val - parseFloat(obj.state.val.substring(1)), 100, true) } });
Das Problem ist, dass setState ohne Delayed nicht funktioniert, da anscheinend der orginal "on" setState command erst nach dem eingenem setState ausgeführt wird. Also der Effekt ohne delayed ist, dass der toggle zwar ausgeführt wird, aber direkt wieder überschrieben. Mit Delayed geht es zwar, ist aber nicht zuverlässig da es auch timing Probleme gibt (gerade mit virtual groups).
Daher meine Frage: Kann ich das verhindern dass das "orginal" on/setState ausgeführt wird oder den zu setzen den Wert manipulieren? Also so dass nurnoch mein "überschriebener" state geschrieben wird?
-
@tyrionwarmage
Du kannst nicht einen Datenpunkt, der ein Kommando als String enthält mit einem booleschen Wert oder einer Zahl überschreiben. Das müssen 3 verschiedene Datenpunkte sein.