Simulation der Stromerzeugung von einem Windrad

hallo zusammen,

ich habe eine Wetterstation, mit der ich u.a. die Windgeschwindigkeit logge.
Nun habe ich gedacht ich könnte ja mal simulieren, was für eine Leistung ein Windrad mit einer Kennlinie x bei dem Wind erzeugen würde.
Die Kennlinie von Windrad ist leider keine Gerade, von daher habe ich folgendes vor:
Wenn der Wind < 11 ist (Wert 0 bzw. keine Erzeugung)
zw. 11 und 18 bzw.
zw. 18 und 25 bzw.
zw. 25 und 32 bzw.
zw. 32 und 40 bzw.
zw. 40 und 47 bzw.
über 47 (Wert 0 bzw. keine Erzeugung)

Für die jeweiligen Windbereiche habe ich aus der Kennlinie vom Windrad eine Gerade ausgemessen (y=mx+b).

Dachte ich lege am besten einen Sensor an, den ich mit If. / Else und entsprechender Rechenschritt versehe…
Aber irgendwie habe ich meine YAML Fähigkeiten noch überschätzt… hatte gehofft ähnliche Bsp. anpassen zu können, aber das wurde wohl nix…

hatte mir das so ähnlich vorgestellt, aber irgendwie bekomme ich die “oder” Bedingungen nicht richtig rein… kann mir da jemand weiterhelfen?

    # Berechnet Leistung von einem Windrad
      - name: Windrad(W)
        unique_id: "Windradwatt"
        state_class: measurement
        icon: mdi:transmission-tower
        unit_of_measurement: W
        device_class: power
        state: >
            {% if states('sensor.0815_wind_speed') | float(0) >11  and states('sensor.0815_wind_speed') | float(0) <18 %}
                {{ ( (states('sensor.0815_wind_speed') | float(0) ) * 20 -180 ) | round (3) }}
            {% else %}
                {{0 }}
            {% endif %}`

Für einen Windbereich funktioniert das so… aber nur für einen… Wenn ich die Erweiterung für die anderen Bereiche mache, gibt es eine Fehlermeldung…

Wo liegt hier der Fehler???

      - name: Windrad(W)
        unique_id: "Windradwatt"
        state_class: measurement
        icon: mdi:transmission-tower
        unit_of_measurement: W
        device_class: power
        state: >
            {% if states('sensor.0815_wind_speed') | float(0) >=11  and states('sensor.0815_wind_speed') | float(0) <18 %}
                {{ ( (states('sensor.0815_wind_speed') | float(0) ) * 20 -180 ) | round (3) }}
            {% elif states('sensor.0815_wind_speed') | float(0) >= 18  and states('sensor.0815_wind_speed') | float(0) <25,2 %}
                {{ ( (states('sensor.0815_wind_speed') | float(0) ) * 29,17 -345 ) | round (3) }}
            {% elif states('sensor.0815_wind_speed') | float(0) >= 25,2  and states('sensor.0815_wind_speed') | float(0) <32,4 %}
                {{ ( (states('sensor.0815_wind_speed') | float(0) ) * 37,8 -567 ) | round (3) }}
            {% elif states('sensor.0815_wind_speed') | float(0) >= 32,4  and states('sensor.0815_wind_speed') | float(0) <39,6 %}
                {{ ( (states('sensor.0815_wind_speed') | float(0) ) * 53,06 -1062 ) | round (3) }}
            {% elif states('sensor.0815_wind_speed') | float(0) >= 39,2  and states('sensor.0815_wind_speed') | float(0) <46,8 %}
                {{ ( (states('sensor.0815_wind_speed') | float(0) ) * 72,22 -1820 ) | round (3) }}
            {% else %}
                {{0 }}
            {% endif %}

Wenn man deutsch denkt… Punkt und Komma sollte man nicht verwechseln… :face_with_peeking_eye: