Fenster beschattung automatisieren anhand Sonneneinstrahlung auf PV

Hallo Zusammen,

ich nutze Home Assistant nun schon eine Weile und bin dabei natürlich immer wieder in eurem Forum gelandet.
Diesmal konnte ich keine Lösung für mein Vorhaben finden und habe mich daher nun auch registriert :wink:

Was ich tun möchte:
Meine Fenster durch Rollläden automatisch beschatten.

Limitierung:
Ich habe keine Lichtsensoren an den Rollläden. Ich habe alles bisher soweit automatisiert, dass die Rollläden automatisch runter fahren, wenn die Sonne vom Winkel her rein scheinen könnte und wieder hoch fahren, wenn sie es nicht mehr kann.
So weit so gut, nun muss ich natürlich nicht beschatten, wenn es bewölkt ist. Egal ob die Sonne nun vor meinem Fenster ist oder nicht.
Dazu behelfe ich mir aktuell mit der Wettervorhersage und beschatte nur bei “sonnig”.
Das ist allerdings nicht wirklich genau.
Ich würde gerne meine PV anlage, die ebenfalls in HomeAssistant integriert ist nutzen, um zu erkennen, ob die Sonne stark genug scheint, um eine beschattung notwendig zu machen.
Da wäre die erste Intuition: Grenzwert der PV Leistung.
Das ist aber etwas schwierig, da ich eine Südausrichtung habe, demnach habe ich morgens nicht so viel Leistung, allerdings könnte mir die Sonne da schon gut einheizen.
Nun mein Gedanke. Ich würde gerne das theoretische maxiumum errechnen, dass meine PV anlage aktuell (bei aktuellem solaren azimut und elevation) produzieren KÖNNTE, wenn man annnimmt, dass die Sonne voll scheint (können 1000 w/m² annehmen). Dann möchte ich ausrechnen wieviel % dieser Leistung ich tatsächlich gerade erreiche und den % Wert kann ich dann als schwelle verwenden, um zu erkennen, ob ich beschatten muss oder nicht.

Mein problem ist aber: Kann mir jemand sagen, wie ich das theoretische maxium der PV anlage zum aktuellen Zeitpunkt errechnen kann? Morgens um 7 wäre es z.b. aktuell um die 1kw…mittags um 12 sinds dann 12kw…

Wenn jemand hierzu eine Formel hätte, wäre ich sehr dankbar. Falls ihr alternative Ideen dazu habt, auch gerne her damit :slight_smile:

Ich bin gespannt auf eure Ideen.
Liebe Grüße!

Wenn Du an die Modulspannung herankommst würde das vergleichbar mit einem Helligkeitssensor sein :wink:
Hier mal von mir einige Sensoren vom 1.7.2025 bis Heute welche die Sonneneinstrahlung abbilden zum vergleichen.

Warum nutzt du nicht einfach den Einfallswinkel der Sonne an deinem Standort bezogen auf die Ausrichtung des Hauses ?

Die Daten liefert die das Netz und für HA gibt es entsprechend Integrationen, das umzusetzen.
Bekannter von mir macht das so auch mit HA.

Ich meine sogar, das Simon42 oder ein andere deutsche Youtuber dazu schon ein Video gemacht hat.

Hi Tuxtom007,

ja das habe ich so weit schon. Ich würde nur gerne noch eine zweite Bedingung haben, die besagt, dass die Sonne aktuell auch wirklich scheint und nicht nur theoretisch vor dem fenster ist.

Hi Suedschwede,

Danke für die Idee. Ich habe mir mal angeschaut wo ich ran komme.
An die Spannung einzelner Module komme ich nicht, aber an die Spannung aller Module die am Wechselrichter anliegen. Ich habe hier mal die Spannung als auch die Leistung angezeigt am 01. und 02. Juli. Der erste Juli hatte zeiten, zu denen eine Beschattung nicht notwendig ist. Das erkenne ich allerdings nicht an der Spannung, sondern lediglich an der Leistung.

Nur erkenne ich das eben nicht automatisch, da mir der vergleich zum “Was würde denn produziert werden, wenn die Sonne grade voll scheinen würde?” fehlt. Denn wie gesagt: Ein statischer Schwellwert funktioniert nicht für den ganzen Tag.

hoi, ich berücksichtige bei mir noch die aussentemperatur.
also astrozeit und temperatur sagen den rollladen was sie zu tun haben
muss allerdings dazu sagen das diesen skript im iobroker läuft da ich gerade erst umsteige und das blockly für mich immer nocht der einfachste weg zum skripten ist

Das einzige verlässliche was anzeigt ob die Sonne scheint und das es nicht nur hell ist währe dann ein Pyranometer. Da wird aus einem Temperaturfühler welcher voll in der Sonne hängt zu einem der voll im Schatten hängt die Temperaturdifferenz gebildet, also hohe Temperaturdifferenz bedeutet Sonne scheint, niedrige Temperaturdifferenz Sonne scheint nicht, keine oder sehr geringe Temperaturdifferenz bedeutet es ist Dunkel. Das gute daran es funktioniert Sommer wie Winter :slightly_smiling_face:
Hier noch mal der Vergleich Solarstrahlung zum Pyranometer.


Daten Februar 2025 vom Pyranometer

1 „Gefällt mir“

Ich hatte meine Markise mit der PV-Leistung in Kombination mit dem Temperaturwert ausgefahren. Jetzt ist sie einer Überdachung gewichen.

Für mich ist die Temperatur im Raum entscheidend. Deshalb nutze ich die Daten eines Temperatursensor um die Rollläden zu steuern.

Ich nutze auch sonnenstand, vorhersage und innen uns aussentemperstur.
Zusätzlich schatte ich nur mai bis September ab. In der kalten Jahreszeit kanns ruhig reinscheinen.

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 :wink:

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 :wink:

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 :slight_smile: Ich lass es euch wissen, wie sich der Ansatz im Test geschlagen hat :wink:

1 „Gefällt mir“