Wasserzähler zählt rückwärts - Korrektur?

Ich habe soeben AI on the Edge für einen eigenen Zwischen-Wasserzähler eingerichtet.

Leider wurde der Wasserzähler falsch eingebaut und läuft somit rückwärts.
Wie könnte ich die daraus resultierenden Minus Werte für

  • Change since last digitalization round
  • Rate (m3/h)

ändern das diese als positive Werte auch für das Energiedashboard angezeigt werden?

Screenshot 2024-03-16 174551

Wenn es wirklich ein Zwischenwasserzähler ist, dann ist er auch nicht verplombt. Dann kannst du ihn ganz einfach (Wasser abstellen nicht vergessen) umdrehen.

1 „Gefällt mir“

Ja, das wäre eine Möglichkeit, kommt aber glaube ich nicht in Frage:

So sehen die Minus Werte aus:

Einfach einen Template Sensor erstellen.
In dem Du dem Orginal Sensor das Vorzeichen weg nimmst. Und dann den Template Sensor im Energie Dashboard einbinden.

{{ states('sensor.xyz') | float(0) | abs }} 

Den Template Sensor kannst Du Dir als Helfer in der GUI erstellen.

Gruß
Osorkon

@Osorkon
Ich glaube das nützt nichts, da ja der Wert immer positiv ist. Jeder weiter erfasste Wert ist nur niedriger.

Nun nochmal zu meinem Problem:

Das im Energiedashboard die Werte ins Minus gehen ist ja nicht so tragisch.
Aber nun wollte ich mir einen Verbrauchszähler anlegen, der einfach für jeden Tag
die verbrauchte Literzahl angibt. Das scheint aber nicht zu klappen.

Vorab hatte ich mir folgenden Sensor angelegt der den Wert in Liter ausgibt

# Wasserzähler in Liter
      - name: "Wasserzähler Liter"
        unique_id: "WasserZaehlerLiter"   
        unit_of_measurement: "L"
        state_class: "total_increasing"   
        icon: "mdi:water-pump" 
        state: >-   
            {{ float(states('sensor.wasser_value')) | float * 1000 }}

Ich hatte auch mit Rundungsoptionen experimentiert aber das hat zu hohe Werte geliefert. Mit der aktuellen Konfiguration hat der Verbrauchszähler nichts gezählt, steht also bei “0”

Wo liegt der Fehler? Das Energiedashboard kommt ja mit dem Minus Werten auch klar.

Könnte das an state_class: “total_increasing” liegen?
Hier wird ja nichts aufsteigend gezählt.

Wasser1

Wasser2

Sorry, mein Fehler.
Habe Dich falsch verstanden.
Der Senor sensor.wasser_value läuft rückwärts.
Ausgehend von einem Start Wert von 100 000, kannst Du Dir ein Template Sensor erstellen, der dann nur noch steigende Werte anzeigt.

{{ (100000 - states('sensor.wasser_value') | float(0)) | round(3) }}

Du brauchst auch nicht zwingend den Template Sensor in YAML Bearbeiten.

Einfach einen Template Helfer anlegen.
Einstellungen → Geräte & Dienste → Helfer → +HELFER ERSTELLEN → Template → Template für ein Sensor erstellen.

Gruß
Osorkon

Danke!
Ich probiere es aus.

@Osorkon
Danke - Funktioniert!

Jetzt gibt es doch noch einen Fehler. Ich haben nun den neuen Sensor im
Energiedashboard eingebunden und bekomme nun folgendes angezeigt:
Den “alten” Sensor habe ich vorher entfernt.

Der Rest passt:

wasser4
(Täglicher Wasserverbrauch)

wasser5
(Sensor für das Energiedashboard)

@Osorkon
Ich habe die Ursache gefunden.

{{ (100000 - states(‘sensor.wasser_value’) | float(0)) | round(3) }}

Wenn sensor.wasser_value keinen Wert liefert, dann ist der aktuelle Wert 100.000.
Das ist mir gerade aufgefallen, als ich den AI on the edge neu gebootet habe.

Wie kann man das verhindern?
Also wenn sensor.wasser_value kein Wert liefert, dann übernehme nichts.

Wie müsste der Code dazu geändert werden?

Mein Tagesverbrauch Wasser nach dem Reboot:
wasser6

Das heist der neue Sensor soll, seinen zuletzt bekannten Wert beibehalten, wenn der original Sensor sensor.wasser_value nicht verfügbar, bzw unbekannt ist.

In dem Fall würde das template so lauten:

{% if states('sensor.wasser_value') | is_number %}
{{ (100000 - states('sensor.wasser_value') | float(0)) | round(3) }}
{% else %}
{{ this.state }}
{% endif %}

Das funktioniert allerdings nur solange, wie Home Assistant micht neustartet, währenddessen der Sensor unbekannt ist und unbekannt bleibt.
In dem Fall wird der Neue Sensor ebenfalls unbekannt.

Soll Dieser Fall ebenfalls abgefangen werden. Brauchst Du einen Trigger Based Template Sensor, dieser behält seinen letzten Wert auch nach einem Home Assistant Neustart.
Allerdings lässt sich dieser nur per YAML erstellen.

#configuration.yaml
template:
  - trigger:
        - platform: state
          entity_id: sensor.wasser_value
    sensor:
      - name: Wasser Value Neu
        state: |
          {% if states('sensor.wasser_value') | is_number %}
          {{ (100000 - states('sensor.wasser_value') | float(0)) | round(3) }}
          {% else %}
          {{ this.state }}
          {% endif %}
        state_class: total_increasing
        device_class: water
        unit_of_measurement: "m³"
        unique_id: 19eb63ea-2694-4a80-9673-d7f4abb1bacc

Gruß
Osorkon

Vielen, vielen Dank!

Das hätte ich nie hinbekommen.

1 „Gefällt mir“