Verbrauch sinkt mehr als 20min lang am Stück

Hi Leute,

stehe irgendwie auf dem Schlauch und brauche die Schwarmintelligenz.

Ich habe eine Zisterne mit Messsensor (https://youtu.be/D8dYKtQLyp8), welche mir die Literanzahl der Zisterne mitgibt.

Nun möchte ich über eine Automation bescheid bekommen, wenn die Zisterne Wasser „verliert“. Da ich leider schon Probleme mit der Pumpe hatte, möchte ich es so lösen, dass er - wenn nach 20min noch immer Wasser abfällt - ich eine Nachricht bekommen und ggf. auch den Switch zur Pumpe deaktiviere. Habe schon überlegt, ob ich einen Abfallsensor nutze, aber eigentlich interessiert mich die Wassermenge nicht, sondern nur die Zeit.

Bsp: Ich wässere den Rasen über 21min - ich will eine Info aufs Handy.
Oder ich bewässe die Pflanzen für 19:59min, ich will keine Info. :wink:

Ideen?

Danke.

Euer Tristan

Hallo Tristan,
ich würde erst einmal einen Statistik-Sensor erstellen der die Veränderung pro Minute ermittelt. Der könnte dann z.B. -3 L/min anzeigen wenn die Pumpe läuft und evtl. 0 bis -0,5 (schwankt wegen Messungenauigkeiten) wenn die Pumpe aus ist. Dann einen Template-Binärsensor erstellen der on geht wenn der Statistik-Sensor kleiner -0,5 ist. Diesen Binärsensor als Trigger in einer Automation mit to: on for: 20 min verwenden.

Ich kann dir ein Beispiel für eine Automation in Home Assistant geben, die deinen Anforderungen entspricht. Hier ist eine grundlegende Automation, die die Sensorwerte überwacht und dir eine Benachrichtigung sendet, wenn der Wasserstand für mehr als 20 Minuten abfällt. Diese Automation schaltet auch die Pumpe aus.

automation:
  - alias: 'Zisterne Wasserverlust erkennen'
    trigger:
      - platform: state
        entity_id: sensor.zisterne_wasserstand
        to: 'on'  # Hier anpassen je nach Logik der Sensorwerte
    condition:
      - condition: template
        value_template: >
          {% set current_water_level = states('sensor.zisterne_wasserstand') | float %}
          {% set previous_water_level = states('sensor.zisterne_wasserstand', state=states('sensor.zisterne_wasserstand')) | float %}
          current_water_level < previous_water_level
    action:
      - delay: '00:20:00'
      - condition: template
        value_template: >
          {% set current_water_level = states('sensor.zisterne_wasserstand') | float %}
          {% set previous_water_level = states('sensor.zisterne_wasserstand', state=states('sensor.zisterne_wasserstand')) | float %}
          current_water_level < previous_water_level
      - service: notify.mobile_app  # Anpassen auf deinen Benachrichtigungsdienst
        data:
          message: 'Achtung: Zisterne verliert Wasser für mehr als 20 Minuten!'
      - service: switch.turn_off
        target:
          entity_id: switch.pumpe  # Anpassen auf den Schalter deiner Pumpe

Erläuterung der einzelnen Abschnitte:

  1. Trigger: Diese Automation wird aktiviert, wenn sich der Zustand des Wasserstandssensors ändert. Hier kannst du den Zustand anpassen, je nachdem, wie dein Sensor konfiguriert ist (z. B. wird der Wasserstand als ‚on‘ oder ‚off‘ angezeigt).
  2. Bedingung: Hier wird geprüft, ob der Wasserstand abnimmt. Das Template überprüft, ob der aktuelle Wasserstand kleiner ist als der vorherige Wasserstand.
  3. Aktionen:
  • Nach dem Auslösen des Triggers wird eine Verzögerung von 20 Minuten eingefügt (delay).
  • Danach wird nochmals geprüft, ob der Wasserstand weiterhin abnimmt. (Das könnte je nach Logik deines Sensors möglicherweise einfach sein, oder du müsstest eine Veränderung erfassen.)
  • Wenn die Bedingungen erfüllt sind, wird eine Benachrichtigung an dein Handy gesendet.
  • Schließlich wird die Pumpe deaktiviert.

Hinweise:

  • Stelle sicher, dass du den entity_id-Wert für deinen Wasserstandssensor und die Pumpe anpasst.
  • Die Benachrichtigung (notify.mobile_app) hängt von deinem spezifischen Benachrichtigungsdienst ab.

Sorry, aber ich habe mir gerade mal deine Automatisierung angeschaut und die macht überhaupt keinen Sinn, neben dem ist sie komplett falsch formatiert und würde so nie im Leben funktionieren. Da muss ich nicht mal versuchen die bei mir einzufügen. Wenn du eine KI für die Erstellung von Automatisierungen nutzt, dann musst du die auch kontrollieren, ob sie überhaupt funktionieren würden. :wink:

Eine Automatisierung sieht vom Aufbau immer wie folgt aus:

description: ""
mode: single
triggers: []
conditions: []
actions: []

Du baust aber deinen Anfang nun so auf, nutzt automation und versuchst dann darunter eine Automatisierung aufzubauen, dass funktioniert nicht.

automation:
  - alias: 

Im Trigger prüfst du, ob der sensor.zisterne_wasserstand „on“ ist, macht für mich keinen Sinn, da der Sensor sicherlich eine Zahl in Form von Liter ausgibt.

Darunter im Template werden im Anschluss zwei Variablen gebildet, die beide den gleichen Sensor beinhalten. current_water_level und previous_water_level wären somit immer identisch, ein Vergleich würde keinen Unterschied ergeben und macht daher keinen Sinn.

Und zum Ende funktioniert auch der 20min Timer nicht, weil darin kein Ergebnis aus dem Template davor übernommen wurde. Irgendetwas muss er aber vergleichen, um einen Unterschied feststellen zu können. Der Wert müsste daher in einem Zahlenhelfer zwischengespeichert werden.


@TristansSmartesHeim
Ich würde mir einen Zahlenhelfer Zisterne Startwert erstellen, brauche dir ja nicht zu erklären wie das funktioniert. Dann würde ich die Automatisierung so aufbauen. Habe ich jetzt auch nur schnell zusammengetippt/gebaut, aber müsste eigentlich funktionieren. Bei Option 1 bin ich mir nicht ganz sicher, ob das so klappt und kann es auch nicht so richtig testen.

Ziel ist es den Wasserstand bei Änderung in einem Zahlenhelfer zu speichern und daraufhin den Timer von 20min zu starten. Nach 20min wird dann der aktuelle Wasserstand mit dem gespeichertem Zahlenhelfer verglichen und wenn der Wasserstand dann kleiner als der Zahlenhelfer ist, schaltet die Pumpe ab. Die -10 im Template sind dein Zwischenpuffer. Es müssen also mindestens 11 Liter in 20min weg sein, bevor du eine Nachricht erhältst.

alias: Zisternen-Wasserverlust überwachen
description: ""
triggers:
  - id: wasserstand_sinkt
    entity_id: sensor.zisterne_liter
    trigger: state
  - id: timer_abgelaufen
    event_type: timer.finished
    event_data:
      entity_id: timer.wasserverlust
    trigger: event
conditions: []
actions:
  - choose:
      - conditions:
          - condition: trigger
            id: wasserstand_sinkt
          - condition: template
            value_template: >
              {{ trigger.from_state.state | float > trigger.to_state.state |
              float }}
        sequence:
          - target:
              entity_id: input_number.zisterne_startwert
            data:
              value: "{{ trigger.to_state.state | float }}"
            action: input_number.set_value
          - target:
              entity_id: timer.wasserverlust
            data:
              duration: "00:20:00"
            action: timer.start
      - conditions:
          - condition: trigger
            id: timer_abgelaufen
          - condition: template
            value_template: >
              {{ states('sensor.zisterne_liter') | float <
              states('input_number.zisterne_startwert') | float - 10 }}
        sequence:
          - data:
              message: ⚠️ Die Zisterne verliert seit 20 Minuten Wasser!
            action: notify.notify
          - target:
              entity_id: switch.pumpe
            action: switch.turn_off
            data: {}
mode: single