Berechneter Sensor für aufgeteilte PV-Produktionsansicht im Energie-Dashboard?

Hallo zusammen,

ich bin leider zu doof für YAML wie es scheint. Ich habe einen Solaredge-Wechselrichter, der im Energiemanager eingebunden ist. Zusätzlich besitze ich eine go-e charger-Wallbox und poweropti (powerfox).
Das sieht auch alles ganz toll aus im Energie-Dashboard. Ich habe mal die Wallbox neben meinem poweropti als zusätzlichen Verbraucher eingetragen, wodurch natürlich die Werte addiert werden. Schön wäre aber eine Darstellung des Wallbox-Verbrauchs + Restverbrauch des Hauses.
Daher wollte ich einen weiteren Sensor anlegen, der eigentlich ganz billig diese Differenz berechnen soll:

if (poweropti-Verbrauch - Wallboxverbrauch) <= 0 0 else (poweropti-Verbrauch - Wallboxverbrauch)

Dann wollte ich diesen Sensor statt den poweropti mit der Wallbox eintragen und alles wäre tutti.
Die Berechnung der Differenz klappt mit:
{{ states('sensor.strom_aktuell')|int(0) - states('sensor.go_echarger_108263_nrg_12')|int(0) }}

Aber im Template-Editor kann man keine if-Schleifen mit Berechnung bauen, oder? Zumindest bekomme ich das nicht hin. Als Test, wo ich die if-Abfrage einfach manuell mit 1 oder 0 fütter, gibt er mir korrekt die 0 oder den berechneten Wert aus:
Stromverbrauch ohne Wallbox: {% if 0<=0 -%} 0 {%- else -%} {{ states('sensor.strom_aktuell')|int(0) - states('sensor.go_echarger_108263_nrg_12')|int(0) }} {%- endif %}

Wenn ich jetzt aber einfach 0<=0 mit meiner Berechnung austausche, kommt als Ergebnis immer:
TemplateSyntaxError: expected token ':', got '}'

Außerdem sind die geschweiften Doppelklammern auch lila gefärbt und nicht rot wie ohne if-Schleife.

Jemand eine Idee für eine Elegante Lösung? Äquivalent dazu bräuchte ich evtl auch noch einen ähnlich berechneten Sensor für die PV-Produktion, damit das mit dem Solarverbrauch dann auch passt. Ich habe mal eine grandiose Paint-Zeichnung erstellt, die mein Wunschszenario verdeutlichen soll, wobei die Wallbox in rot dargestellt ist :slight_smile:

Ich bin über jede Hilfe dankbar!

Herzlich willkommen hier im HA-Forum! :slight_smile:

Würdest Du für Code-Zeilen zukünftig bitte die Code-Tags und nicht Blockzitat verwenden?
Danke!

1 „Gefällt mir“

In meiner template.yaml befindet sich folgender Code. Von daher würde ich sagen, dass es gehen sollte.

- sensor:
  - name: "PV Einspeisung Normiert" #Das sind die reinen Einspeisungen ins Netz in einen positiven Wert verwandelt
    unique_id: "pv_einspeisung_normiert"
    device_class: power
    unit_of_measurement: "W"
    state: >
      {% if states('sensor.pv_einspeisung_ausgelesen')| int == 0 %}
        0
      {% else %}
        {{ states('sensor.pv_einspeisung_ausgelesen')|float(0) * -1 | round(3) }}
      {% endif %}

das was Du sonst so alles geschrieben hast

-%}
{%-
oder
0<=0

erschließt sich mir nicht. Was sollen die “-” und was ist das für ein komischer Vergleich “0<=0” das macht meiner Meinung nach so gar keinen Sinn.

Zeig mal Deinen ganzen Code und nicht nur Schnipsel in dieser komischen Darstellung. Eventuell ist auch irgendwo was falsch eingerückt. Also einfach mal posten wie Du meinst, dass es richtig aussehen soll und dann mal schauen. Ich sage aber gleich … Yaml ist auch nicht meine Kernkompetenz :wink:

Ich habe das noch nicht in die YAML.config übertragen, sondern erst im Template-Editor in den Entwicklerwerkzeugen getestet. Und dort klappt die if-Abfrage mit der Berechnung nicht, daher habe ich den Fall, dass die Berechnung 0 oder mehr als 0 ergibt einfach von Hand eingetragen (daher 0<=0). Die - hatte ich auch nur aus anderen Codebeispielen.

Hier meine config.yaml, wo ich den Sensor mal eingetragen habe (“PV-Produktion ohne Wallbox”):

# Loads default set of integrations. Do not remove.
default_config:

# Load frontend themes from the themes folder
frontend:
  themes: !include_dir_merge_named themes

# Text to speech
tts:
  - platform: google_translate

automation: !include automations.yaml
script: !include scripts.yaml
scene: !include scenes.yaml

rest:
  - authentication: basic
    username: lars.volbracht@gmail.com
    password: G4ng.st3r
    scan_interval: 30
    resource: https://backend.powerfox.energy/api/2.0/my/main/current?unit=kwh
    sensor:
      - name: "poweropti"
        json_attributes:
          - "Watt"
          - "Timestamp"
          - "A_Plus"
          - "A_Minus"
          - "Outdated"

template:
  - sensor:
      - name: "PV-Produktion ohne Wallbox"
        unique_id: "PvProdOhneWallbox"
        unit_of_measurement: "W"
        device_class: "power"
        state_class: "measurement"
        state: >
            {% if {{ states('sensor.strom_aktuell')|int(0) - states('sensor.go_echarger_108263_nrg_12')|int(0) }} <= 0 %}
                0
            {% else %}
                {{ states('sensor.strom_aktuell')|int(0) - states('sensor.go_echarger_108263_nrg_12')|int(0) }}
            {% endif %}
            
      - name: "strom-aktuell"
        unique_id: "StromVerbrauchUndBezugSensorWatts"
        unit_of_measurement: "W"
        device_class: "power"
        state_class: "measurement"
        state: >
            {{ state_attr('sensor.poweropti', 'Watt') }}
      - name: "Zählerstand-Bezug"
        unique_id: "AktuellerZählerstandBezugKiloWatts"
        unit_of_measurement: "kWh"
        device_class: "energy"
        state_class: "total_increasing"
        state: >
            {{ state_attr('sensor.poweropti', 'A_Plus') }}
      - name: "Zählerstand-Einspeisung"
        unique_id: "AktuellerZählerstandEinspeisungKiloWatts"
        unit_of_measurement: "kWh"
        device_class: "energy"
        state_class: "total_increasing"
        state: >
            {{ state_attr('sensor.poweropti', 'A_Minus') }}

YAML-Prüfung ist sauber aber ich finde die Entität danach nicht. :-/

Auch komisch: Mit dem “PV-Produktion ohne Wallbox”-Part funktioniert der “strom-aktuell”-Sensor auch nicht mehr.

Keiner eine Idee? Bin leider echt ratlos und weiß nicht wie ich einen Sensor aus 2 Sensoren berechnen soll :frowning:

Rechnen in HA hat @simon42 gut erklärt, das sollte Dir helfen:

Morgen Kalle,

versuche folgendes mit einer Variable “energy” ist es lesbarer, funktionier auch im Template-Editor

state: >
  {% set energy = states('sensor.strom_aktuell')|int - states('sensor.go_echarger_108263_nrg_12')|int %}
  {% if energy <= 0 %}
    0
  {% else %}
    {{energy}}
  {% endif %}

ansonsten deine Variante ohne {{ }} in IF Schleife

  {% if states('sensor.strom_aktuell')|int - states('sensor.go_echarger_108263_nrg_12')|int <= 0 %}
    0
  {% else %}
    {{states('sensor.tasmotasolar_energy_production_kwh')|int - states('sensor.ehz_meter_electric_production_kwh')|int}}
  {% endif %}
1 „Gefällt mir“

@Artjom
Herzlich willkommen hier im HA-Forum! :slight_smile:

1 „Gefällt mir“

DANKE! Oh man ich dachte die {{ }} werden immer für die Berechnung benötigt…Einfach weglassen und es geht xD Ich sag ja: Zu doof für YAML :slight_smile: Vielen Dank nochmal! Dann test ich das mal mit der Energiedashboard-Darstellung, ob das so klappt wie gewünscht.

Bitteschön! aber mit “Jinja” - Syntax kann man auch echt übertreiben :sweat_smile:.

{% ... %} für Anweisungen
{{ ... }} für Ausdrücke, die in der Template ausgegeben werden sollen

hier so was funktioniert auch

{% set energy = states('sensor.strom_aktuell')|int - states('sensor.go_echarger_108263_nrg_12')|int %}
{{ 0 if energy <= 0 else energy }}

eigentlich im Template-Editor funktionieren alle Berechnungen und dort kann man die ganz schön durchtesten

1 „Gefällt mir“

Ich stand auf dem Schlauch, weil meine Berechnung geklappt hat aber dann beim Kopieren in die if-Schleife die Berechnung offenbar nicht mehr klappen wollte. Da haben mich dann auch die lila geschweiften Klammern verwundert, die ja sonst rot waren.

Für den Energiemonitor hab ich jetzt übrigens noch einen Helfer mit Riemann-Summen-Integration erstellt, weil der aktuelle Zählerwert W ist und man für den Energiemonitor aber kWh braucht (power vs. energy state des Sensors). Jetzt lass ich ihn erstmal einige Werte sammeln, damit das visuell gut vergleichbar ist, wenn man die Sensoren tauscht. Ich poste euch dann mal ein Bild, wie das nachher aussieht :slight_smile:

Nachtrag:


So sieht es bisher aus. Orange ist die verbrauchte SOlarenergie. Blau der Netzbezug. Lila die Einspeisung


Orang und Lila sind identisch. Hellblau ist der Wallbox-Verbrauch und Dunkelblau der restliche Hausverbrauch. Die Addition passt perfekt. Jetzt muss ich nur noch gucken, wie man ihm begreiflich macht, dass die Werte nicht on-Top zum Solarstromverbrauch zu rechnen sind. Evtl muss ich da echt noch die Solarproduktion teilen oder so.

Habt ihr sonst noch eine Idee bzw. Erfahrung beim Anpassen des Energie-Dashboards bzw. dessen hinterlegte Berechnungen?

:crayon:by HarryP: Zusammenführung Mehrfachpost
*@Kalle *
Bitte zukünftig Ergänzungen/Korrekturen mit der “bearbeiten” Funktion (geht 24h) einbringen. Danke!