Wert aus zwei Entitäten ermitteln und verarbeiten

Hallo - ich verstehe das mit den „Helfern“ noch nicht richtig. Auf Anleitung konnte ich die schon erstellen und einsetzen - ein Thema selbst umsetzen schaffe ich aber leider nicht.

Ich habe nun folgende Aufgabe:

Von der PV-Anlage (samt Speicher) kann ich die Werte Produktion, Batterie (rein/raus), Grid (Netzeinspeisung oder Bezug) und Hausverbrauch darstellen. In diesem „Stromkreis“ ist die Wallbox nicht enthalten, da diese nicht im Wechselrichter integriert ist. Bei Überschuss springt diese an (merkt der Wechselrichter nicht, da die Wallbox zwischen Netz und Wechselrichter geschaltet ist). Ich habe den Stromzähler über einen Lesekopf (Tasmota und MQTT) ebenfalls in HA integriert. Nun möchte ich gerne die Wallboxleistung durch Differenz von Strombezug/-einspeisung am Stromzähler und Strombezug/-einspeisung lt. Wechselrichter ermitteln. Die Wallbox selber habe ich nicht in HA eingebunden (geht m.E. nicht, da die Steuerung über die Cloud des Herstellers erfolgt).

Die Differenz sollte als „Entität“ verfügbar sein. Dann kann ich die Wallbox in Power Flow Card Plus einbinden und darstellen.

Geht das? Wie muss ich einen Helfer hierfür anlegen?

Hi, du kannst dir einen Template Helfer anlegen, der die Differenz errechnet. Am besten du testet das Template in den Entwickler-Tools von HA vorab. Das ist der Button über Einstellungen, dann wechselst du oben auf den Reiter Template und kopierst du Code dort hinein. Danach tauscht du die Sensoren gegen deinen vorhandenen aus. Im Ergebnis solltest du nun die Differenz sehen.

Wenn das geklappt hat, kannst du dir entweder einen Template Helfer in der Ui anlegen und dort den getesteten Code einfügen oder du erstellst dir direkt einen Helfer in der configuration.yaml.

template:
  - sensor:
      - name: "Wallbox Leistung"
        unit_of_measurement: "W"
        state: >
          {% set netz_leistung = states('sensor.netz_leistung') | float %}
          {% set wechselrichter_leistung = states('sensor.wechselrichter_leistung ') | float %}
          {% set netz_bezug = states('sensor.netz_bezug') | float %}
          {% set netz_einspeisung = states('sensor.netz_einspeisung') | float %}
          {% if netz_leistung > wechselrichter_leistung %}
            {{ (netz_leistung - wechselrichter_leistung) | round(2) }}
          {% elif netz_bezug > netz_einspeisung %}
            {{ (netz_bezug - netz_einspeisung) | round(2) }}
          {% else %}
            0
          {% endif %}

Danke für die ausführliche Antwort - bekomme ich noch nicht ganz hin. Eigentlich habe ich ja nur zwei Sensoren, die verglichen werden müssen. Den Netzbezug / -einspeisung lt. Wechselreichter und den gleichen Wert lt. Bitshake. Beide haben ja +/- als Vorzeichen, ja nachdem ob eingespeist oder bezogen wird. Hab das dann mal wie folgt angepasst:

template:
  - sensor:
      - name: "Wallbox Leistung"
        unit_of_measurement: "W"
        state: >
         {% set netz_leistung = states('sensor.strom_aktueller_verbrauch') | float %}
         {% set wechselrichter_leistung = states('sensor.192_168_178_121_activepower_pcc_total') | float %}
         {% if netz_leistung > wechselrichter_leistung %}
            {{ (netz_leistung - wechselrichter_leistung) | round(2) }}
         {% endif %}

Das funktioniert aber leider nicht - hab ich da etwas zuviel gelöscht?

:crayon:by HarryP: Code-/Logzeilen formatiert (bitte immer in </> einbinden)

Prima - danke. Hab es nun hinbekommen.

1 „Gefällt mir“