Berechnungen eines Sensors in der yaml?

abend

der folgende Sensor rechnet ja den wert des sensors dividiert durch 100

sensor:
  - platform: template
    sensors:
      epex_spot_price_euro_per_kwh:
        unique_id: "epex_spot_price_euro_per_kwh"
        friendly_name: "EPEX Spot Preis in Euro pro kWh"
        value_template: "{{ (states('sensor.epex_spot_data_net_price') | float / 100) | round(4) }}"
        unit_of_measurement: "Euro/kWh"

wie führ man komplexere Berechnungen durch z.b
zum Börsenpreis eine Ausgleichsenergiekomponente von 3 % auf den Börsenpreis sowie eine Beschaffungskomponente von 1,5 Cent/kWh und 20% Mwst

und das sagt Chatgpt :sunglasses:

template:
  - sensor:
      - name: "Berechneter Sensor"
        unit_of_measurement: "EUR"
        state: >
          {% set original_value = states('sensor.original_sensor') | float(0) %}
          {{ ((original_value * 1.03) + 0.015) * 1.2 }}
        icon: mdi:calculator
        attributes:
          original_sensor: "{{ states('sensor.original_sensor') }}"
          formula: "(Originalwert + 3%) + 1,5 Cent + 20%"

Ja sieht doch gut aus, was da herausgekommen ist. Um es etwas verständlicher zu machen bzw. den Code besser zu verstehen, würde ich es so aufbauen (mit ein paar Variablen). Aber sollte im Prinzip bei beiden das selbe Ergebnis herauskommen.

sensor:
  - platform: template
    sensors:
      epex_spot_preis_gesamt:
        unique_id: "epex_spot_preis_gesamt"
        friendly_name: "EPEX Spot Preis inkl. Komponenten"
        value_template: >
          {% set grundpreis = states('sensor.epex_spot_data_net_price') | float / 100 %}
          {% set ausgleichsenergie = grundpreis * 0.03 %}
          {% set beschaffungskosten = 0.015 %}
          {% set gesamtpreis = (grundpreis + ausgleichsenergie + beschaffungskosten) * 1.2 %}
          {{ gesamtpreis | round(2) }}
        unit_of_measurement: "€/kWh"

1 „Gefällt mir“

ja danke die Berechnung passt

1 „Gefällt mir“