espHome-NBS-files/a3pool.yaml

158 lines
3.7 KiB
YAML

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
ap:
ssid: a3pool_rescue
password: !secret rescue_ap_password
captive_portal:
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"