NEWS
2 Thermostate über einen Alias steuern
-
Hallo,
ich möchte gern die Thermostate in einem Raum über einen gemeinsamen Alias DP steuern.
Gibt es dafür eine einfache Möglichkeit?Für den Boost Modus der Thermostate habe ich mir mal ein Script gebastelt, das soweit den Zweck erfüllt:
on({id: "bshb.0.roomClimateControl_hz_3.RoomClimateControl.boostMode"/*RCC.WOHNZIMMER.RoomClimateControl.boostMode*/, change: "ne"}, async function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; if (getState("bshb.0.roomClimateControl_hz_3.RoomClimateControl.boostMode").val == true) { setState("bshb.0.roomClimateControl_hz_4.RoomClimateControl.boostMode"/*RCC.Wohnzimmer Couch.RoomClimateControl.boostMode*/, true); } else { setState("bshb.0.roomClimateControl_hz_4.RoomClimateControl.boostMode"/*RCC.Wohnzimmer Couch.RoomClimateControl.boostMode*/, false); } console.log(('Boost Mode wurde gesetzt auf:' + String((obj.state ? obj.state.val : "")))); }); on({id: "bshb.0.roomClimateControl_hz_4.RoomClimateControl.boostMode"/*RCC.Wohnzimmer Couch.RoomClimateControl.boostMode*/, change: "ne"}, async function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; if (getState("bshb.0.roomClimateControl_hz_4.RoomClimateControl.boostMode").val == true) { setState("bshb.0.roomClimateControl_hz_3.RoomClimateControl.boostMode"/*RCC.WOHNZIMMER.RoomClimateControl.boostMode*/, true); } else { setState("bshb.0.roomClimateControl_hz_3.RoomClimateControl.boostMode"/*RCC.WOHNZIMMER.RoomClimateControl.boostMode*/, false); } console.log(('Boost Mode wurde gesetzt auf:' + String((obj.state ? obj.state.val : "")))); });
Problem dabei:
Wenn das Script nicht läuft, funktioniert das ganze natürlich nicht.Gibt es also eine andere Möglichkeit sowas zu machen, oder gibt es alternativ die Möglichkeit aus einem anderen Script heraus zu überwachen ob ein Script läuft und es ggf. neu zu starten?
Danke!
-
@warhammer73 sagte in 2 Thermostate über einen Alias steuern:
Wenn das Script nicht läuft, funktioniert das ganze natürlich nicht.
Und warum läuft das Script nicht?
Scripte mit Triggern müssen immer laufen!
Kurze Erklärung dazu:
Wenn Du das Script startest, siehst Du im Log sinngemäß... 0 Schedules 2 Subscriptions ...
Das heisst, dass mit dem Start des Scriptes zwei Ereignisbehandlungen an die Änderung der Datenpunkte gebunden wurden. Die beiden Trigger haben quasi die Änderungen der beiden DP "abonniert" und möchten gerne darauf reagieren. Das können sie natürlich nur, solange das Script auch läuft.Außderdem:
Dein Trigger reagiert aufbshb.0.roomClimateControl_hz_3.RoomClimateControl.boostMode
.
Dessen Wert musst Du nicht nochmal mitgetState()
lesen - der Wert steht invalue
zur Verfügung.Das Ganze kann man also deutlich vereinfachen (hier nur beispielhaft an einem der beiden Trigger):
on({id: "bshb.0.roomClimateControl_hz_3.RoomClimateControl.boostMode", change: "ne"}, async function (obj) { var value = obj.state.val; setState("bshb.0.roomClimateControl_hz_4.RoomClimateControl.boostMode", value); console.log('Boost Mode wurde gesetzt auf: ' + String(value));
-
@codierknecht
... weil XY passiert ist. Warum auch immer wird z.B. dieses Script unregelmässig beendet. Nicht tragisch, war eh nur ein Test ob es geht oder nicht aber für die reine Temperaturregelung sollte es schon zuverlässig funktionieren. Also braucht es (Wenn es denn wirklich nur per Script zu lösen ist) irgend eine Möglichkeit zyklisch zu kontrollieren ob das Script noch läuft und die Möglichkeit es wieder zu starten.Ok, wieder was gelernt. Danke.
-
@warhammer73 sagte in 2 Thermostate über einen Alias steuern:
Also braucht es (Wenn es denn wirklich nur per Script zu lösen ist) irgend eine Möglichkeit zyklisch zu kontrollieren ob das Script noch läuft und die Möglichkeit es wieder zu starten.
Moin,
es gibt noch den
Szenen
Adapter, der eigentlich für solche Sachen gedacht ist.VG
Bernd -
@warhammer73 sagte in 2 Thermostate über einen Alias steuern:
Warum auch immer wird z.B. dieses Script unregelmässig beendet
Das sollte natürlich auf keinen Fall passieren.
Darum macht es sicher Sinn, hier zunächst nach der Ursache zu forschen.
Ist das das einzige Script, das plötzlich auf die Bretter geht?
Steht etwas im Log, mit dem man hier auf Ursachenforschung gehen könnte?