Helfer - 0-Werte herausfiltern

Hallo zusammen,

habe bei meinem Stromzähler-Helfer das Problem das dieser immer wieder 0-Werte schreibt und somt die komplette Statistik zerstört.

Wie kann ich diese herausfiltern?


Gerade beim Screenshot erstellen gemerkt das es nicht immer 0-Werte, sondern wie in diesem Fall ~12k sind.

Würde also reichen Werte auszuschließen die kleiner als der vorhergehende ist.

Tasmota meldet die wie auf der Kurve zu sehen die richtigen Werte.

Funktionert sowas wie

template:
  - sensor:     
      - name: "Hausstromzähler-Bezug"
        unique_id: "Hausstromzaehler-Bezug"
        unit_of_measurement: 'kWh'
        device_class: "energy"
        state_class: "total_increasing"
        state: >-
            {{ float(states('sensor.tasmota_ed300l_total_in'), default=0) | round(3) }}            
            {%- if states('sensor.hausstromzahler-bezug') | float >= 90 and states('sensor.hausstromzahler-bezug') | float <= 120 -%}
            {{ states('sensor.hausstromzahler-bezug') | round(3) }}
            {%- else -%}
            {{ states('sensor.hausstromzahler-bezug') | float }}
            {%- endif -%}

?

Dein Template kann schon mal gar nicht funktionieren, da es die Entität sensor.hausstromzahler-bezug gar nicht geben kann, weil da ein Sonderzeichen - drin steckt!!

des Weiteren musst Du einen Trigger based Template Sensor verwenden.
Hier mal ein Bsp. Es wird nur einen neuer Wert übernommen, wenn dieser größer ist als der alte Wert.

template:
  - trigger:
      - platform: state
        entity_id: sensor.tasmota_ed300l_total_in
    sensor:
      name: Hausstromzaehler-Bezug
      state: |
        {% set x = (states('sensor.tasmota_ed300l_total_in') | float(0)) | round(3) %}
        {{ iif(trigger.to_state.state > this.state,x ,this.state) }}
      device_class: energy
      state_class: measurement
      unit_of_measurement: "kWh"
      unique_id: 590edc04-f86b-4afc-b721-a1de2a9a86ba
          

Gruß
Osorkon

Danke @Osorkon für deine Antwort, hab das jetzt mal leider erfolglos so probiert :pensive:

Hab auch mal dein iif durch if ersetzt und auch das measurement durch total_increasing, weil der Zählerstand ja immer anwächst aber leider bekomme ich da keine Werte.

Leider verstehe ich die Formel auch überhaupt nicht, sodass ich da selbst überfordert bin. Vielleicht könnte mir da nochmal jemand helfen?

Der Sensor(sensor.tasmota_ed300l_total_in) liefert richtige Werte, jedoch passieren bei der “Umrechnung” in kwH immer wieder Fehler, also sollte sensor.hausstromzahler_bezug nur Werte annehmen die größer oder gleich der Vorhergehenden sind.

Help plz :pray:

Hier noch mein ursprünglicher fehlerträchtiger Sensor:

  - sensor:     
  
      - name: "Hausstromzähler-Bezug"
        unique_id: "Hausstromzaehler-Bezug"
        unit_of_measurement: 'kWh'
        device_class: "energy"
        state_class: "total_increasing"
        state:
        >-
            {{ float(states('sensor.tasmota_ed300l_total_in'), default=0) | round(3) }}

Hab gerade die Möglichkeit von Filtern entdeckt:

sieht mir ja nachdem aus was ich suche.

Kann man die Filter direkt so einbauen das dann auch noch die Einheit ergänzt und auf 3 Stellen gerundet wird? z.B. so:

- sensor:     
  
      - platform: filter
	    name: "Hausstromzähler-Bezug"
        unique_id: "Hausstromzaehler-Bezug"
		entity_id: sensor.tasmota_ed300l_total_in
        unit_of_measurement: 'kWh'
        device_class: "energy"
        state_class: "total_increasing"
        state:
        >-
            {{ float(states('sensor.tasmota_ed300l_total_in') | round(3) }}
		filters:
		 - filter: outlier
		   window_size: 7

Update:
Dann setzte ich meinen Monolog hier mal fort. :upside_down_face:

Hab das jetzt mal so in der configuration.yaml eingebaut:

template:
  - sensor:      
    - name: "Hausstromzähler-Bezug"
      unique_id: sensor.hausstromzahler_bezug"
      unit_of_measurement: 'kWh'
      device_class: "energy"
      state_class: "total_increasing"
      state:
        >-
          {{ float(states('sensor.tasmota_ed300l_total_in'), default=0) | round(3) }}       
      
sensor:
  - platform: filter
    name: "Hausstromzähler-Bezug"
    unique_id: sensor.filtered_hausstromzahler_bezug
    entity_id: sensor.hausstromzaeler_bezug
    filters:
      - filter: outlier
        window_size: 7  

Zumindest findet HA keinen Fehler in der Konfiguration, nur kann ich die gefilterte Entität sensor.filtered_hausstromzahler_bezug nirgendwo finden.
Oder taucht diese überhaupt nirgends auf sonder der Filter filtert die sensor.hausstromzahler_bezug?

Fragen über Fragen :face_with_spiral_eyes:

:crayon:by HarryP: Zusammenführung Doppelpost (bitte “bearbeiten” Funktion nutzen)

Ich habe die runden, doppelseitigen Aufkleber der aqara temperatur Sensoren unter den Lesekopf geklebt. Hat bei mir one yaml Code auch funktioniert :wink:

Du hast den Template Sensor schon mit “Hausstromzähler-Bezug” benannt
Darum wird die Entität sensor.haustromzahler_bezug

Deinen Filter Sensor hast ebenfalls “Hausstromzähler-Bezug” benannt.
Da es keinen zwei gleiche Entitäten geben kann, wird draus sensor.haustromzahler_bezug_2

Die verwendete Entität sensor.hausstromzaeler_bezug wird es so nicht geben, wenn dann sensor.hausstromzaler_bezug, außer Du hast Diese umbenannt.

Bei Template Sensoren, reicht es die Template-Entitäten Konfiguration neu zu laden.
Beim Sensor musst Du Home Assistant Neustarten.

Gruß
Osorkon