Shelly 3EM Energy Daten in Homeassistant

Hallo zusammen,

ich habe folgendes Problem.

Ich verwende einen Shelly 3EM um den Verbrauch der Wärmepumpe zu messen. Die 3 Kanäle rechne ich über einen Template Sensor zusammen.

- sensor:
    - unique_id: wp_energy
      state_class: total_increasing
      unit_of_measurement: kWh
      device_class: energy
      icon: phu:wall-impress
      state: >
        {{ (states('sensor.warmepumpe_channel_a_energy') | float(0)) +
          (states('sensor.warmepumpe_channel_b_energy') | float(0)) +
          (states('sensor.warmepumpe_channel_c_energy') | float(0)) }}

Der sensor.wp_energy hat Statistikwerte die seit ca. 6 Wochen Ausschläge nach oben hat. Die Ausschläge kommen nicht vom Shelly. In der Shelly App kann ich das Verhalten nicht erkennen. Im System habe ich meines Wissens auch keine Veränderungen vorgenommen die so ein Verhalten hervorrufen könnten.
Die Daten korrigiere ich aktuell händisch.


Statistik in HA


Shelly App

Das ist natürlich unschön und im Energy Dashboard nicht hilfreich.

Hat jemand eine Idee was das Problem verursachen kann.

Gruß
Basti

1 „Gefällt mir“

Ja, da hast du vermutlich nen Neustart gemacht oder der Shelly war kurz nicht erreichbar. Wenn ein numerischer Wert erwartet wird und ein Text wie not available kommt, dann kommen die Templates damit nicht klar. Entweder du fügst wie hier im Beitrag ne Gültigkeitsprüfung mit ein. Shelly 3EM in Home Assistant richtig Saldieren – Steuer Dein Leben Das geht aber nur in der configuration.yaml und nicht in template Helfern. Oder du musst solche Fehlwerte wie hier im Video gezeigt löschen:

2 „Gefällt mir“

Danke für denn Tip. Das mit der Gültigkeitsprüfung schaue ich mir mal an.
Komischerweise hat das ca. 1,5 Jahre funktioniert. Deshalb könnte ich mir vorstellen,dass da noch was anderes dahinter steckt.

1 „Gefällt mir“

Hallo,

den Sensor habe ich jetzt wie folgt angepasst und bisher scheint es so zu sein, dass die Ausschläge nicht mehr vorkommen. Danke für den Tip.

- sensor:
    - unique_id: wp_energy
      state_class: total_increasing
      unit_of_measurement: kWh
      device_class: energy
      icon: phu:wall-impress
      state: >
        {% set raw_states = [
          states('sensor.warmepumpe_channel_a_energy') | float(0),
          states('sensor.warmepumpe_channel_b_energy') | float(0),
          states('sensor.warmepumpe_channel_c_energy') | float(0)
        ] %}

        {% if raw_states | select('gt', 0) | list | length == raw_states | length %}
          {{ raw_states | sum }}
        {% else %}
          unknown
        {% endif %}

Gruß
Basti

2 „Gefällt mir“

Sehr schön, dann gerne meine Antwort als Lösung markieren wenn es so bleibt.

2 „Gefällt mir“

nur mal aus Neugierde:
Was spricht gegen den Kombinations-Helfer? der soll doch auch Daten von anderen Sensoren aufsummieren können.

1 „Gefällt mir“

Der hat so weit ich weiß das selbe Problem mit Fehlwerten. Aber nicht sicher.

1 „Gefällt mir“

Hey,

ich weiß, der Beitrag wurde schon als gelöst markiert, würde aber gern eine Frage anschließen.
Ich bin noch ziemlich neu mit der Energie Geschichte. Mein Shelly 3Em wurde vor 2 Wochen eingebaut.
Jetzt summiert Ihr die 3 Kanäle, mit einem Template Sensor, mein shelly lieferrt jedoch schon einen total actice energy sensor. Warum summiert Ihr das Händisch, wo ist der Vorteil?

Micha

So lange du nur positive Werte misst, stimmt die interne Saldierung des Shelly. Sobald ne PV dazu kommt stimmen die Werte nicht mehr.

1 „Gefällt mir“

Mein Shelly hat einen total active returned energy Sensor. Kommt er damit auch durcheinander beim einspeisen?

Also trotzdem den Weg über ein Template?

Die Werte des Templates stimmen wenn du es wie in meinem Video erstellt hast.

Das Problem ist, dass der Pro eben nicht die Einspeisung mit dem Bezug Saldiert sondern der von dir genannte active returned energs Sensor addiert nur die Einspeisungen auf und saldiert sie eben nicht mit dem Bezug.

1 „Gefällt mir“

Ich bin da zu blöd zu. Der Sensor Power funktioniert.
Der Sensor Energy ist nicht verfügbar.

- sensor:
      - name: "Power Total"
        unique_id: power_total
        state: >
          {{ states('sensor.shelly_pro_3em_phase_a_active_power')|float(0) +
             states('sensor.shelly_pro_3em_phase_b_active_power')|float(0) +
             states('sensor.shelly_pro_3em_phase_c_active_power')|float(0) }}
        unit_of_measurement: W
        device_class: power
        state_class: measurement
        availability: >
            {{
               [ states('sensor.shelly_pro_3em_phase_a_active_power'),
                 states('sensor.shelly_pro_3em_phase_b_active_power'),
                 states('sensor.shelly_pro_3em_phase_c_active_power') ] | map('is_number') | min }}
                 
- sensor:
      - name: "Energy Total"
        unique_id: energy_total
        state: >
          {{ states('sensor.shelly_pro_3em_phase_a_active_energy')|float(0) +
             states('sensor.shelly_pro_3em_phase_b_active_energy')|float(0) +
             states('sensor.shelly_pro_3em_phase_c_active_energy')|float(0) }}
        unit_of_measurement: kWh
        device_class: energy
        state_class: total_increasing
        attributes:
          last_reset: "1970-01-01T00:00:00+00:00"
        availability: >
            {{ 
               [ states('sensor.shelly_pro_3em_phase_a_active_energy'),
                 states('sensor.shelly_pro_3em_phase_b_active_energy'),
                 states('sensor.shelly_pro_3em_phase_c_active_energy') ] | map('is_number') | min }}      

Hi, das klappt so nicht. Du rechnest die Phasen vom Shelly zusammen und möchtest dann kWh hochzählen, aber da stehen immer noch Watt in den Phasen-Sensoren. Es muss daher erst eine Umrechnung in kWh erfolgen. :slight_smile:

Ich habe mir in HA dazu Helfer (Tag & Gesamt) angelegt. Udo hat es hier in unter 1min top zusammengefasst.

Edit: Wenn du das lieber in der config.yaml umsetzen möchtest, könnte man direkt den ersten angelegten Sensor zum Rechnen verwenden, dann umrechnen in kWh und dann hochzählen lassen. Hier mal ein Versuch, habe ich aber nicht getestet.

sensor:
  - name: "Energy Total"
    unique_id: energy_total
    state: >
      {{ (states('sensor.power_total')|float(0)) / 1000 }}  # In kWh umwandeln
    unit_of_measurement: kWh
    device_class: energy
    state_class: total_increasing
    last_reset: "1970-01-01T00:00:00+00:00"
    availability: >
      {{
         states('sensor.power_total')|is_number
      }}

1 „Gefällt mir“

War einfach blind. Die Entitäten waren noch versteckt darum habe ich die richtigen nicht gefunden :face_with_peeking_eye:

1 „Gefällt mir“