Pumpensteuerung

Hallo zusammen,

ich versuche gerade über einen ESP eine Pumpe zu steuern. Über einen Fühler im Wasser ermittele ich den Wasserstand im Tank.

Der Fühler funktioniert und auch die Pumpe lässt sich ansteuern - soweit so gut.

Jetzt wollte ich im ESP eine Automation einfügen damit der ESP ohne die Hilfe von HomeAssistant den Tank entleert.
Eigentlich ganz einfach - solange der Fühler im Wasser steht soll die Pumpe laufen ist der Fühler aus dem Wasser soll die Pumpe abgeschaltet werden.

Hier mal mein Code:

esphome:
  name: wasserpumpe-lichtschacht-rechts

esp8266:
  board: d1_mini
 # early_pin_init: false

# Enable logging
logger:

# Enable Home Assistant API
api:
  encryption:
    key: "rqX+z0RoSmvkJ80okveA3bZW0iHoL/Bc38ZfaUmvMcA="

ota:
  password: "15220f77b0980ef41b013d8e4af1b8c8"

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password
  manual_ip:
    static_ip: 192.168.1.148
    gateway: 192.168.1.1
    subnet: 255.255.255.0 

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Wasserpumpe-Lichtschacht-Rechts"
    password: "y8heQWN3eLJv"

captive_portal:

web_server:
  port: 80
  auth:
    username: admin
    password: elektor45

switch:

#WLAN LED auf den Boards
  - platform: gpio
    pin: D4
    restore_mode: ALWAYS_OFF
    id: WlanLed # die ID kann optional vergeben werden
    name: "Wasserpumpe-Lichtschacht-rechts"
    disabled_by_default: false
    internal: true
    inverted: true
#-----------------------

  - platform: restart
    name: "Wasserpumpe-Lichtschacht-rechts Restart"


  - platform: gpio
    pin: D1
    restore_mode: ALWAYS_OFF
    inverted: false
    name: "Wassserpumpe-Lichtschacht-rechts"
    disabled_by_default: false
    id: Wasserpumpe



interval:
  - interval: 5s
    then:
      if:
        condition:
          wifi.connected:
        then:
          - switch.turn_on: WlanLed
        else:
          - switch.turn_off: WlanLed 

#  - interval: 2s
#    then:
#      if:
#        condition:
#          binary_sensor.is_off: Wasserfueler  
#        then:
#          - switch.turn_on: Wasserpumpe
#        else: 
#          - switch.turn_off: Wasserpumpe     


sensor:    
  - platform: wifi_signal
    name: "WiFi Wasserpumpe-Lichtschacht-rechts"
    update_interval: 60s 



  
  - platform: gpio
    pin:
      inverted: true
      number: D2
      mode:
        input: true
        pullup: true
    name: "Wasserfühler-Lichtschacht-rechts"
    on_state:
      then:
        if:
          condition:
            binary_sensor.is_on: Wasserfueler  
          then:
            - switch.turn_on: Wasserpumpe
          else:
            - switch.turn_off: Wasserpumpe
            

#-------------   


    

Taucht man den Fühler in das Wasser schaltet die Pumpe ein aber zieht man den Fühler wieder aus dem Wasser läuft die Pumpe weiter.

Mir ist klar das man es auch so machen könnte:

binary_sensor:
  #Statusmeldung 
  - platform: status
    name: "Status Wasserpumpe-Lichtschacht-rechts" 
    id: Wasserfueler

  
  - platform: gpio
    pin:
      inverted: true
      number: D2
      mode:
        input: true
        pullup: true
    name: "Wasserfühler-Lichtschacht-rechts"
    on_press:
      then:
        - switch.turn_on: Wasserpumpe
    on_release:
      then:
        - delay: 5s
        - switch.turn_off: Wasserpumpe    

Bei der Lösung ist es so das angenommen der Tank ist voll und der ESP ausfällt und nach einer Zeit wieder “online” ist der Fühler ja immer noch im Wasser steckt aber eben kein “on_press” auslöst und somit die Pumpe nie anlaufen wird. Das Ergebnis wäre der Tank würde überlaufen.

Darum wollte ich das eben über einen Intervall erledigen der den Fühler alle 10 Sekunden abfragt und dann die Pumpe steuert.
Egal ob ich das über einen Intervall mache oder eben direkt am Fühler wird die Pumpe nicht abgeschaltet.

Keine Ahnung warum das nicht funktioniert aber ich stehe auf dem Schlauch und komme nicht weiter.

Habt Ihr eventuell eine Idee was ich da falsch mache?

Gruß
dnwalker