esphome: name: a3pool esp8266: board: nodemcuv2 ota: password: !secret a3poolpasswd api: encryption: key: !secret a3poolkey logger: wifi: ssid: !secret wifi_ssid password: !secret wifi_password fast_connect: true binary_sensor: - platform: gpio pin: number: 12 inverted: true mode: input: true pullup: true id: pump_state datetime: - platform: template name: Pool Pump Start Time id: pool_start type: time optimistic: true restore_value: true initial_value: "08:00:00" - platform: template name: Pool Pump End Time id: pool_end type: time optimistic: true restore_value: true initial_value: "20:00:00" button: - platform: template name: "Sync To Clock" on_press: then: - lambda: |- int startSec = (int) (id(pool_start).hour * 3600) + (id(pool_start).minute * 60) + id(pool_start).second; int endSec = (int) (id(pool_end).hour * 3600) + (id(pool_end).minute * 60) + id(pool_end).second; int nowSec = (id(a3poolTime).now().hour * 3600) + (id(a3poolTime).now().minute * 60) + id(a3poolTime).now().second; if(!id(control).state){ // Make sure wierd error or whatever return; } if(startSec < endSec){ if(startSec < nowSec && nowSec < endSec){ id(pump).turn_on(); } else{ id(pump).turn_off(); } } else if(startSec > endSec){ if(endSec < nowSec && nowSec < startSec){ id(pump).turn_off(); } else{ id(pump).turn_on(); } } switch: - platform: gpio pin: 5 id: relay on_turn_on: - delay: 500ms - switch.turn_off: relay - platform: template name: "Automate Control" id: control optimistic: true restore_mode: RESTORE_DEFAULT_OFF - platform: template optimistic: false name: pump id: pump lambda: |- if (id(pump_state).state) { return true; } else { return false; } turn_on_action: - if: condition: lambda: 'return id(pump_state).state == false;' then: - switch.turn_on: relay - delay: 500ms - switch.turn_off: relay turn_off_action: - if: condition: lambda: 'return id(pump_state).state;' then: - switch.turn_on: relay - delay: 500ms - switch.turn_off: relay time: timezone: "Europe/Vienna" id: a3poolTime platform: sntp on_time: - seconds: 0 months: 4-10 then: - if: condition: lambda: 'return id(a3poolTime).now().hour == id(pool_start).hour && id(a3poolTime).now().minute == id(pool_start).minute/* && id(a3poolTime).now().second == id(pool_start).second*/ && id(control).state;' then: - switch.turn_on: pump - seconds: 0 months: 4-10 then: - if: condition: lambda: 'return id(a3poolTime).now().hour == id(pool_end).hour && id(a3poolTime).now().minute == id(pool_end).minute/* && id(a3poolTime).now().second == id(pool_end).second*/ && id(control).state;' then: - switch.turn_off: pump dallas: - pin: D4 update_interval: 10s sensor: - platform: dallas address: 0xd1000007494b3628 name: "Pool Temperature" - platform: dallas address: 0x440000073de2e728 name: "Solar Temperature"