152 lines
3.6 KiB
YAML
152 lines
3.6 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
|
|
|
|
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"
|
|
|