Olá pessoal
Estou com uma dúvida e precisando de ajuda com o espHome
Criei um dispositivo para controlar duas caixas d’águas. Sendo uma no térreo, essa caixa é responsável por armazenar a água que bombeada de uma ponteira. E pela segunda caixa d’água que é responsável por armazenar água em terreno elevado ela enche com a caixa térrea.
Atualmente tenho um sistema de boias elétricas que funcionam em conjunto. mantendo as duas caixas sempre cheias ou seja duas bombas de d’água fazem o trabalho.
Dado o contexto, quero automatizar, criei uma placa WEMOS D1 + um expansor de portas, conectados a 2 relay de carga até 30A(acionaram os motores)
Se eu conectar da forma que está, manualmente pelos switch eu controlo o acionamento dos motores, até aí tudo OK.
Mas quero utilizar uma automação. duas na verdade.
Automação via a plataforma do HA e a outra automação dentro do próprios dispositivo.
Qual o objetivo: Dados o cenário que a comunicação com o dispositivo e o HA falhe, quero que opere em modo “default”
pra isso estou tentando criar condicionais que verifique se a conexão com WEMOS está OK, caso contrário execute o modo “default” liga o motor pra encher se o nível estiver vazio.
As boias já estão instaladas
veja no código onde quero aplicar, já tentei algo com “lambdas” mas me falta conhecimento para essa ação, procure no código esse trecho: # “IF” caso a conexão wifi ou com servidor HA esteja interrompida
esphome:
name: "esp8266-pikachu"
friendly_name: pikachu
includes:
- currentsensor.h
libraries:
- "EmonLib"
esp8266:
board: d1_mini
# Enable logging
logger:
# Enable Home Assistant API
api:
encryption:
key: "ZaeN4JG+PuAM7xGhXD06ky2NpkHwbGUBVFbeRxjKUZ8="
ota:
password: "f67b317f1ecb23085da2b06f7bbb034b"
wifi:
id: id_wifi
ssid: !secret wifi_ssid
password: !secret wifi_password
fast_connect: True
#use_address: gaitolini.duckdns.org
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: "Esp8266-Wemos Fallback Hotspot"
password: "t6AeqsBZq1eS"
manual_ip:
# Set this to the IP of the ESP
static_ip: 192.168.2.74
# Set this to the IP address of the router. Often ends with .1
gateway: 192.168.2.1
# The subnet of the network. 255.255.255.0 works for most home networks.
subnet: 255.255.255.0
dns1: 192.168.2.1
dns2: 8.8.8.8
captive_portal:
mqtt:
broker: 192.168.2.75
port: 1883
username: mqtt-gaitolini
password: gaitolini
discovery: true
discovery_retain: true
birth_message:
topic: pikachu/status
payload: online
will_message:
topic: pikachu/status
payload: offline"
log_topic:
topic: pikachu/log
level: ERROR
qos: 1
i2c:
- id: Relay_I2C
sda: GPIO4
scl: GPIO5
scan: True
# frequency: 5000kHz
pcf8574:
- id: 'hub1'
address: 0x38
pcf8575: False
i2c_id: Relay_I2C
# Individual outputs
switch:
- platform: gpio
device_class: switch
name: "Water Pump_1"
id: waterpump_01
icon: "mdi:pipe-valve"
# interlock: &interlock_group [relay0,relay1, relay2, relay3, relay4, relay5, relay6, relay7]
pin:
pcf8574: hub1
number: 0
mode:
output: true
inverted: true
restore_mode:
RESTORE_DEFAULT_OFF
# on_turn_off:
# then:
# - delay:
# milliseconds: 300
# on_turn_on:
# then:
# - delay:
# milliseconds: 300
- platform: gpio
name: "Water Pump_2"
id: waterpump_02
icon: "mdi:pipe-valve"
device_class: switch
restore_mode:
RESTORE_DEFAULT_OFF
pin:
pcf8574: hub1
number: 1
mode:
output: true
inverted: true
# on_turn_off:
# then:
# - delay:
# milliseconds: 300
# on_turn_on:
# then:
# - delay:
# milliseconds: 300
sensor:
- platform: custom
lambda: |-
auto sctSensor = new SCTSensor(
A0, /* Current Pin */
1480, /* 15000 emonCalcIrms - current calibration settings */
40, /* emonCurrent - current calibration settings */
230, /* Voltagem da rede*/
10000 /* Update Interval - 10 seconds or more is recommended*/
);
App.register_component(sctSensor);
return {sctSensor->currentSensor, sctSensor->wattsSensor};
sensors:
- name: "Current"
id: current
unit_of_measurement: "A"
accuracy_decimals: 2
icon: "mdi:meter-electric-outline"
# filters:
# - delta: 0.4
- name: "Watts"
id: watts
unit_of_measurement: "W"
accuracy_decimals: 2
icon: "mdi:flash-outline"
- platform: wifi_signal
name: "WIFI Signal"
update_interval: 5min
icon: "mdi:home-automation"
on_value:
then:
- text_sensor.template.publish:
id: waterpump_status
state: !lambda 'return std::string("Energy monitor - Build: ") + __DATE__ + " " + __TIME__ + " - " + id(ip_address).state;'
- platform: template
name: nivel-caixa-dagua
icon: "mdi:car-coolant-level"
lambda: |-
int returnX = 0;
if (id(boia1).state) {
returnX = 10;
if (id(boia2).state) {
returnX = 50;
if (id(boia3).state) {
returnX = 100;
}
}
} else {
returnX = 0;
}
return returnX;
update_interval: 15s
- platform: template
name: "Energy Meter"
id: energy_meter
unit_of_measurement: "kWh"
device_class: energy
state_class: measurement
lambda: return id(current).state * 230 / 1000;
update_interval: 5s
# Example configuration entry
- platform: total_daily_energy
name: "Total Diario de Energia consumida"
power_id: energy_meter
# Enable time component to reset energy at midnight
time:
- platform: sntp
id: my_time
text_sensor:
- platform: template
name: "water-pump"
id: waterpump
icon: "mdi:water-pump"
- platform: wifi_info
ip_address:
id: ip_address
internal: true
- platform: template
name: "Water-pump Status"
id: waterpump_status
binary_sensor:
- platform: gpio
pin:
number: D5 #gpio14
inverted: True
name: "boia1"
device_class: opening
icon: "mdi:gauge-empty"
id: boia1
filters:
- delayed_on_off: 15s
on_press:
then:
# "IF" caso a conexão wifi ou com servidor HA esteja interrompida ********************************************
- switch.turn_on: waterpump_01 # A lógica ainda não está bem definida!
# essa condição usuarei nas demais boias
- platform: gpio
pin:
number: D6 #gpio12
inverted: True
name: "boia2"
device_class: opening
icon: "mdi:gauge-low"
id: boia2
filters:
- delayed_on_off: 10s
- platform: gpio
pin:
number: D7 #gpio13
inverted: True
name: "boia3"
device_class: opening
icon: "mdi:gauge-full"
id: boia3
filters:
- delayed_on_off: 10s
- platform: gpio
pin:
pcf8574: hub1
number: 3
inverted: True
name: "boia4"
device_class: opening
icon: "mdi:gauge-full"
id: boia4
filters:
- delayed_on_off: 10s
- platform: gpio
pin:
pcf8574: hub1
number: 4
inverted: True
name: "boia5"
device_class: opening
icon: "mdi:gauge-full"
id: boia5
filters:
- delayed_on_off: 10s
- platform: gpio
pin:
pcf8574: hub1
number: 6
inverted: True
name: "boia6"
device_class: opening
icon: "mdi:gauge-full"
id: boia6
filters:
- delayed_on_off: 10s