Berechnung voraussichtliche Kosten des Nachtankens Heizöl

Hallo,

ich ziehe mir aus einer Webseite den tagesaktuellen Heizöl-Preis:

scrape:
  - resource: https://www.esyoil.com/
    sensor:
      - name: "Aktueller Heizölpreis"
        unique_id: "aktueller_heizolpreis"
        select: "#default-page-layout > main > section:nth-child(3) > div > div > div.data-tile-container > div > div.single-data-container > div.price > p"

Dieser Sensor liefert mit folgenden Wert: “101,76 €”. Das ist der Preis pro 100 Liter.

In der configuration.yaml habe ich diesen Sensor definiert, der mir die momentan nachzutankende Menge an Heizöl anzeigt:

      - name: "Tanken"
        unique_id: "tanken"
        unit_of_measurement: "L"
        state: >
            {{ states('input_number.max_oil_fill') | float - states('sensor.oilfox_ow8440194250_filllevelquantity') | float }}

Dieser Sensor liefert mir diesen Wert: “1103.0”. Also mit Punkt und ohne Einheit.
Ich wollte nun mit einem weiteren Sensor die voraussichtlichen Kosten für das Nachtanken berechnen. Die Idee war folgendermaßen:

      - name: "Gesamtkosten Heizöl"
        unique_id: "gesamtkosten_heizol"
        unit_of_measurement: "€"
        state: >
          {{ (states('sensor.aktueller_heizolpreis').replace(' €', '').replace(',', '.') | float / 100) * states('sensor.tanken').replace(',', '.') | float | round(2) }}

Ich hatte auch schon Versionen in denen die unterschiedlichen Werte (Punkt/Komma) und auch die Einheit “€” (mit oder ohne) berücksichtig wurden, leider alles ohne Erfolg. Der sensor.gesamtkosten_heizol liefert immer “nicht verfügbar”. Wo liegt mein Denkfehler bzw. Rechenfehler?

Grüße
Stony

Ich vermute die Mehrfachverkettung ist das Problem.
Versuche einmal nach diesem Muster:

{% set a = "10,1 €" %}
{% set b = "5,4 €" %}
{% set clean_a = a.replace(' €', '').replace(',', '.') | float %}
{% set clean_b = b.replace(' €', '').replace(',', '.') | float %}
{{ ((clean_a / 100) * clean_b) | round(2) }}

Ja, Du hast recht. Ich habe das nun so abgeändert und es funktionier nun:

      - name: "Gesamtkosten Heizöl"
        unique_id: "gesamtkosten_heizol"
        unit_of_measurement: "€"
        state_class: measurement
        device_class: monetary
        state: >
          {% set preis_pro_100l = states('sensor.aktueller_heizolpreis').replace('€', '').replace(',', '.') | float %}
          {% set menge_liter = states('sensor.tanken') | float %}
          {{ (preis_pro_100l / 100) * menge_liter }}
        availability: >
          {{ states('sensor.aktueller_heizolpreis') not in ['unknown', 'unavailable'] and
             states('sensor.tanken') not in ['unknown', 'unavailable'] }}