Shelly und Energiedashboard in HA

Hallo Gemeinde,

ich habe hier mehrere Shellys, die ich mittels einen Templates addiere um sie mir im Energiedashboard als Leistung anzeigen zulassen.
Hier als Beispiel der Eigenverbrauch der Shellys, um zu sehen wohin die Energie wirklich fließt.

Nun ist es aber so, dass regelmäßig die Shellys kurzfristig nicht erreichbar sind, sei es durch ein kurzfristigen WLAN Abbruch durch das Mesh System von Fritz, oder durch Neustart usw.

Bei der Wiederverbindung kommen dann plötzlich irre hohe kWh-Werte und machen die Statistik unbrauchbar und ich muss jedesmal die Werte händisch korrigieren, was bei mehren Templates für andere Verbraucher und der Häufigkeit sehr nervend ist!

Das Template hier als Beispiel, von der KI generiert sollte das abfangen, was es aber nicht tut.Wie regelt ihr das?

sensor:
- name: "Switches Energy"
  unique_id: SwitchesEnergy
  icon: mdi:flash
  unit_of_measurement: "kWh"
  device_class: energy
  state_class: total_increasing
  availability: >
    {% set ids = [
      'sensor.switch_3d_drucker_device_energy',
      'sensor.switch_licht_apl_device_energy',
      'sensor.switch_buro_hardware_device_energy',
      'sensor.switch_dunstabzug_device_energy',
      'sensor.switch_durchlauferhitzer_device_energy',
      'sensor.switch_he_main_devices_device_energy',
      'sensor.switch_kuhlschrank_device_energy',
      'sensor.switch_licht_lavalampe_device_energy',
      'sensor.switch_mikrowelle_device_energy',
      'sensor.switch_sdl_pw1_device_energy',
      'sensor.switch_sdl_pw2_device_energy',
      'sensor.switch_pl540e_zahlerschrank_device_energy',
      'sensor.switch_pl1220_buro_device_energy',
      'sensor.switch_sdl_kuchenschrank_device_energy',
      'sensor.switch_sdl_podest_device_energy',
      'sensor.switch_steckdose_b1_device_energy',
      'sensor.switch_steckdose_k1_device_energy',
      'sensor.switch_steckdose_k2_device_energy',
      'sensor.switch_steckdose_k3_device_energy',
      'sensor.switch_steckdose_k4_device_energy',
      'sensor.switch_steckdose_k5_device_energy',
      'sensor.switch_steckdose_k6_device_energy',
      'sensor.switch_truhe_device_energy',
      'sensor.switch_vdr_device_energy'
    ] %}
    {% set vals = ids | map('states') | list %}
    {{ (vals | reject('in', ['unknown','unavailable','none','None','']) | list | length) > 0 }}

  state: >
    {% set ids = [
      'sensor.switch_3d_drucker_device_energy',
      'sensor.switch_licht_apl_device_energy',
      'sensor.switch_buro_hardware_device_energy',
      'sensor.switch_dunstabzug_device_energy',
      'sensor.switch_durchlauferhitzer_device_energy',
      'sensor.switch_he_main_devices_device_energy',
      'sensor.switch_kuhlschrank_device_energy',
      'sensor.switch_licht_lavalampe_device_energy',
      'sensor.switch_mikrowelle_device_energy',
      'sensor.switch_sdl_pw1_device_energy',
      'sensor.switch_sdl_pw2_device_energy',
      'sensor.switch_pl540e_zahlerschrank_device_energy',
      'sensor.switch_pl1220_buro_device_energy',
      'sensor.switch_sdl_kuchenschrank_device_energy',
      'sensor.switch_sdl_podest_device_energy',
      'sensor.switch_steckdose_b1_device_energy',
      'sensor.switch_steckdose_k1_device_energy',
      'sensor.switch_steckdose_k2_device_energy',
      'sensor.switch_steckdose_k3_device_energy',
      'sensor.switch_steckdose_k4_device_energy',
      'sensor.switch_steckdose_k5_device_energy',
      'sensor.switch_steckdose_k6_device_energy',
      'sensor.switch_truhe_device_energy',
      'sensor.switch_vdr_device_energy'
    ] %}

    {% set total = namespace(v=0.0, ok=false) %}
    {% for id in ids %}
      {% set s = states(id) %}
      {% if s not in ['unknown','unavailable','none','None',''] %}
        {% set total.v = total.v + (s | float) %}
        {% set total.ok = true %}
      {% endif %}
    {% endfor %}

    {% if not total.ok %}
      {{ 0 }}
    {% else %}
      {{ total.v | round(3) }}
    {% endif %}

Viele Grüße
Oliver

Ich antworte mir mal selber…

Habe für mich jetzt folgende funktionierende Lösung für die nicht validen Energie-Werte von den Shellys im Dahsboard gefunden.

Ich benutze den bereits vorher vorhandenen Template-Sensor für die Power-Summe, hier als Beispiel für meine Switches.

sensor:
- name: "Switches AD Device Power"
  unique_id: "SwitchesADdevicePower"
  icon: mdi:flash
  unit_of_measurement: "W"
  device_class: power
  state_class: measurement
  state: >
    {% set p1  = states('sensor.switch_3d_drucker_device_power') | float(0) %}
    {% set p2  = states('sensor.switch_licht_apl_device_power') | float(0) %}
    {% set p3  = states('sensor.switch_buro_hardware_device_power') | float(0) %}
    {% set p4  = states('sensor.switch_dunstabzug_device_power') | float(0) %}
    {% set p5  = states('sensor.switch_durchlauferhitzer_device_power') | float(0) %}
    {% set p6  = states('sensor.switch_he_main_devices_device_power') | float(0) %}
    {% set p7  = states('sensor.switch_kuhlschrank_device_power') | float(0) %}
    {% set p8  = states('sensor.switch_licht_lavalampe_device_power') | float(0) %}
    {% set p9  = states('sensor.switch_mikrowelle_device_power') | float(0) %}
    {% set p10 = states('sensor.switch_pw1_device_power') | float(0) %}
    {% set p11 = states('sensor.switch_netzwerk_device_power') | float(0) %}
    {% set p12 = states('sensor.switch_pl540e_zahlerschrank_device_power') | float(0) %}
    {% set p13 = states('sensor.switch_pl1220_buro_device_power') | float(0) %}
    {% set p14 = states('sensor.switch_sdl_kuchenschrank_device_power') | float(0) %}
    {% set p15 = states('sensor.switch_sdl_podest_device_power') | float(0) %}
    {% set p16 = states('sensor.switch_steckdose_b1_device_power') | float(0) %}
    {% set p17 = states('sensor.switch_steckdose_k1_device_power') | float(0) %}
    {% set p18 = states('sensor.switch_steckdose_k2_device_power') | float(0) %}
    {% set p19 = states('sensor.switch_steckdose_k3_device_power') | float(0) %}
    {% set p20 = states('sensor.switch_steckdose_k4_device_power') | float(0) %}
    {% set p21 = states('sensor.switch_steckdose_k5_device_power') | float(0) %}
    {% set p22 = states('sensor.switch_steckdose_k6_device_power') | float(0) %}
    {% set p23 = states('sensor.switch_truhe_device_power') | float(0) %}
    {% set p24 = states('sensor.switch_vdr_device_power') | float(0) %}
    {{ (p1 + p2 + p3 + p4 + p5 + p6 + p7 + p8 + p9 + p10 + p11 + p12 + p13 + p14 + p15 + p16 + p17 + p18 + p19 + p20 + p21 + p12 + p23 + p24) | round(2) h anstatt meines vorherigen Template-Sensors für die Energie-Summe nutze, habe ich keine fehlerhaften Werte mehr im Energie Dashboard.