Astronomie Modul

@Fonzo
Danke, die Antwort hat auch mir geholfen. Auch bei anderen Modulen. Hatte das „'Problem“ nur noch nicht angegangen. Funzt.

Finde das Modul auch echt Klasse. Leider habe ich das Problem, das seit dem Vollmond am 11.April jetzt bei mir als nächster Vollmond immernoch der 4. April angezeigt wird, obwohl der Tag ja schon vorbei ist. Aktualisiert hat sich die Variable aber schon mehrfach.

Berechnet wird das nach Zyklus aber da kann ich noch mal nachschauen. Aber eigentlich sollte bei Dir zur Zeit bei Vollmond immer noch 11.4. stehen und bei letztes Viertel 19.04.

Du meinst Du hättest das gerne so das sobald ein Termin vorbei ist das unabhänig vom gesamt Zyklus gleich der nächste Termin berechnet wird, richtig?

Hi … auch von mir herzlichen Dank für das tolle Modul … ich fände es auch besser, wenn jeweils der nächste Termin berechnet würde …

Vielleicht könnten wir uns auf eine zusätzliche Variable „Nächster Vollmond“, o.ä. einigen. Dann könnte der Zyklus so bleiben und wäre vollständig. :wink:

Hi,
genauso hatte ich mir das Vorgestellt.also eine extra Variable für den nächsten Vollmond wäre echt Klasse :slight_smile:

Hallo Zusammen,

ich habe jetzt zusätzlich zum Script eine Variable gesetzt. Dann wird zunächst korrekt die Variable gesetzt, es läuft aber das Script danach nicht mehr.

Kann das sein? Also wenn Variable und Script in einem Astronomie Timer gesetzt sind, das dann nur die Variable gesetzt wird und dann nichts mehr passiert?
Ich hab jetzt zwei Timer gesetzt und einmal die Variable und einmal das Script drin. Müsste jetzt wieder klappen.
Kann das jemand bestätigen, oder habe ich noch einen Denkfehler?

Gruß Frank

Hallo Fonzo,

vielen dank für dein Modul.

Wenn ich die Astronomie Instanz unter Kern Instanzen erstellen möchte bekomme ich immer folgenen Fehler.

Astro_fehler.jpg
Wenn ich bei mir auf dem Server die moduel.php datei ändere indem ich

$this->RegisterCyclicTimer('Update', 360000, 'Astronomy_SetAstronomyValues('.$this->InstanceID.');');	

unter public function Create() verschiebe kann ich die Instanz erstellen.

Die AstronimieTimer Instanz kann ich ohne Fehler erstellen und Funktioniert auch. Obwohl ja auch hier der Timer bei public function ApplyChanges() erstellt wird.

ich nutze die Version 4.2 vom 20.04

Gruß Matzel

Danke für die Rückmeldung anscheinend hat sich da was geändert mit 4.2 oder ich habe das schon immer falsch gemacht und habs nicht gemerkt. Ich finde zumindest nichts in der Doku das das in Create stehen muss aber wenn es jetzt Fehlermeldungen hagelt scheint das wohl so gewollt zu sein. Das IPS bei der anderen Funktion nicht meckert liegt daran das es nach wie vor meines Wissens nicht möglich ist Zyklische Timer zu setzten. RegisterTimer ist inzwischen in IPS Funktion während RegisterCyclicTimer eine eigene Funktion ist, da es die Möglichkeit ja zur Zeit noch nicht als IPS Funktionen gibt.

Ich schaue mir das mal an wäre aber ganz froh wenn sich mal Paresy oder sonst wer, der sich damit auskennt, äußert warum jetzt Register Timer unter Create stehen muss?

Das mit der zusätzlichen Mond Variable schaue ich mir dann auch noch an.

Es gab schon immer und noch nie andere als Intervall-Timer.
Alles andere war selbstgebaut.
Die offizielle Funktion ist RegisterTimer.
RegisterTimer — IP-Symcon :: Automatisierungssoftware
Hier ist die Doku veraltet, inzwischen gibt es ms Auflösung und Timer dürfen nur im Create erstellt werden.
Um zu bestimmten Zeiten den Timer auszulösen muss man selbst die Zeit berechnen und mit SetTimerInterval — IP-Symcon :: Automatisierungssoftware neu stellen.
Michael

So Bugfix ist Online. Sollte jetzt also gehen, das mit dem der zusätzlichen Variable für Mondzeiten mach ich mal später. Falls noch irgendwelche Fehler jetzt wegen 4.2 auftauchen bitte melden.

Nichts anders hatte ich ja gesagt deswegen die Funktion um einen Zyklischen Timer zu setzten.

Aha, danke für die wichtige Info, naja wenn das denn bekannt ist das die Doku veraltet ist warum wird die dann nicht geändert? Das muss ich gleich mal melden :rolleyes:.

Der zyklische Timer ist aber auch nicht konform, da er ja ein Ereignis im Baum erzeugt :wink:
Mit ‚es gibt nur Intervall-Timer‘ ist eher gemeint, nur diese sind auch erlaubt!
Michael

Tja erlaubt oder nicht, ich brauche einen und wie löse ich das dann am besten?

Ausrechnen, ist ja nicht schwer.
Zielzeit - Jetztzeit = Zeit für den Intervall.
Michael

Danke

jetzt Funktioniert es
Nochmals super Arbeit :):slight_smile:

Ja soweit klar. Ich will aber das der Timer nicht einfach nur alle 24 Stunden läuft sondern genau um 0:05 Uhr und das alle 24 h. Da eine Idee zu?


$Now = new DateTime();
$Target = new DateTime();
$Target->modify('+1 day');
$Target->setTime(0,0,5);
$Diff =  $Target->getTimestamp() - $Now->getTimestamp();
$Interval = $Diff *1000;

Einmal in Applychanges.

Dann entweder jedes mal neu in der Timer Methode oder dort einfach fest auch 606024*1000 einstellen, weil dann lief es ja eben um 00:05 und somit sind es dann immer 24h.
Bis zum nächsten Neustart zumindest :wink:

Michael

Danke Dir erstmal. Kapiert habe ich das jetzt trotzdem irgendwie noch nicht. Den Timer muss ich in Create setzen. In ApplyChanges berechne ich das Intervall, das aber bereits in Create gesetzt wurde? Wie geht das genau das das funktioniert oder habe ich einen Knoten im Kopf um die Uhrzeit, wird Create nicht vor ApplyChanges ausgeführt und ist dann nicht die Variable unbekannt?

What?
RegisterTimer in Create mit Intervall 0.
Dann SetTimerInterval in ApplyChanges mit dem errechneten Wert.
Michael