Gartenbewässerung – Ein Wasserzähler. Aber jedem Ventil den individuellen Wasserverbrauch zuweisen

Hallo Zusammen, ich habe beim Anlegen meiner Gartenbewässerung verschiedene Zonen mit jeweils einzelnen Ventilen angelegt. Es gibt einen Wasserzähle am Ausgang der Pumpe.

Die Gartenbewässerung wird über ein Steuergerät namens OpenSprinkler organisiert. Über mqtt und eine Inetration habe ich alle Entitäten des Opensprinkler auch in HA.

Ventile 4 & 5 haben z.B. folgende Entitäten:

binary_sensor.s4_west_station_running

binary_sensor.s5_garten_ station_running

Zustände werden mit on/off angezeigt.

Dann gibt es noch einen Wasserzähler, der am Opensprinkler angeschlossen ist.

sensor.opensprinkler_mqtt_flow_volume

Er gibt die Liter an, die während einer Ventilöffnung geflossen sind, kein kumulativer Wert.

Ich habe mir jetzt den Verlauf der Ventile und den des Wasserzählers auf das Dashboard gelegt und kann so schon den Verbrauch einer Station zuordnen.

Wenn z.B. binary_sensor.s4_west_station_running von 04:30 bis 04:45 läuft, dann meldet sensor.opensprinkler_mqtt_flow_volume um 04:45 die gelaufenen Liter, z.B. 58 L.

Ich hätte jetzt gerne eine Entität, die mir den Verbrauch des Ventils 4 anzeigt. Am besten den letzten Lauf und kumuliert.

Das Ganze würde ich am liebsten mit Bordmitteln von HA lösen. Ich denke daran, für jede Station einen Verbrauchszähler Helfer anzulegen.

Wenn binary_sensor.s4_west_station_running zu off wechselt, dann warte 2 Sekunden und weise den Wert von sensor.opensprinkler_mqtt_flow_volume dem Verbrauschszähler sensor.Helfer_S4 _flow_volume den Wert zu.

Nur wie setze ich eine Automation für so einen Zähler um?

Wie bringe ich den Wert zum Verbrauszähler Helfer?

Er benötigt ja einen Eingangssensor.

In der Theorie ist das nur Mathematik und du brauchst dafür einen Drucksensor. Du verbaust ein Stück Rohr mit einem definierten Innendurchmesser, welches als Widerstand fungiert. 1 Drucksensor im gesamten System sollte ausreichend sein. Mithilfe des Rohrs und des Druckes kannst du den Volumenstrom ableiten. Und ich glaube nicht, das du den Volumenstrom des verbauten Schlauches (zur Blume !?) in Gänze brauchst, von daher so meine Theorie zur Zielführung.

Mfg

Einen Zähler als Helfer erstellen.

Automation

Wenn binary_sensor.s4_west_station_running zu off wechselt,

dann

warte 2 Sekunden

Setze zählerhelfer mit counter.set_value auf

sensor.opensprinkler_mqtt_flow_volume

Einen zweiten Zählerhelfer erstellen Und den als kumuliert benutzen also jeweils den Lauf dazuaddieren.

1 „Gefällt mir“

So funktioniert die Übergabe des Wertes bei mir nicht

action: counter.set_value
target:
  entity_id: counter.opensprinkler_s4_zahler
data:
  value: sensor.opensprinkler_mqtt_flow_volume

{5FA4AB9F-636B-4E3D-9489-CAFA119FE096}

Update:
So scheint die Übergabe zu funktionieren:

 action: counter.set_value
 target:
 entity_id: counter.opensprinkler_s4_zahler
 data:
 entity_id: null
 value: “{{ states(‘sensor.opensprinkler_mqtt_flow_volume’) | float }}”

:crayon:by HarryP:
. Zusammenführung Doppelpost (bei Änderungen oder hinzufügen von Inhalten bitte die „Bearbeitungsfunktion“ anstatt „Antworten“ zu nutzen)
. Code-/Logzeilen formatiert (bitte immer in </> einbinden)
. s.a.: (Neues Update & Features - Hier in der Community 🫶)

Ja muss ein int Wert übergeben werden, deshalb hat er beim ersten gemeckert.

Wenn du für die Gesamtmenge einen Verbrauchszähler benutzen willst, brauchst du noch einen Zusatz Sensor als Zwischenschritt der dann Einheiten und measurement hat damit er als Eingang für den Verbrauchszähler geht.

Ja genau da hänge ich jetzt..:sweat_smile:

Ich kann als Quelle für den Verbrauchszähler Helfer nicht den Counter angeben.

Bekomme ich die Zahl nicht irgendwie direkter in einen Verbrauchszähler?

Muss ich später mal schauen, eventuell mit trigger und Event

Das wäre super.

Was funktioniert:

Die Automation für den Counter

Der Zähler (counter).

Der Template Sensor in Liter

{{ states('counter.opensprinkler_s4_zahler') }}

Was nicht funktioniert ist der kumulative Zähler, Template Sensor.

{C39449F5-F609-4F4B-B4CC-BEBDAAAAE24F}

Eingangssensor ist der Template Sensor mit Liter, aber es wird immer nur der letzte Messwert angezeigt, nicht summiert .

Hinzu kommt, daß ich aktuell für 1 Ventil 3 Helfer und 1 Automation verwende.

Ich habe aber 16 Ventile….

Du kannst in der Automation ein eigenes Event erstellen :

alias: Test Event
description: ""
triggers:
  - trigger: sun
    event: sunrise
    offset: 0
conditions: []
actions:
  - event: event_opensprinkler_s4
    event_data:
      Wert: 0
mode: single

Mach eine leere Automation und geh dann auf in Yaml bearbeiten bei den 3 Punkten oben rechts, füge da den Code ein dann siehst du wie du das anlegen kannst.

Dann legst du dir einen Sensor an :

template:
  - trigger:
    - platform: event
      event_type: "event_opensprinkler_s4"
    sensor:
    - name: "opensprinkler_s4"
      state_class: measurement
      unit_of_measurement: L
      unique_id: sensor.opensprinkler_s4
      state: “{{ states(‘sensor.opensprinkler_mqtt_flow_volume’)

Bei Stateclass bin ich nicht ganz sicher ob das passt musst du mal testen.

Jetzt bekommst du beim Sensor opensprinkler S4 den Wert von flow_volume jedesmal eingetragen wenn die Automation das event sendet

Du brauchst keinen Zähler Helper mehr.

Jetzt legst du dir einen Verbrauchszähler an hier kannst du nun opensprinkler-S4 auswählen,

Du musst drauf achten das du Differenzwerte auswählst damit der Wert jedesmal addiert wird.

Jetzt hast du in Opensprinkler_s4 immer den letzten Wert von mqtt_flow und in deinem Verbrauchszähler immer den aufaddierten wert.

Das machst du dann für alle Sprinkler, musst aber natürlich das event anpassen.

Du musst das ganze durchtesten ob das bei dir so funktioniert und auch einen Restart überlebt.

Zur Auswahl der Sensoren kannst du diesen Code als Vorlage benutzen und anpassen

alias: Mqtt umschreiben
description: ""
triggers:
  - alias: MQTT Nachricht RTL_433
    trigger: mqtt
    options:
      topic: rtl_433/rtl433vm/events/#
    id: "101"
    enabled: true
conditions: []
actions:
  - choose:
      - conditions:
          - alias: Schrank ID 114
            condition: template
            value_template: "{{trigger.payload_json.id == 114}}"
        sequence:
          - action: mqtt.publish
            metadata: {}
            data:
              evaluate_payload: false
              qos: 0
              retain: false
              topic: rtl_433/Schrank/
              payload: "{{ trigger.payload }}"
            enabled: true
        alias: Schrank 114
      - conditions:
          - alias: Aussen ID 149
            condition: template
            value_template: "{{trigger.payload_json.id == 149}}"
        sequence:
          - action: mqtt.publish
            metadata: {}
            data:
              evaluate_payload: false
              qos: 0
              retain: false
              topic: rtl_433/Aussen/
              payload: "{{ trigger.payload }}"
            enabled: true
        alias: Option Aussen 149

Du musst natürlich den Trigger anpassen und dort die ID vergeben

Bei der Aktion dann entsprechend das Event ändern.

1 „Gefällt mir“

Edit:

ich hab es jetzt verstanden. Ein Trigger-basierter Template-Sensor ist das Stichwort.

Vielen Dank für die Tipps!

So funktioniert es in Kombination mit der Automation:

- trigger: 
    - platform: event
      event_type: "event_opensprinkler_s4"
  sensor:
    - name: "opensprinkler_s4_last_run"
      state_class: measurement
      unit_of_measurement: L
      device_class: water
      unique_id: sensor.opensprinkler_s4_last_run
      state: "{{ states('sensor.opensprinkler_mqtt_flow_volume') }}"
alias: S4-West-Zähler-Test
description: S4-West-Zähler-Test
triggers:
  - trigger: sun
    event: sunrise
    offset: 0
  - trigger: state
    entity_id:
      - binary_sensor.s4_west_antorchasis_r4a_gruen_station_running
    from:
      - "on"
    to:
      - "off"
conditions: []
actions:
  - event: event_opensprinkler_s4
    event_data:
      Wert: 0
mode: single

Nur wofür brauche ich den Sonnenaufgang?

Garnicht das war nur ein Beispiel von mir um das Event zu zeigen

1 „Gefällt mir“

Das Anzeigen des letzten Laufs einer Station funktioniert wunderbar.

Nur die Verbrauchszähler (Helfer kumulativ) zählen nicht.

Edit:

Was genau heißt die zählen nicht ?

Gar keine Anzeige ?

Wie hast du den Zähler angelegt ?

Bitte einmal durchspielen und einen Screenshot der Erstellseite anzeigen.

Den Zähler habe ich als Verbrauchszähler über die Standard Helfer eingerichtet.

Input sensor ist der Template Sensor “*_last_run”. Der Funktioniert auch und zeigt den korrekten Wert (hier 7) an.

beim Helfer kommen auch 7 an; aber der Zustand wird von 11 auf 13 gesetzt.?

Siehe Screenshots im vorherigen Beitrag. Den habe ich ergänzt.

Bei der Automation habe ich extra 15 Sekunden Warten eingebaut, damit eine Verzögerung des “primären” Zählers nicht stört.

Auf was hast du Differenzwerte beim Erstellen des Helfers gestellt ?

{6747AC5E-6A50-4539-A7C9-0BE5CE352F61}

Gute Frage. Auf was sollte ich die stellen? off scheint mir logisch. Ich probiere es aus.

Es muss on sein weil du keine absoluten werte bekommst

Jetzt scheint es zu funktionieren. Mit ON bei Differenzwerten.:+1:

Die Einstellung kann man anscheinend nur beim ersten Erstellen des Helfers vornehmen. In den Attributen ist dazu auch nichts zu sehen.
Diesen sollte ich aktivieren oder deaktivieren?

{A2C64AAD-52F4-4F36-A605-F410966AE7A2}

Ich habe das immer auf Standard gelassen

Update:
Du kannst übrigens auch den Wert gleich beim Event in der Automation mit übergeben :

event: “event_opensprinkler_s4”
event_data:
  Wert: "{{ states('sensor.opensprinkler_mqtt_flow_volume') }}"

dann beim Sensor natürlich anders abfragen :

- trigger: 
    - platform: event
      event_type: "event_opensprinkler_s4"
  sensor:
    - name: "opensprinkler_s4_last_run"
      state_class: measurement
      unit_of_measurement: L
      device_class: water
      unique_id: sensor.opensprinkler_s4_last_run
      state: "{{trigger.event.data.Wert}}" 

:crayon:by HarryP: Zusammenführung Doppelpost (bei Änderungen oder hinzufügen von Inhalten bitte die „Bearbeitungsfunktion“ anstatt „Antworten“ zu nutzen)

1 „Gefällt mir“

Danke! Ich muss erstmal ein paar Tage warten. Es hat viel geregnet und mit den vielen Versuchen sind die Beete zu nass.