Eve Aqua gone ESPHome
Warum habe ich denn den wunderbaren Eve Aqua umgebaut?
Lange hatte ich das Ventil per Automation und Proxy Input_Boolean an Home Assistant weitergereicht, das hat funktioniert, hatte mich aber nie zufrieden gestellt, ich wollte ja auf Automationen in Homekit verzichten. Also begrüßte ich die Einführung von Bluetooth Proxies und dem dazu eingeführten Bluetooth Support für den HomekitController. Also hatte ich das Eve Aqua direkt per Homekit an Home Assistant angelernt. Leider fiel es in diesem Schritt auf das Standardbewässerungsintervall von 10 Minuten zurück. Ich wollte aber nicht, dass eine Automation verantwortlich dafür ist, das Ventil auch nach 2 Minuten immer abschalten muss, denn das ist die maximale Dauer die wir nutzen. Ich wechselte also nochmal zwischen Homekit und HomeAssistant zurück um per EveApp das Intervall zurückzusetzen. Lief auch, aber anschließend war das Aqua gar nicht mehr in Home Assistant zu finden. Parallel dazu habe ich immer überlegt auf ESPHome umzurüsten, also habe ich es geöffnet, fand in Richtung Ventil genau 4 Kabel auf, Plus, Minus und zwei gelbe Adern die vermutlich einen Kontakt herstellen wenn das Ventil geschlossen ist. Das habe ich dann per Multimeter verifiziert.
Auf das Bewässern manuell per Button wollten wir auch nicht verzichten, also habe ich ebenso diesen eingebaut. Ein Relay schaltet das Ventil so lange ein bis der Binärsensor des Ventils sich ändert. So togglet sich das Ventil quasi selber per Anschlag. Der große Vorteil? Statt ein Bluetooth Endgerät zu sein ist das EveAqua jetzt ein Bluetooth Proxy für meine MiFlora Sensoren und reicht diese direkt an Home Assistant weiter, für mich auch ein Vorteil:
Die 5V Stromversorgung ohne Batteriewechsel. Einzig hatte ich etwas Probleme alle Komponenten in das doch recht kompakte Case unterzubringen, aber mit etwas arrangieren passte es dann doch alles.
ESPHome yaml auf Github:
esphome:
name: eve_aqua
esp32:
board: esp32dev
framework:
type: esp-idf
wifi:
ssid:
password:
# Enable logging
logger:
# Enable Home Assistant API
api:
encryption:
key:
reboot_timeout: 0s
ota:
password: 'homeassistant'
on_begin:
then:
- lambda: |-
id(ble_tracker).stop_scan();
bluetooth_proxy:
active: true
esp32_ble_tracker:
id: ble_tracker
switch:
- platform: gpio
id: relay
internal: true
name: "Relay"
pin:
number: 2
restore_mode: always off
- platform: template
name: "Eve Aqua"
icon: "mdi:sprinkler"
id: eve_aqua
restore_mode: always off
lambda: |-
if (id(ventil).state) {
return true;
} else {
return false;
}
turn_on_action:
- switch.toggle: relay
- delay: 120s
- switch.toggle: relay
- homeassistant.service:
service: timer.start
data:
entity_id: timer.eve_aqua
turn_off_action:
- switch.toggle: relay
- homeassistant.service:
service: timer.cancel
data:
entity_id: timer.eve_aqua
binary_sensor:
- platform: gpio
id: ventil
icon: mdi:pipe-valve
pin:
number: 27
mode: INPUT_PULLUP
inverted: true
name: "Ventil"
device_class: opening
on_state:
then:
- switch.toggle: relay
- platform: gpio
id: button
pin:
number: 33
mode: INPUT_PULLUP
inverted: true
name: "Button"
on_click:
min_length: 50ms
max_length: 350ms
then:
- switch.toggle: eve_aqua