Wasserzähler - Pulse Counter

Ich habe mir einen Wasserzähler mit einem Pulse-Counter (YF-B5) und einem NodeMCU mit EPS-Home “gebastelt”

hier der Code (die relevanten Teile)

sensor:
  - platform: pulse_counter
    pin: D2
    update_interval: 1s
    unit_of_measurement: 'L/min'
    name: 'Water Meter Flow'
    device_class: water
    filters:
      - multiply: 0.0028
    total:
      unit_of_measurement: 'L'
      name: 'Water Meter L'
      state_class: total_increasing
      accuracy_decimals: 1
      device_class: water
      filters:
        - multiply: 0.0028

der Mulitplikator (0.0028) ist in Ordnung so, habe den Sensor “kalibriert”.
Es wird der Durchfluss angezeigt und auch die Liter (Gesamt), welche auch im Energie Dashboard eingebaut sind.
Die Gesamt Liter Anzeige wird allerdings bei einem Reset oder Stromausfall auf 0 gesetzt, was der Statistik und somit dem Energie Dashboard aber nicht schaden dürfte, soweit ich das gesehen habe, werden die Werte dort kumuliert und richtig angezeigt, stimmt dass, das es nichts macht, wenn der Wert bei einem Rest auf 0 fällt ?

Ich hätte aber gerne eine Anzeige (Entität) der Gesamtmenge welche auch einen Reset “überlebt”. Ich habe mir überlegt, das mit globals: zu machen ist das eine Möglichkeit ? Leider kenne ich mich damit überhaupt nicht aus, kann mir vielleicht jemand dabei helfen ?

Das wäre mein Ansatz gewesen:

globals:
  - id: total_water_consumed
    type: float
    restore_value: yes
    initial_value: '0.0'

Das sollte den Wert speichern ?

Dann noch einen TEXT-Sensor, welcher das ganze als Entität ausgeben kann:

text_sensor:
  - platform: template
    name: "Total Water Consumed"
    lambda: |-
      return {id(total_water_consumed)};

Da bin ich mir mit der “Formatierung” nicht ganz sicher und an welche Stelle das im Code gehört.

Zusätzlich wird man das ganze wahrscheinlich auch noch an irgendeiner Stelle zuweisen müssen, ich nehme an im sensor: Block ?

    total:
      unit_of_measurement: 'L'
      name: 'Water Meter Total'
      accuracy_decimals: 1
      device_class: water
      filters:
        - multiply: 0.0028
      state_class: total_increasing
      lambda: |-
        id(total_water_consumed) += x;
        return id(total_water_consumed);

Ich habe keine Ahnung ob mein Ansatz hier richtig ist, ich wäre sehr Dankbar, wenn sich das jemand ansehen könnte, der sich da auch auskennt :slight_smile:

Ich habe versucht das so einzubauen, habe aber immer Fehler beim Compilieren bekommen, wahrscheinlich fehlt noch etwas, oder ist falsch formatiert (Einrückungen)

Liebe Grüße aus Wien
Andreas