if (cur_state == want_state) {
ESP_LOGD("control_valve", "Leaving valve %s", want_state ? "ON" : "OFF");
- if (!want_state && id(pool_pump).state && now > id(control_valve_last_change) + 600) {
- auto t = id(sntp_time).now();
- if (t.is_valid() && t.hour >= 17) {
- ESP_LOGD("control_value", "Cold for ten minutes. Turning pump off for the night");
- id(pool_pump).turn_off();
- }
+ auto t = id(sntp_time).now();
+ if (!t.is_valid())
+ return;
+
+ // Turn pump off if we no longer need heat (for 10 mins) after 5pm.
+ if (t.hour >= 17 && !want_state && id(pool_pump).state &&
+ now > id(control_valve_last_change) + 600) {
+ ESP_LOGD("control_value", "Cold for ten minutes. Turning pump off for the night");
+ id(pool_pump).turn_off();
+ }
+
+ // Turn pump off if it's warm enough, between 7am and 10am (when it comes on anyway).
+ if (t.hour > 7 && t.hour < 10 && outtemp >= 20.0 && !id(pool_pump).state) {
+ ESP_LOGD("control_value", "Roof temperature over 20°C. Turning pump on.");
+ id(pool_pump).turn_on();
}
return;
}
auto t = id(sntp_time).now();
if (t.is_valid()) {
ESP_LOGD("pump_default", "Setting pump switch at %dh", t.hour);
- if (t.hour >= 7 && t.hour < 19)
+ if (t.hour >= 10 && t.hour < 17)
id(pool_pump).turn_on();
else
id(pool_pump).turn_off();
# Turn pool pump on at 7am and off at 7pm
- seconds: 0
minutes: 0
- hours: 7,19
+ hours: 10,19
then:
script.execute:
id: pump_default