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? -
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) } }) -
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)
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden