NEWS
[gelöst] Letzten State wieder aktivieren
-
Hallo,
habe folgendes Script:var scene = "javascript.0.Szenen.Wohnzimmer_Szene"; var thermostatCouch = "javascript.0.Thermostat.Couch"; var steckdoseTV = "hue.0.Steckdose.on"; var lightTV = "hue.0.Hue_ambiance_spot_1.level"; on(scene, function (obj) { if (obj.state.val) { setStateDelayed(thermostatCouch, 23, 2000) setStateDelayed(lightTV, 30, 3000) setState(steckdoseTV, true) } else { setStateDelayed(thermostatCouch, 19, 2000) setStateDelayed(lightTV, 0, 3000) setState(steckdoseTV, false) } })
Sobald ich die Szene auf true Stelle, ändern sich die states der einzelnen Nodes in das, was ich denen dort angebe.
Nun möchte ich jedoch in dem else Statement nicht feste Werte zurückgeben, wenn die Szene wieder deaktiviert wird, sondern die Werte, die zuvor bei den einzelnen Nodes eingetragen waren.Ich denke mal, das geht relativ einfach, wenn ich die vorigen states mit createState Zwischenspeicher.
Gibt es jedoch noch eine bessere Variante? -
@tmartin sagte in Letzten State wieder aktivieren:
Ich denke mal, das geht relativ einfach, wenn ich die vorigen states mit createState Zwischenspeicher.
Wenn, dann wäre das
getState()
. Ich denke, das ist die beste Lösung. -
Super Danke für den Tipp, so sieht es nun aus und funktioniert auch:
var scene = "javascript.0.Szenen.Wohnzimmer_Szene"; var thermostatCouch = "javascript.0.Thermostat.Couch"; var steckdoseTV = "hue.0.Steckdose.on"; var lightTV = "hue.0.Hue_ambiance_spot_1.level"; const oldThermostatCouch = getState(thermostatCouch).val; const oldLightTV = getState(lightTV).val; on(scene, function (obj) { if (obj.state.val) { setStateDelayed(thermostatCouch, 23, 2000) setStateDelayed(lightTV, 30, 3000) setState(steckdoseTV, true) } else { setStateDelayed(thermostatCouch, oldThermostatCouch, 2000) setStateDelayed(lightTV, oldLightTV, 3000) setState(steckdoseTV, false) } })
-
@tmartin ... ist aber wohl nicht ganz das, was du willst: nun speichert er sich die alten Werte, wenn du das Skript startest; du möchtest wohl eher vor dem
setState...()
imif()
die alten Werte speichern, oder? -
@UncleSam
Ne das Speichern der vorigen Werte war mir wichtig, da wenn die Szene wieder deaktiviert wird, die alten Standwartwerte in den Objekten stehen sollen, welche bevor die Szene aktiviert wurde, eingetragen worden waren.Die festen Werte in den oberen if-statement sind ja "feste" Werte, die zu dieser Szene gehören (23° C, 30% Lichtlevel und die Steckdose aktivieren)