Bewässerung: Eve Aqua Umbau auf ESPHome mit ESP32

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