{% set last_value = states('sensor.solar_gesamtleistung') | float(0) %}
float(0) setzt bereits den Wert auf 0 wenn unavailable und deshalb kommt es gar nicht mehr zu der Prüfung
{% if states('sensor.solar_gesamtleistung') | lower not in ['none', 'unavailable', 'unknown'] %}
setze mal nur | float
Theoretisch kannst Du es auch hier machen weil die invaliden Stati werden ja bereits abgefangen
{{ states('sensor.solar_gesamtleistung') | float(0) }}
Jetzt wird es spannend und auch das war auch der Grund warum ich oben vermutete, daß Dein Fall nicht trivial ist.
Erhoffst Du mit last_value den Vorgänger Wert zu erhalten?
Im oberen Konstrukt hat last_value immer den momentanen Wert entweder eine Watt Zahl oder den Invaliden Status aber nicht den Vorgänger Wert.
EDIT:
Den müßte man sich entweder über eine Automatisation zwischenspeichern oder über ein Konstrukt wie Du es hier siehst