Nicht erfasste Energie verrechnen

Würde gerne von meinen 50 Shellys .-) den Eigenverbrauch dieser von der nicht erfassten Energie abziehen damit das im Dashboard besser aussieht.
Wie ist da die Erstellung des Helfers als Sensor ?

Wenn du die Shellys nicht einzeln im Energiedashboard eintragen willst, dann bleibt dir wirklich nur ein Summen-Helfer für Leistung und einer für Energie zu erstellen. Dann musst du nur die Helfer im Energiedashboard eintragen.

Hier eine funktionierende Lösung erstellt mit a bisserl KI erstellt .-)
Ein Template und ein weiterer Sensor. Beide geschrieben für externe Ordner also nicht in der configuration.yaml (läßt sich aber auch ändern.-) )
Template erkennt alle gängigen Shellys mit Ihre Verbräuchen und Unterscheidet zwischen an-aus.
Es muß nichts umgeschrieben werden. Einfach verwenden.
Das ganze wie unten im Bild dann ins Energie Dashboard als Gerät.

Template:

trigger:
  - platform: time_pattern
    minutes: "/1"
  - platform: homeassistant
    event: start
sensor:
  - name: "Shelly Eigenverbrauch Leistung Dynamisch"
    unique_id: shelly_eigenverbrauch_leistung_dynamisch
    icon: mdi:flash
    unit_of_measurement: "W"
    device_class: power
    state_class: measurement
    state: >
      {% set entities = integration_entities('shelly') %}
      {% if entities and entities | length > 0 %}
        {% set ns = namespace(devices=[], total_power=0.0) %}
        {% for e in entities %}
          {% set d = device_id(e) %}
          {% if d and d not in ns.devices %}
            {% set ns.devices = ns.devices + [d] %}
            {% set model = device_attr(d, 'model') | string %}
            
            {# Prüfen, ob das Gerät aktuell eingeschaltet ist (Standard: aus) #}
            {% set dev_entities = device_entities(d) %}
            {% set ns_on = namespace(on=false) %}
            {% for de in dev_entities %}
              {% if (de.startswith('switch.') or de.startswith('light.')) and is_state(de, 'on') %}
                {% set ns_on.on = true %}
              {% endif %}
            {% endfor %}

            {# Zuweisung der Leistung basierend auf Modell, Generation und Zustand #}
            {% if '3EM' in model or 'Pro 3' in model or 'EM Gen3' in model %}
              {# Große Dreiphasen-Messungen haben kein Relais, Verbrauch konstant #}
              {% set power = 3.0 %}
            {% elif 'Mini' in model or 'mini' in model %}
              {# Die neuen ultrakompakten Mini-Modelle (Gen2 / Gen3) #}
              {% set power = 0.6 if ns_on.on else 0.3 %}
            {% elif 'Gen3' in model or 'G3' in model %}
              {# Standard Gen3 Modelle mit sparsamerem ESP-Chip #}
              {% if 'Plug' in model %}
                {% set power = 0.9 if ns_on.on else 0.3 %}
              {% else %}
                {% set power = 1.0 if ns_on.on else 0.4 %}
              {% endif %}
            {% elif '2.5' in model or '2PM' in model %}
              {# Klassische ältere Doppel-Relais #}
              {% set power = 1.6 if ns_on.on else 0.8 %}
            {% elif 'Plug S' in model %}
              {# Älterer Plug S #}
              {% set power = 1.0 if ns_on.on else 0.4 %}
            {% elif '1PM' in model or 'Plus 1' in model %}
              {# Ältere Standard-Relais #}
              {% set power = 1.2 if ns_on.on else 0.5 %}
            {% else %}
              {# Fallback für komplett unbekannte Modelle #}
              {% set power = 1.4 if ns_on.on else 0.6 %}
            {% endif %}
            
            {% set ns.total_power = ns.total_power + power %}
          {% endif %}
        {% endfor %}
        {{ ns.total_power | round(1) }}
      {% else %}
        {{ states('sensor.shelly_eigenverbrauch_leistung_dynamisch') | float(0.0) }}
      {% endif %}
    availability: >
      {{ integration_entities('shelly') | length > 0 or has_value('sensor.shelly_eigenverbrauch_leistung_dynamisch') }}

Sensor:

platform: integration
source: sensor.shelly_eigenverbrauch_leistung_dynamisch
name: "Shelly Eigenverbrauch Energie Gesamt"
unique_id: shelly_eigenverbrauch_energie_gesamt
unit_prefix: k
round: 3
method: left  # Garantiert genaue Ergebnisse bei konstanten Werten