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!
- Variable anlegen
- Name: Mond_Mondphase
Typ: Zeichenkette - Name: Mond_naechster_Vollmond
Typ: Zeichenkette - Programm anlegen
- 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 Variablenreal uts = 1.0*(system.Date("%F %X").ToTime().ToInteger());real rvm = 1371990738.0;real smm = 2551443.0;real rnm = 1357933418.0;!Naechster Vollmond berechnenwhile(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 berechnenreal 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!