Sonnenstandsberechnung von der Raspberrymatic

Einrichtung, Nutzung und Hilfe zu RaspberryMatic (OCCU auf Raspberry Pi)

Moderatoren: jmaus, Co-Administratoren

MichaelN
Beiträge: 9642
Registriert: 27.04.2020, 10:34
System: CCU
Hat sich bedankt: 697 Mal
Danksagung erhalten: 1614 Mal

Re: Sonnenstandsberechnung von der Raspberrymatic

Beitrag von MichaelN » 27.05.2020, 09:56

Black hat geschrieben:
27.08.2019, 15:03
Alternativ kannst auch als Parameter eine Zeit übergeben und als Ergebnis bekonnst du den Sonnenstand zu der Zeit
system.SunAzimuth (@08:00@); !- Sonnenstand heute morgen um 8 Uhr
Kann man das auch andersrum anwenden? Ich würde gerne zu einem gegebenen Azimut/Elevationswinkel die Uhrzeit berechnen.
LG, Michael.

Wenn du eine App zur Bedienung brauchst, dann hast du kein Smarthome.

Wettervorhersage über AccuWeather oder OpenWeatherMap+++ Rollladensteuerung 2.0 +++ JSON-API-Ausgaben auswerten +++ undokumentierte Skript-Befehle und Debugging-Tipps +++

Benutzeravatar
jmaus
Beiträge: 9840
Registriert: 17.02.2015, 14:45
System: Alternative CCU (auf Basis OCCU)
Wohnort: Dresden
Hat sich bedankt: 462 Mal
Danksagung erhalten: 1863 Mal
Kontaktdaten:

Re: Sonnenstandsberechnung von der Raspberrymatic

Beitrag von jmaus » 27.05.2020, 13:13

Nein.
RaspberryMatic 3.75.6.20240316 @ ProxmoxVE – ~200 Hm-RF/HmIP-RF/HmIPW Geräte + ioBroker + HomeAssistant – GitHub / Sponsors / PayPal / ☕️

MichaelN
Beiträge: 9642
Registriert: 27.04.2020, 10:34
System: CCU
Hat sich bedankt: 697 Mal
Danksagung erhalten: 1614 Mal

Re: Sonnenstandsberechnung von der Raspberrymatic

Beitrag von MichaelN » 27.05.2020, 13:18

Schade, ich würde nämlich lieber einmal am Tag die neue Uhrzeit für die zu überwachenden Winkel berechnen und entsprechende Timer setzen, statt alle 5 Minuten die Winkel zu ermitteln.
LG, Michael.

Wenn du eine App zur Bedienung brauchst, dann hast du kein Smarthome.

Wettervorhersage über AccuWeather oder OpenWeatherMap+++ Rollladensteuerung 2.0 +++ JSON-API-Ausgaben auswerten +++ undokumentierte Skript-Befehle und Debugging-Tipps +++

Horst2
Beiträge: 11
Registriert: 30.11.2018, 16:02
Danksagung erhalten: 1 Mal

Re: Sonnenstandsberechnung relativ zu einem Solarkollektor/Solarzellen

Beitrag von Horst2 » 25.03.2022, 20:26

Hallo, ich habe jetzt mal ein Skript geschrieben, das den Winkel zwischen der Sonnen und der Senkrechten auf einen Solarkollektor (oder Solarzellen) berechnet. Die Berechnung folgt den Informationen vom 29.07.2020, 12:18 von rumar aus https://www.matheboard.de/archive/596587/thread.html und ist umgesetzt umgesetzt in die Skriptsprache der HomeMatic/RaspberryMatic-CCU:

Code: Alles auswählen

! Einfallswinkel der Sonne für Solarkollektor
! https://www.schmidhorst.de
! Skript z.B. via Zeitsteuerung tagsüber alle 10 min ausführen lassen

! Bitte hier die Kollektorausrichtung eintragen:
var g = 40;  ! ° Neigungswinkel/Dachwinkel des Kollektors
var d = 180; ! Südausrichtung, 180°=volle Südausrichtung, 90° = Osten, 270° = Westen
var sysVarName="solSonnenEinfallsWinkel"; ! Systemvariable fürs Ergebnis

time t = system.Date().ToTime();
! t= @2021-03-25 13:00@; ! nach Bedarf zum Debuggen ändern und aktivieren
! t = @12:00@; ! Uhrzeit am aktuelles Tag
var h = system.SunAltitude(t);
var alpha = system.SunAzimuth(t);
WriteLine(t.Format("%F %X") #": Höhenwinkel Sonne h=" # h # "°, Azimut alpha=" # alpha # "°");

! https://www.matheboard.de/archive/596587/thread.html
! Der gegen die Sonne zeigende Einheitsvektor s kann dann im kartesischen Azimutalsystem so dargestellt werden:
!     ( cos(h) cos(a) )
! s = ( cos(h) sin(a) )
!     (    sin(h)     )
! x-Achse nach Norden, y-Achse nach Osten, z in Zenitrichtung
!
! Himmel zeigender Normalenvektor n der Kollektorfläche:
! Dachneigung g, Ausrichtung des Daches (Süd wäre 180°) d
!     ( sin(g) cos(d) )
! n = ( sin(g) sin(d) )
!     (   cos(g)      )

! Winkel e zwischen den Vektoren s und n:
! e = arccos[ cos(h)*cos(a)*sin(g)*cos(d) + cos(h)*sin(a)*sin(g)*sin(d) + sin(h)*cos(g)]

var gB = M_PI * g.ToFloat() / 180; ! Umrechnung ins Bogenmaß
var dB = M_PI * d.ToFloat() / 180;
var gBsin = gB.Sin();
var hB = M_PI * h / 180;
var alphaB = M_PI * alpha/180;
var hBcos = hB.Cos();
var sx = hBcos* alphaB.Cos();
var sy = hBcos * alphaB.Sin();
var sz = hB.Sin();
WriteLine("Normalenvektor Sonne:" # sx # ", " # sy # ", " # sz);
! Hinweis: Lichtbrechung der Sonne beim Eintritt in Erdatmosphäre vernachlässigt
var nx = gBsin * dB.Cos();
var ny = gBsin * dB.Sin();
var nz = gB.Cos();
WriteLine("Normalenvektor Kollektor:" # nx # ", " # ny # ", " # nz);
var eB = ((sx * nx) + (sy * ny) + (sz * nz)).Acos(); ! Winkel zw. beiden Vektoren im Bogenmaß
var e = eB * 180 /M_PI; ! Umrechnung auf Grad
! e: 0° = genau Senkrecht, 90° = voll tangential
WriteLine("Einfallswinkel e = " # eB # " = " # e # "° (Abweichung der Sonnenrichtung von der Normalen des Kollektors)");
if (e>90) { ! >90: Kollektor würde von hinten bestrahlt
  e=90; ! z.B. für Diagramm besser begrenzen
  eB=M_PI*0.5;
  }
! option 90° gedreht:
! var e2=90-e; ! e2: 90=Sonne genau senkrecht zum Kollektor, 0 = volltangential

var oSv = dom.GetObject(sysVarName);
if (oSv) {
  oSv.State(e); ! wenn diese Systemvariable existiert, Ergebnis ablegen
  }
else {
  WriteLine("Systemvariable '" # sysVarName # "' fürs Ergebnis nicht gefunden");
  }
var w=0; !Wirkungsgrad 0.0 (nicht von Sonne beschienen) ... 1.0 (genau zur Sonne ausgerichtet)
if ((h>=0) && (e<=90)) {
  w = eB.Cos();
  }
WriteLine("Wirk-Faktor cos(e)=" # w);
Beim berechneten "Wirk-Faktor" sind winkelabhängige Lichtreflektionen am Kollektor nicht berücksichtigt. Ebensowenig ist die Dämpfung des Sonnenlichts durch die Erdatmosphäre berücksichtigt, die sich ja mit dem Sonnenwinkel ändert. Die Leistung an einem wolkenlosen Tag wird daher einen anderen Verlauf als dieses cos(e) haben.

darkbrain85
Beiträge: 1343
Registriert: 27.06.2015, 22:17
Hat sich bedankt: 43 Mal
Danksagung erhalten: 32 Mal

Re: Sonnenstandsberechnung von der Raspberrymatic

Beitrag von darkbrain85 » 26.03.2022, 09:09

Cool, danke für das Script. Ich habe zwar (noch) keinen praktischen Nutzen dafür, aber es ist sicher interessant das mal übers Jahr zu loggen...

Antworten

Zurück zu „RaspberryMatic“