Rechnen mit sunrise() und sunset()

Begonnen von efyzz, 14 Februar 2017, 22:42:39

Vorheriges Thema - Nächstes Thema

betateilchen

"Paarungssstimmung bei 9°" deutet zumindest darauf hin, dass dort auch Eisbären und Pinguine rumlaufen könnten...
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

efyzz

Wow, danke! Dann habe ich ja jetzt ein paar Möglichkeiten zum Testen  :D

Zoo? Naja, neben 3 Katzen und einem Hund habe ich aktuell 7 Aquarien, natürlich alle gesalzen. Ein tropisches Korallenbecken steht im Wohnzimmer, alle anderen beinhalten Kaltwasser und stehen im Keller.
9°C hört (und fühlt) sich zwar kalt an, aber realistisch wären so 4-6°C für Nordseeverhältnisse um diese Jahreszeit. Gekühlt wird inzwischen über eine Erdleitung, die ich letztes Jahr in 1m Tiefe im Garten verbuddelt habe. Somit stellt sich eine zur Jahreszeit passende Temperatur von selbst ein. Früher hatte ich dafür das Kühlaggregat eines Kühlschranks ins Aquarium integriert und musste die Temperatur "manuell" nachführen.
Ebbe und Flut gibt es so nicht, wohl aber wechselnde Strömung im Rhythmus der Gezeiten, sowie Wellensimulation usw.

Leider hat nur meine Steuerung keine Kapazitäten mehr frei, um die Beleuchtung entsprechend der Jahreszeiten zu steuern. Daher bietet es sich an, dies über den RPi / fhem zu machen.
RaspberryPi3B, Bookworm Lite
Homematic Funkmodul HM-MOD-RPI-PCB
------------------------------------------------------------------------
Ich bin kein Programmierer ... aber ich weiß, auf welcher Seite der Lötkolben heiß ist.

efyzz

#17
Ich habe mich mal für die Lösung von Dietmar entschieden, da so ein Einzeiler doch wesentlich bequemer ist, als ein sub anzulegen.

Zitat von: Dietmar63 am 15 Februar 2017, 18:22:55
so sollte es auch gehen:

define AquariumOn  WeekdayTimer  {h2hms_fmt(22.0-(hms2h(sunset_abs())-hms2h(sunrise_abs())))}|on   22:00|off


Um 22:00 Uhr gab es wie gewünscht den off-Befehl, im Log steht nun allerdings:
Zitat2017.02.15 22:00:00 3: Please define {h2hms_fmt(22.0-(hms2h(sunset_abs())-hms2h(sunrise_abs())))}|on first

In die Kommandozeile eingegeben, ergibt {h2hms_fmt(22.0-(hms2h(sunset_abs())-hms2h(sunrise_abs())))} übrigens:
10:54:13
Das klingt schon mal realistisch, die Berechnung funktioniert also.

Naja, für heute ist Feierabend. Mal schauen, ob morgen um 10:54 etwas passiert  ;)

Edit (kann nicht einschlafen):
Laut Commandref muss beim weekdayTimer ein Device angegeben werden. Deswegen habe ich Dietmars Ausdruck mal so erweitert:
define AquariumBeleuchtungTimer WeekdayTimer AquariumBeleuchtung {h2hms_fmt(22.0-(hms2h(sunset_abs())-hms2h(sunrise_abs())))}|on 22:00|off

Ich denke, so sollte es klappen. Mal abwarten ...
RaspberryPi3B, Bookworm Lite
Homematic Funkmodul HM-MOD-RPI-PCB
------------------------------------------------------------------------
Ich bin kein Programmierer ... aber ich weiß, auf welcher Seite der Lötkolben heiß ist.

Dietmar63

#18
Ja, hast recht. Habe es auf die Schnelle hingeschrieben

so sollte ein list aussehen:

Internals:
   CFGFN
   COMMAND
   CONDITION
   DEF        wd  {h2hms_fmt(22.0-(hms2h(sunset_abs())-hms2h(sunrise_abs())))}|on   22:00|off
   DEVICE     wd
   GlobalDaylistSpec
   LANGUAGE   de
   NAME       AquariumOn
   NR         1077
   Profil 0: Sonntag 10:50:14 on, 22:00:00 off
   Profil 1: Montag 10:50:14 on, 22:00:00 off
   Profil 2: Dienstag 10:50:14 on, 22:00:00 off
   Profil 3: Mittwoch 10:50:14 on, 22:00:00 off
   Profil 4: Donnerstag 10:50:14 on, 22:00:00 off
   Profil 5: Freitag 10:50:14 on, 22:00:00 off
   Profil 6: Samstag 10:50:14 on, 22:00:00 off
   STATE      active
   STILLDONETIME 0
   TYPE       WeekdayTimer
   Readings:
     2017-02-16 01:01:01   currValue       off
     2017-02-16 01:01:01   nextUpdate      2017-02-16 10:50:14
     2017-02-16 01:01:01   nextValue       on
     2017-02-16 01:01:01   state           active
   SWITCHINGTIMES:
     {h2hms_fmt(22.0-(hms2h(sunset_abs())-hms2h(sunrise_abs())))}|on
Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

Thorsten Pferdekaemper

Zitat von: efyzz am 15 Februar 2017, 21:17:28Zoo? Naja, neben 3 Katzen und einem Hund habe ich aktuell 7 Aquarien, natürlich alle gesalzen. Ein tropisches Korallenbecken steht im Wohnzimmer, alle anderen beinhalten Kaltwasser und stehen im Keller.
9°C hört (und fühlt) sich zwar kalt an, aber realistisch wären so 4-6°C für Nordseeverhältnisse um diese Jahreszeit. Gekühlt wird inzwischen über eine Erdleitung, die ich letztes Jahr in 1m Tiefe im Garten verbuddelt habe. Somit stellt sich eine zur Jahreszeit passende Temperatur von selbst ein. Früher hatte ich dafür das Kühlaggregat eines Kühlschranks ins Aquarium integriert und musste die Temperatur "manuell" nachführen.
Ebbe und Flut gibt es so nicht, wohl aber wechselnde Strömung im Rhythmus der Gezeiten, sowie Wellensimulation usw.
:) ::)
Klingt ziemlich abgefahren. Wenn Du nicht so weit weg wärst, dann würde ich mir das gerne mal ansehen...
Gruß,
   Thorsten 
FUIP

efyzz

Danke Dietmar,

es funktioniert jetzt prima.
Ich kann gerade noch verstehen, warum in dem Listing (genau wie bei Dir) dann jeden Tag dieselbe Uhrzeit steht. Aber scheinbar wird diese letztlich doch täglich neu berechnet und passt somit am Ende.
Wann und wieso wird diese Neuberechnung durchgeführt? Ist das eine Eigenheit des WeekdayTimer oder was passiert da?!

@Thorsten:
In einem anderen Forum gibt es jede Menge Fotos. Wenn Du willst, schicke ich Dir einen Link per PN. Du musst Dich dann allerdings dort registrieren.
Übrigens sind solche Strömungssimulationen usw. heutzutage nichts Besonderes mehr in der (Meerwasser-) Aquaristik. Entsprechende Controller kann man überall kaufen. Ich baue sowas allerdings selbst, so kann man 2 Hobbys prima verbinden. ;)
RaspberryPi3B, Bookworm Lite
Homematic Funkmodul HM-MOD-RPI-PCB
------------------------------------------------------------------------
Ich bin kein Programmierer ... aber ich weiß, auf welcher Seite der Lötkolben heiß ist.

Dietmar63

kurz nach Mitternacht werden die timer des neuen Tages neu berechnet
Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

Thorsten Pferdekaemper

Zitat von: efyzz am 16 Februar 2017, 21:27:14@Thorsten:
In einem anderen Forum gibt es jede Menge Fotos. Wenn Du willst, schicke ich Dir einen Link per PN. Du musst Dich dann allerdings dort registrieren.
Danke, vielleicht lieber nicht. Ansonsten fange ich selbst wieder damit an...
Gruß,
   Thorsten
FUIP

efyzz

Mahlzeit,

seit letztem Wochenende ist der RasPi hardwareseitig mit der Aquarienbeleuchtung vergnubselt und es funktioniert perfekt!
Nochmals vielen Dank für eure Hilfe!

Zitat2017-02-16_22:00:00 AquariumBeleuchtung off
2017-02-17_12:09:00 AquariumBeleuchtung on
2017-02-17_22:00:00 AquariumBeleuchtung off
2017-02-18_12:05:02 AquariumBeleuchtung on
2017-02-18_22:00:00 AquariumBeleuchtung off
2017-02-19_12:01:01 AquariumBeleuchtung on
2017-02-19_22:00:00 AquariumBeleuchtung off
2017-02-20_11:57:01 AquariumBeleuchtung on
2017-02-20_22:00:00 AquariumBeleuchtung off
2017-02-21_11:52:59 AquariumBeleuchtung on
2017-02-21_22:00:00 AquariumBeleuchtung off
2017-02-22_11:48:57 AquariumBeleuchtung on
2017-02-22_22:00:00 AquariumBeleuchtung off
2017-02-23_11:44:55 AquariumBeleuchtung on
2017-02-23_22:00:00 AquariumBeleuchtung off
2017-02-24_11:40:52 AquariumBeleuchtung on

Wie man sieht, geht die Beleuchtung jeden Tag etwa 4 min früher an, aber immer um 22:00 Uhr aus.  Genau so sollte es sein! :D

Ich würde nun gern die Einschaltzeit und/oder die Beleuchtungsdauer als Jahresverlauf grafisch darstellen. Dafür bräuchte ich also ein SVG-Plot, das auf der X-Achse ein ganzes Jahr abbildet und auf der Y-Achse jeweils die on-Zeit jedes Tages. Kann mir da nochmal jemand einen Denkanstoß zur Konfiguration des Plots geben?
RaspberryPi3B, Bookworm Lite
Homematic Funkmodul HM-MOD-RPI-PCB
------------------------------------------------------------------------
Ich bin kein Programmierer ... aber ich weiß, auf welcher Seite der Lötkolben heiß ist.

Thorsten Pferdekaemper

Hi,
Du brauchst erstmal ein Reading, in dem das Gewünschte steht...
Gruß,
   Thorsten
FUIP