Azimut und Elevation der Sonne - Für Community Rega

Problemlösungen und Hinweise von allgemeinem Interesse zur Haussteuerung mit HomeMatic

Moderator: Co-Administratoren

Antworten
Benutzeravatar
Black
Beiträge: 5472
Registriert: 12.09.2015, 22:31
System: Alternative CCU (auf Basis OCCU)
Wohnort: Wegberg
Hat sich bedankt: 419 Mal
Danksagung erhalten: 1071 Mal
Kontaktdaten:

Azimut und Elevation der Sonne - Für Community Rega

Beitrag von Black » 09.07.2018, 19:40

Eine andere Version einer Sonnenstandsberechnung:

Die Berechnungen basieren auf den Formeln, welche auf http://www.geoastro.de/SME/tk/index.htm veröffentlicht sind. Diese sind auf die Rega spezifischen eigenheiten angepasst. Der Ansatz benutzt die seit einiger Zeit vorhandenen Trigonometrischen Funktionen der Rega.

Auf einer Raspberrymatik sollten die Beechnungen keine Hürde sein, der Prozessor verfügt über eine Floating Point Unit in Hardware (The SoC is a Broadcom BCM2835. This contains an ARM1176JZFS, with floating point unit, bei der CCU2 weiss ichs nicht genau)

Laut Ansatz erreicht die Berechnung eine Genauigkeit von
Höhenwinkel: mittlerer absoluter Fehler 0,22°, maximal 0,4°
Azimutwinkel: mittlerer absoluter Fehler 0,14°, maximal 0,35°

Zum Triggern der Berechnung benutze man ein Programm entweder mit Zeitmodul Zyklisch oder mittels eines CUxD Timers. Die Häufigkeit der Aufrufe richtet sich nach der gewüsnchten Auflösung, bei 24 Stunden a 60 Minuten und 360° eines Vollkreises ergibt sich alle 4 Minuten ein Winkelschritt von ~1°. EIn minütlicher Aufruf würde also theoretisch einen Auflösung von ~0.25° bringen.

Azimut
0° = N
90° = O (oder E)
180° = S
270° = W


benötigt werden: 2 Systemvariablen
Name: Sonnenstand.Azimut
Beschreibung: Himmelsrichtung Sonne
variablenTyp: zahl
Min: 0
max 360
Einheit °
-------------------------------------
Name: Sonnenstand.Elevation
Beschreibung: Winkel über Horizont
variablenTyp: zahl
Min: -90
max 90
Einheit °

Code: Alles auswählen

!- Azimut und Elevation berechnung Sonnenstand
!- Michael Thelen Februar 2018
!- Formeln von http://www.geoastro.de angepasst auf RegaScript
!- Geänderte Berechnung des Azimutüberganges aufgrund Fehlers in der Stammformel

object oAzimut= dom.GetObject(ID_SYSTEM_VARIABLES).Get ("Sonnenstand.Azimut"); 

real iHour= system.Date("%H").ToFloat () - ((system.Date ("%z").ToFloat ()/100.0)-1.0);
real iMin= system.Date ("%M").ToFloat ();
real pi180= M_PI/180.0;
real rLatitude = pi180*system.Latitude ();

real rJT    = (-1.0+system.Date ("%j").ToFloat ()+ (-12.0+iHour+iMin/60.0)/24.0)/365.0;
real dekl   = (0.006918+(-0.399912*(2.0*M_PI *rJT).Cos ())+(0.070257*(2.0*M_PI * rJT).Sin()) + (-0.006758*(2.0*M_PI* rJT).Cos ()) + (0.000907*(2.0*M_PI* rJT).Sin ()) + (-0.002697*(3.0*M_PI*rJT).Cos () ) + (0.00148*(3.0*M_PI*rJT).Sin ()))/ pi180;
real zGL= 229.18*(0.000075+(0.001868*(M_PI*2.0*rJT).Cos () ) + (-0.032077*(M_PI*2.0*rJT).Sin ()) + (-0.014615*(M_PI*4.0*rJT).Cos ()) +(-0.040849*(M_PI*4.0*rJT).Sin ()) ); 
real StdAncle= (((iHour*60.0)+iMin+zGL+(4.0*system.Longitude ())+ (-60.0))/4.0)+ (-180.0);
real SinElevation= (rLatitude.Sin () * (pi180*dekl).Sin () ) + (rLatitude.Cos () * (pi180*dekl).Cos () * (pi180*StdAncle).Cos () );
real Elevation= SinElevation.Asin ()/pi180;
real CosAzimut= ((rLatitude.Sin () * SinElevation)-(pi180*dekl).Sin ()) / (rLatitude.Cos () * SinElevation.Acos().Sin()) * (-1.0);
real Azimut= CosAzimut.Acos () / pi180;
if (Azimut<oAzimut.LastValue() ) {Azimut= 360.0-Azimut;}
 
oAzimut.State (Azimut);
dom.GetObject (ID_SYSTEM_VARIABLES).Get ("Sonnenstand.Elevation").State (Elevation); 

WriteLine ("Azimut: " # Azimut);
WriteLine ("Elevation: " # Elevation);
Gruss, Black
Zuletzt geändert von Black am 11.07.2018, 16:33, insgesamt 1-mal geändert.
Wenn das Fernsehprogramm immer mehr durch nervende Werbung unterbrochen wird und der Radiomoderator nur noch Müll erzählt, ist es besser, die Zeit für sinnvolle Dinge zu nutzen -
mal aufs Klo zu gehen, ein Bier zu holen oder einfach mal den roten AUS-Knopf zu drücken. Klick - und weg

Script Time Scheduler V1.3
AstroSteuerung über Zeitmodul flexibel mit Offset / spätestens, frühestens
SDV 5.03.01 Das umfassende Entwicklungs und Diagnosetool für Homematik
Selektive Backups - Nützliche Dinge, die die WebUI nicht kann

Intel NUC6 Celeron 16GB mit 512GB SSD unter Proxxmox mit insgesamt 5 VM: 2 x bloatwarebefreiter Raspberrymatik, 2 x IOBroker als Middleware und einer MariaDB zur Archivierung. Verbrauch: 6W

technical contribution against annoying advertising

Xel66
Beiträge: 14149
Registriert: 08.05.2013, 23:33
System: Alternative CCU (auf Basis OCCU)
Wohnort: Nordwürttemberg
Hat sich bedankt: 583 Mal
Danksagung erhalten: 1497 Mal

Re: Azimut und Elevation der Sonne - Für Community Rega

Beitrag von Xel66 » 09.07.2018, 21:10

Black hat geschrieben:
09.07.2018, 19:40
Zum Triggern der Berechnung benutze man ein Programm entweder mit Zeitmodul Zyklisch oder mittels eines CUxD Timers.
Gute Idee. Nachdem ich mich belehren lassen musste, dass auch der Azimut über das Jahr gewissen Schwankungen unterliegt, stehe ich diesen Berechnungslösungen nicht mehr ganz so kritisch gegenüber (habe früher auf das Prinzip Sonnenuhr verwiesen und gemeint, das durch reine Uhrzeitsteuerung ersetzen zu können).

Ich bin mir noch nicht im Klaren, welchen Aufwand die Reverse-Rechnung bedeuten würde, aber wäre es beim Vorhandensein des CUxD nicht eine gute Idee, die entsprechenden Zeitpunkte für die gewünschten Parameter (z.B. Auslösen bei XX°) in einen CUxD-Timer zu schreiben und diesen dann Programme triggern zu lassen? Somit müsste das Script nicht alle paar Minuten, sondern nur ein Mal täglich nach Mitternacht laufen und würde die gewünschten Timer beschreiben. Der Rest läuft automatisch. Nur mal so als Denkansatz, da es ja regelmäßig bei der anderen Lösung Probleme mit Abfragen >XX° gibt, weil diese Bedingungen ja über längere Zeiträume des Tages erfüllt sind. Ein CUxD-Timer löst nur zum Zeitpunkt aus (und überlebt auch einen Reboot).

Mit einem solchen Timer habe ich einen Wecker gebaut, mit dem ich mittels dreier Systemvariablen für Stunde, Minute und Wecker (in)aktiv, die ich in einer App oder Visualisierung setzen kann, die Weckzeit "frei" variieren kann und muss so nicht vorgefertigte Zeitmodule mit festen Zeiten benutzen. Ebenso schreibe ich meine vorgenzogenen Sonnenauf- und -untergangszeiten in einen Timer. Das Script zu letzteren läuft einmalig nachts. Gegen eine solche Sonnenstandsberechnung ist das mit seinen vier Zeilen natürlich Pillepalle, funktioniert aber.

Gruß Xel66
-------------------------------------------------------------------------------------------
524 Kanäle in 146 Geräten und 267 CUxD-Kanäle in 34 CUxD-Geräten:
343 Programme, 334 Systemvariablen und 183 Direktverknüpfungen,
RaspberryMatic Version: 3.65.11.20221005 + Testsystem: CCU2 2.61.7
-------------------------------------------------------------------------------------------
Einsteigerthread, Programmlogik-Thread, WebUI-Handbuch

Benutzeravatar
Black
Beiträge: 5472
Registriert: 12.09.2015, 22:31
System: Alternative CCU (auf Basis OCCU)
Wohnort: Wegberg
Hat sich bedankt: 419 Mal
Danksagung erhalten: 1071 Mal
Kontaktdaten:

Re: Azimut und Elevation der Sonne - Für Community Rega

Beitrag von Black » 09.07.2018, 21:25

hi,
ich geb dir recht, meine rollo steuerung geschieht auch über 2 CUXD timer, die kurz nach mitternacht mit den Zeiten Rollo hoch / Rollo runter geladen werden, die sich aus Sonnenauf / Sonnenuntergang, Offset zu diesen Zeiten und frühenstens / Spätetens Werten zusammensetzen. Hinzu kommtnoch ein lichtsensor, der so er arbeitet mit den frühestens spätestens werten verrechnet wird, fällt der lichtsensor (Komm Störung, Batterien leer) aus, arbeitet das system nach den mit offset und limit verrechneten Astrozeiten.

Lichtwecker arbeiet direkt bei mir über IOBroker, das ist ein Lightify LED Stripe, dan zu der in der Visu eingestellten Uhrzeit einen Sonnenaufgang ins schlafzimmer illuminiert.

Das Script hier habe ich im Einsatz für die Beschattung, je nach Azimut (der sich noch genähert grob nach der Uhrzeit bilden lassen würde) ,elevation, temperatur und helligkeit allgemein beschatte ich einige Räume.

Viele Wege führen halt nach Rom

gruss,Black
Wenn das Fernsehprogramm immer mehr durch nervende Werbung unterbrochen wird und der Radiomoderator nur noch Müll erzählt, ist es besser, die Zeit für sinnvolle Dinge zu nutzen -
mal aufs Klo zu gehen, ein Bier zu holen oder einfach mal den roten AUS-Knopf zu drücken. Klick - und weg

Script Time Scheduler V1.3
AstroSteuerung über Zeitmodul flexibel mit Offset / spätestens, frühestens
SDV 5.03.01 Das umfassende Entwicklungs und Diagnosetool für Homematik
Selektive Backups - Nützliche Dinge, die die WebUI nicht kann

Intel NUC6 Celeron 16GB mit 512GB SSD unter Proxxmox mit insgesamt 5 VM: 2 x bloatwarebefreiter Raspberrymatik, 2 x IOBroker als Middleware und einer MariaDB zur Archivierung. Verbrauch: 6W

technical contribution against annoying advertising

Mathias
Beiträge: 1783
Registriert: 03.11.2010, 10:25
System: CCU
Wohnort: Aachen
Hat sich bedankt: 58 Mal
Danksagung erhalten: 259 Mal
Kontaktdaten:

Re: Azimut und Elevation der Sonne - Für Community Rega

Beitrag von Mathias » 11.07.2018, 07:45

Ich habe das neue Skript mit dem Skript von Funkleuchtturm verglichen:
trend.png
(Das neue Skript ist als "Neu" gekennzeichnet.)

Da sind mir zwei Unterschieden (ELevationshöhe und Azimutwechsel) aufgefallen. Ich habe sie aber noch nicht weiter untersucht.

Gruß
Mathias

Xel66
Beiträge: 14149
Registriert: 08.05.2013, 23:33
System: Alternative CCU (auf Basis OCCU)
Wohnort: Nordwürttemberg
Hat sich bedankt: 583 Mal
Danksagung erhalten: 1497 Mal

Re: Azimut und Elevation der Sonne - Für Community Rega

Beitrag von Xel66 » 11.07.2018, 09:50

Ich denke, das liegt am unterschiedlichen Rücksetzzeitpunkt. Der Verlauf sieht plausibel aus.

Gruß Xel66
-------------------------------------------------------------------------------------------
524 Kanäle in 146 Geräten und 267 CUxD-Kanäle in 34 CUxD-Geräten:
343 Programme, 334 Systemvariablen und 183 Direktverknüpfungen,
RaspberryMatic Version: 3.65.11.20221005 + Testsystem: CCU2 2.61.7
-------------------------------------------------------------------------------------------
Einsteigerthread, Programmlogik-Thread, WebUI-Handbuch

paul53
Beiträge: 2554
Registriert: 26.04.2012, 20:42
Wohnort: Berlin
Danksagung erhalten: 15 Mal

Re: Azimut und Elevation der Sonne - Für Community Rega

Beitrag von paul53 » 11.07.2018, 10:07

Mathias hat geschrieben:
11.07.2018, 07:45
Da sind mir zwei Unterschieden (ELevationshöhe und Azimutwechsel) aufgefallen.
Der Azimutwechsel neu um 0:00 Uhr ist falsch. Der Wechsel muss von 360 ° auf 0 ° zum Zeitpunkt "nadir" passieren.
Versionen: HM-CC-TC 2.1, HM-LC-Sw1 1.9, HM-CC-RT-DN 1.1, HM-MOD-RPI-PCB 1.2.1 (keine CCU)

Benutzeravatar
Black
Beiträge: 5472
Registriert: 12.09.2015, 22:31
System: Alternative CCU (auf Basis OCCU)
Wohnort: Wegberg
Hat sich bedankt: 419 Mal
Danksagung erhalten: 1071 Mal
Kontaktdaten:

Re: Azimut und Elevation der Sonne - Für Community Rega

Beitrag von Black » 11.07.2018, 11:18

upps, das stimmt. Die Formel auf der Seite ist da leider Fehlerbehaftet, ich habs in einer Excel tabelle shcnell mal durhcgerechnet. Am 8.7 war der Wechsel 359.xx° < 0.xx Grad zwischen 00.39 und 00.40.

Muss ich gestehen, ist mir nicht aufgefallen bisher, weil die Werte, wo ich über Tag konsistente Ergebnisse brauche, mit den üblichen Tabellen und der Realität übereinstimmte.

Ich hab da aber schon eine Lösung denke ich und werde die einarbeiten.

Danke fürs aufzeigen, Black
Wenn das Fernsehprogramm immer mehr durch nervende Werbung unterbrochen wird und der Radiomoderator nur noch Müll erzählt, ist es besser, die Zeit für sinnvolle Dinge zu nutzen -
mal aufs Klo zu gehen, ein Bier zu holen oder einfach mal den roten AUS-Knopf zu drücken. Klick - und weg

Script Time Scheduler V1.3
AstroSteuerung über Zeitmodul flexibel mit Offset / spätestens, frühestens
SDV 5.03.01 Das umfassende Entwicklungs und Diagnosetool für Homematik
Selektive Backups - Nützliche Dinge, die die WebUI nicht kann

Intel NUC6 Celeron 16GB mit 512GB SSD unter Proxxmox mit insgesamt 5 VM: 2 x bloatwarebefreiter Raspberrymatik, 2 x IOBroker als Middleware und einer MariaDB zur Archivierung. Verbrauch: 6W

technical contribution against annoying advertising

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

Re: Azimut und Elevation der Sonne - Für Community Rega

Beitrag von darkbrain85 » 11.07.2018, 11:48

Xel66 hat geschrieben:
09.07.2018, 21:10
Gute Idee. Nachdem ich mich belehren lassen musste, dass auch der Azimut über das Jahr gewissen Schwankungen unterliegt, stehe ich diesen Berechnungslösungen nicht mehr ganz so kritisch gegenüber (habe früher auf das Prinzip Sonnenuhr verwiesen und gemeint, das durch reine Uhrzeitsteuerung ersetzen zu können).
Meine Schuld! :-D

Ich hatte kürzlich schonmal drüber nachgedacht, ob man nicht mit der Community Rega nicht ohne Eugens "workaround" arbeiten könnte.
Grundsätzlich macht Eugens Skript ja genau das selbe. Gibt es Vorteile mit dieser neuen Variante, die ich nicht überblickt habe? Oder ist es eher kosmetisch bzw "weil es geht"?

Antworten

Zurück zu „HomeMatic Tipps & Tricks - keine Fragen!“