Mondphase berechnen

Standardmäßig kennt die Homematic CCU keine Mondphase.
Mit diesem kleinen Script, kann die aktuelle Mondphase sowie das Datum des nächsten Vollmond berechnet werden.

Los geht’s!

  • Bedingung: Wenn… Zeitsteuerung, Zeitspannung ganztägig, Serienmuster Zeitintervall alle 1 Stunden
  • Aktivität: Dann… Script einfügen
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
!Mondphase berechnen
!Script by www.homematic-guru.de, geändert Raimund Stoll, 2020
!Benötigte Systemvariablen:
!Mond_Mondphase: Zeichenkette Mond_Mondphase
!Mond_naechster_Vollmond: Zeichenkette Mond_naechster_Vollmond
!Script jede Stunde ausführen
 
!Referenz Variablen
real uts = 1.0*(system.Date("%F %X").ToTime().ToInteger());
real rvm = 1371990738.0;
real smm = 2551443.0;
real rnm = 1357933418.0;
 
!Naechster Vollmond berechnen
while(rvm <= uts){rvm = rvm + smm;}
real x1 = rvm.ToTime();
string y1 = x1.Format("%d.%m.%Y");
object nvm = dom.GetObject('Mond_naechster_Vollmond');
nvm.Variable(y1);
 
!Mondphase berechnen
real x2 = ((uts-rnm)/smm);
integer x3 = x2.ToInteger();
real x4 = (x2-x3)*100;
integer x5 = x4.ToInteger();
object mf = dom.GetObject('Mond_Mondphase');
string z3 = "Mond";
if(x5 <= 100){z3 = "Abnehmender Mond";}
if(x5 <= 60){z3 = "Vollmond";}
if(x5 <= 40){z3 = "Zunehmender Mond";}
if(x5 <= 15){z3 = "Neumond";}
mf.Variable(z3);

Fertig!