@mrbinford Viele Weg führen nach Rom. Ich persönlich prüfe in meinen Skripten noch den aktuellen Status von meinem Zielgerät und steuere es dann nur an, falls es den entsprechenden Status nicht sowieso hat.
Bei der letzten Bedingung schreibst Du +5. Meintest Du hier nicht minus 5. Da der Pool doch eigentlich sonst kälteres Wasser aus der Solaranlage noch länger ziehen würde.
Mich persönlich würde noch stören, dass Du es an den Zeitplan der Pumpe koppeln möchtest. Denn so musst Du stets zwei Zeitpläne synchron halten. Vielleicht möchte auch man mal die Pumpe außerhalb des Zeitplans laufen lassen und evtl. steht dann noch der Kugelhahn ungünstig. Ich würde daher einen 5 Minuten Zeitplan nur starten, wenn der Status der Poolpumpe sich auf wahr bestätigt ändert und der dann gestartete Zeitplan löscht sich wieder, wenn die Poolpumpe wieder den Status falsch bestätigt bekommt. Wenn man den Zeitplan der Poolpumpe dann auch noch im gleichen Skript initialisiert, so könnte man diese Differenzprüfung zuvor in eine Blockly-Funktion auslagern und sowohl dann beim Starten der Pumpe ausführen als auch in dem bei Bedarfsfall getriggerten 5 Minutenzeitplan. Es gibt da bestimmt zahlreiche Ideen. Bei von Triggern gestarteten Triggern (z.B. der 5 Minuten Cronjob) muss man aber sehr sauber arbeiten. Wenn man die nicht sauber immer wieder löscht, dann laufen da ganz schnell ganz viele (ungewollte) Trigger. (In dem 5 Minuten-Job würde ich daher sicherheitshalber noch den Status der Poolpumpe prüfen und falls falsch auch hier den Zeitplan löschen.
VG,
Oliver