Vorab: Wenn man selbst einen Sensor auf dem Dach o.ä. hat der einem die Solarstrahlung (w/m², wie z.b. von Suedschwede vorgeschlagen) liefert, dann ist das, was ich hier mache, nicht nötig. Hab ich nur leider nicht
Ich hab für mich eine Annäherungslösung gefunden, die tut was ich möchte.
Ich errechne das theoretische Maximum mit einer Parabelfunktion, da ich die Nullstellen (Sonnenuntergang/aufgang), den Scheitelpunkt (Sonnenhöchstsand) sowie mein PV Peak kenne. Das ist nicht so exakt, wie das errechnen anhand von Azimut und Elevation, aber einfacher und nah genug dran
Hier mal ein Screenshot bei dem ich relevante Datenpunkte/Konfigurationsmöglichkeiten anzeige.
Damit rechne ich aus wie viel W meine PV anlage gerade theoretisch produzieren könnte, wenn ein sonniger Sommertag wäre und prüfe wieviel sie tatsächlich produziert. Das gibt mir die den PV Leistungsfaktor. Der korreliert direkt mit der Sonneneinstrahlung (W/m²) also Leistung / Fläche.
Damit das nicht bei jeder Wolke rauf und runter fähr, nehme ich den durchschnitt der letzten 5 Minuten. Als grenzwert für die Beschattung, habe ich jetzt mal 50% festgelegt.
Werde dem ganzen jetzt erst mal ne testphase geben. Was man natürlich noch machen könnte, wäre den grenzwert in Abhängigkeit zur Außentemperatur höher oder niedriger ansetzen. also z.b. bei 25°C nimm exakt meinen eingestellten grenzwert. Für jedes grad höher beschatte schon bei z.b. 5% weniger. Also bei 30°C schon bei 25% Leistungsfaktor. Ob der durchschnitt von 5 minuten bereits ausreicht um ein unruhiges beschatten zu vermeiden, muss ich auch noch rausfinden.
Hier noch der Code der Helfer und Automatisierungen, die ich dafür verwende:
Reales PV Peak:
Ist ein number input das euer tatsächliches PV Peak festlegt. Ihr könnt stattdessen auch gern fix überall euer peak eintragen wo das input verwendet wird. Ich arbeite gern mit variablen.
Tages alpha:
Ist ein number input das den Faktor für meine Parabelfunktion, der einmal pro Tag neu anhand der Zeiten für Sonnen Auf/Untergang sowie Höchstand von folgender automatisierung Berechnet wird:
alias: Tages Alpha aktualisieren
description: ""
triggers:
- trigger: time
at: "01:00:00"
- trigger: state
entity_id:
- input_number.reales_pv_peak
conditions: []
actions:
- action: input_number.set_value
metadata: {}
data:
value: |-
{{
(-1 * states('input_number.reales_pv_peak') | float)
/(
((states('sensor.sun_next_rising') | as_datetime).astimezone().hour + ((states('sensor.sun_next_rising') | as_datetime).astimezone().minute / 60))
- ((states('sensor.sun_next_noon') | as_datetime).astimezone().hour + ((states('sensor.sun_next_noon') | as_datetime).astimezone().minute / 60))
)**2
}}
target:
entity_id: input_number.tages_alpha
mode: single
Aktuelles theoretisches maximum für PV Leistung (Template Sensor Helfer):
{{
states('input_number.tages_alpha') | float
* (
((now().hour) + now().minute/60 )-
((states('sensor.sun_next_noon') | as_datetime).astimezone().hour +(states('sensor.sun_next_noon') | as_datetime).astimezone().minute/60 )
)**2
+ states('input_number.reales_pv_peak') | float
}}
PV Leistungsfaktor (Template Sensor Helfer):
{{
(states('sensor.solarnet_pv_leistung') | float /
states('sensor.aktuelles_theoretisches_maximum_fur_pv_leistung') | float) * 100
}}
Durchschnittlicher Leistungsfaktor der letzten 5 Minuten:
Ist ein Statistik sensor (Statistik integration) der den Durchschnitt des PV Leistungsfaktor innerhalb der letzten 5 Minuten berechnet.
Prüfung ob beschattung (hier als beispiel für meine Ost fenster) notwendig ist:
{{
states('sensor.sun_solar_azimuth') | float > states('input_number.ost_beschattung_ab') | float
and states('sensor.sun_solar_azimuth') | float < states('input_number.ost_beschattung_bis') | float
and states('sensor.temperature_max') | float > states('input_number.temperaturgrenzwert_fur_beschattung') | float
and states('sensor.durchschnittlicher_leistungsfaktor_der_letzten_5_minuten') | float > states('input_number.pv_leistung_grenzwert') | float
}}
Falls jemand fragen hat, oder weitere Anregungen, gerne her damit Ich lass es euch wissen, wie sich der Ansatz im Test geschlagen hat