Astrozeiten im Jahresverlauf grafisch darstellen

Das Langzeitarchiv für HomeMatic

Moderator: Co-Administratoren

Ben Cooper
Beiträge: 60
Registriert: 09.01.2022, 16:58
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 7 Mal
Danksagung erhalten: 3 Mal

Astrozeiten im Jahresverlauf grafisch darstellen

Beitrag von Ben Cooper » 26.02.2022, 15:11

Hallo zusammen,

ich möchte gern die von meiner RaspberryMatic berechneten Astrozeiten (Sonnenauf- und -untergang) im Jahresverlauf mit dem CCU-Historian grafisch darstellen. Die beste Lösung, die mir dazu bisher eingefallen ist, sieht so aus:

Zwei Systemvariablen "Sonnenaufgang" und "Sonnenuntergang" definieren.

Mit einem Zentralenprogramm jede Nacht einmal das folgende Skript ausführen:

Code: Alles auswählen

!Astrozeiten in Systemvariablen schreiben
!Die Zeitdarstellung erfolgt in Minuten seit Mitternacht (0 - 1440)
dom.GetObject('Sonnenaufgang').State((60 * system.SunriseTime("%H").ToInteger()) + system.SunriseTime("%M").ToInteger());
dom.GetObject('Sonnenuntergang').State((60 * system.SunsetTime("%H").ToInteger()) + system.SunsetTime("%M").ToInteger());
Nach ein paar Tagen sieht das Ergebnis im Historian dann so aus:
Astrozeiten_Historian.jpg
Jetzt wäre es natürlich noch schick, auf der Y-Achse anstelle der "Minuten seit Mitternacht" stattdessen die tatsächliche Uhrzeit angezeigt zu bekommen. Hat dazu vielleicht jemand eine Idee oder eine andere, bessere Lösung?

Fonzo
Beiträge: 6744
Registriert: 22.05.2012, 08:40
System: CCU
Hat sich bedankt: 25 Mal
Danksagung erhalten: 486 Mal

Re: Astrozeiten im Jahresverlauf grafisch darstellen

Beitrag von Fonzo » 26.02.2022, 16:57

Ben Cooper hat geschrieben:
26.02.2022, 15:11
Hat dazu vielleicht jemand eine Idee oder eine andere, bessere Lösung?
Ich habe mir das mal für meinen Bedarf berechnet über astronomische Formeln aus "Practical Astronomy with your Calculator or Spreadsheet" von Peter Duffet-Smith und Jonathan Zwart.
Die Dämmerungszeiten Jahr und Dämmerungszeiten Tag lasse ich mir dann in meiner Visualisierung über ein Webseitenelement anzeigen. Code dazu findest Du unter Astronomie Modul. Andere Daten berechne ich da ebenfalls über astronomische Formeln und lasse mir z.B. eine aktuelle Mondansicht anzeigen.

Ben Cooper
Beiträge: 60
Registriert: 09.01.2022, 16:58
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 7 Mal
Danksagung erhalten: 3 Mal

Re: Astrozeiten im Jahresverlauf grafisch darstellen

Beitrag von Ben Cooper » 26.02.2022, 17:19

Fonzo hat geschrieben:
26.02.2022, 16:57
für meinen Bedarf berechnet über astronomische Formeln
Das ist sehr beeindruckend, vielen Dank für den Hinweis. Allerdings erscheint mir das für meinen Bedarf mindestens drei Level zu hoch zu sein und man benötigt außerdem dafür eine IP-Symcon Umgebung, korrekt?

Ich möchte die Astrozeiten nicht selbst berechnen, sondern etwas viel trivialeres tun - nämlich lediglich mithilfe des CCU-Historians kontrollieren bzw. nachvollziehen, welche Sonnenauf- und -untergangszeiten mein RaspberryMatic-System für jeden Tag ermittelt hat.

Fonzo
Beiträge: 6744
Registriert: 22.05.2012, 08:40
System: CCU
Hat sich bedankt: 25 Mal
Danksagung erhalten: 486 Mal

Re: Astrozeiten im Jahresverlauf grafisch darstellen

Beitrag von Fonzo » 26.02.2022, 17:34

Ben Cooper hat geschrieben:
26.02.2022, 17:19
Allerdings erscheint mir das für meinen Bedarf mindestens drei Level zu hoch zu sein und man benötigt außerdem dafür eine IP-Symcon Umgebung, korrekt?
Ich habe mir das in meinem Fall mit IP-Symcon gelöst, da die Graphen mit den Dämmerungszeiten mit PHP erzeugt werden. Letzlich sind das ja aber nur astronomische Formeln, wo und wie Du die jetzt nutzt ist ja jedem selber überlassen, das muss ja nicht zwingend PHP sein und auch nicht IP-Symcon.
Ben Cooper hat geschrieben:
26.02.2022, 17:19
Ich möchte die Astrozeiten nicht selbst berechnen, sondern etwas viel trivialeres tun - nämlich lediglich mithilfe des CCU-Historians kontrollieren bzw. nachvollziehen, welche Sonnenauf- und -untergangszeiten mein RaspberryMatic-System für jeden Tag ermittelt hat.
Ist es für den Zweck nicht vielleicht einfacher die Zeit aus der Variable auszulesen und zu einer anderen Variable, die eine Liste enthält, zu ergänzen? Dann hast Du vielleicht nicht unbedingt eine Grafik, aber anhand der Liste kannst Du dann ja einfach sehen wann etwas geschaltet worden ist.

Benutzeravatar
Baxxy
Beiträge: 10841
Registriert: 18.12.2018, 15:45
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 609 Mal
Danksagung erhalten: 2228 Mal

Re: Astrozeiten im Jahresverlauf grafisch darstellen

Beitrag von Baxxy » 26.02.2022, 17:38

Warum nicht einfach die ermittelte Uhrzeit für SA / SU als Zahl in 2 Systemvariablen schreiben.
Aus 07:10 wird dann halt 7.10

Code: Alles auswählen

real SA = system.SunriseTime("%H.%M").ToFloat();
real SU = system.SunsetTime("%H.%M").ToFloat();
Sieht vielleicht nicht ganz so "schön" aus, aber der Verlauf sollte ablesbar sein.

MichaelN
Beiträge: 9681
Registriert: 27.04.2020, 10:34
System: CCU
Hat sich bedankt: 700 Mal
Danksagung erhalten: 1626 Mal

Re: Astrozeiten im Jahresverlauf grafisch darstellen

Beitrag von MichaelN » 26.02.2022, 17:44

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 +++

MichaelN
Beiträge: 9681
Registriert: 27.04.2020, 10:34
System: CCU
Hat sich bedankt: 700 Mal
Danksagung erhalten: 1626 Mal

Re: Astrozeiten im Jahresverlauf grafisch darstellen

Beitrag von MichaelN » 26.02.2022, 17:56

Mit Bordmitteln kannst Du das für einen gegebenen Tag mit diesem Skript berechnen

Für deinen Anwendungsfall musst Du
Sollwert auf 0 setzen; ggf. die Rechengenauigkeit in der nächsten Zeile noch erhöhen.
Und das Datum auf einen Dir genehmen Wert setzen

Code: Alles auswählen

!- Uhrzeit zu einer gegebenen Sonnenhöhe berechnen V1.1 MN
real Sollwert = 0; !- gegebene Sonnenhöhe
integer Genauigkeit = 5; !- Schrittweite in Minuten (nur Ganzzahlen,>0)
string SV_Aufgang = "Aufgangszeit";    !- Namen der Systemvariablen in der das Ergebnis abgelegt wird
string SV_Untergang ="Untergangszeit";
string Datum = system.Date("%F"); ! aktuelles Datum oder ein beliebiges Datum nach Schema "2022-12-31";

! Hier nichts mehr ändern 
integer AktuelleZeit =  Datum.ToTime().ToInteger(); !system.Date("%F").ToTime().ToInteger();
integer NeueZeit;
real IstElevation = -100.0;
object SV;


   !- Morgendämmerung berechnen
   NeueZeit = AktuelleZeit + ( 10800 - ( Genauigkeit * 60)); !- um 3 Uhr starten
   while ( IstElevation < Sollwert ) {
         NeueZeit = ( NeueZeit + ( Genauigkeit * 60)) ; !- x Minuten hinzu
         IstElevation =  system.SunAltitude(NeueZeit); !- Elevation zur neuen Zeit berechnen
   }
   WriteLine("Ergebnis Morgendämmerung: " #NeueZeit.ToTime().Format("%d.%m.%Y %H:%M"));
   SV = dom.GetObject(ID_SYSTEM_VARIABLES).Get(SV_Aufgang);
   if ( SV ) {SV.State(NeueZeit.ToTime().Format("%d.%m.%Y %H:%M"));}

   !- Abenddämmerung berechnen
   IstElevation = 100.0;
   NeueZeit = AktuelleZeit + ( 54000 - ( Genauigkeit * 60)); !- um 15 Uhr starten
   while ( IstElevation > Sollwert ) {
         NeueZeit = ( NeueZeit + ( Genauigkeit * 60)) ; !- x Minuten hinzu
         IstElevation =  system.SunAltitude(NeueZeit); !- Elevation zur neuen Zeit berechnen
   }
   WriteLine("Ergebnis Abenddämmerung: " #NeueZeit.ToTime().Format("%d.%m.%Y %H:%M"));
   SV = dom.GetObject(ID_SYSTEM_VARIABLES).Get(SV_Untergang);
   if ( SV ) {SV.State(NeueZeit.ToTime().Format("%d.%m.%Y %H:%M"));}
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 +++

Ben Cooper
Beiträge: 60
Registriert: 09.01.2022, 16:58
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 7 Mal
Danksagung erhalten: 3 Mal

Re: Astrozeiten im Jahresverlauf grafisch darstellen

Beitrag von Ben Cooper » 26.02.2022, 18:00

Baxxy hat geschrieben:
26.02.2022, 17:38
Warum nicht einfach die ermittelte Uhrzeit für SA / SU als Zahl in 2 Systemvariablen schreiben. Aus 07:10 wird dann halt 7.10
Das war tatsächlich auch mein erster Lösungsansatz. :)
Baxxy hat geschrieben:
26.02.2022, 17:38
Sieht vielleicht nicht ganz so "schön" aus, aber der Verlauf sollte ablesbar sein.
Da stimme ich Dir in beidem zu, wobei ersteres (also die bei jeder Stunde auftretenden Sprünge bzw. Lücken zwischen X.59 und Y.00) schon ziemlich unschön aussieht, weshalb ich die "sprungfreie" Minuten-seit-Mitternacht-Lösung vorgezogen habe.

Schade, dass man keine Systemvariable vom Typ "Datum/Uhrzeit" definieren kann... :(

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

Re: Astrozeiten im Jahresverlauf grafisch darstellen

Beitrag von Black » 26.02.2022, 18:10

bei der CCU gibt es entsprechend keine Systemvariable vom type time.

du kannst aus den vorherihen HM-Scripts auch bei den 0..59 Minuten aber auch via Dreisatz ins kaufmännische 0..99 umsetzen. dann entspricht 12:45 halt 12.75, ist dann umgangssprachlich "dreiviertel eins"

dies wäre der einfachste und im Umfeld auch kostenneutrale Ansatz.

natürlich gehen auch entsprechende andere Engines, für astronomische Berechnungen auf der von mir verwendeten Middleware verwende ich
npm astromomy engine

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

Ben Cooper
Beiträge: 60
Registriert: 09.01.2022, 16:58
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 7 Mal
Danksagung erhalten: 3 Mal

Re: Astrozeiten im Jahresverlauf grafisch darstellen

Beitrag von Ben Cooper » 26.02.2022, 18:20

Fonzo hat geschrieben:
26.02.2022, 17:34
Ist es für den Zweck nicht vielleicht einfacher die Zeit aus der Variable auszulesen und zu einer anderen Variable, die eine Liste enthält, zu ergänzen? Dann hast Du vielleicht nicht unbedingt eine Grafik, aber anhand der Liste kannst Du dann ja einfach sehen wann etwas geschaltet worden ist.
Gute Idee - Ich denke, genau das werde ich zusätzlich zu meiner aktuellen Minuten-seit-Mitternacht-Lösung tun. Damit habe ich das beste aus beiden Welten mit minimalem Aufwand: Eine grafische Übersicht im CCU-Historian und darüber hinaus auch eine Liste, aus der ich die SA/SU-Uhrzeiten der Zentrale für einen bestimmten Tag direkt im Klartext entnehmen kann. :D

Antworten

Zurück zu „CCU-Historian“