Hi,
in meinem Modul möchte ich im Define einen Timer mitgeben, exakt analog dem at-command.
zb:
+*00:30 #alle 30sek
*05:00:00 #jeden Morgen 5Uhr
Ich möchte gerne den Trigger mit InternalTimer setzen und nicht innerhalb des Moduls ein fhem "Define myAT at +*...." machen. Allerdings den halben Code aus at.pm möchte ich auch nicht kopieren.
Was ist hier der Königsweg?? hehe, was für ein Wortspiel ;)
das ist doch relativ einfach:
im ersten Fall ist das einfach gettimeofday+30 - das funktioniert out-of-the-box
im zweiten Fall ist das Intervall 86400 ausgehend von der ersten Ausführung um 05:00 Uhr. Du musst also das erste Intervall berechnen bis das erste Mal 05:00 Uhr ist, und dann das Interval auf 86400 setzen.
Dazu muss man nun wirklich nicht "das halbe at-Modul" nachprogrammieren.
Wenn die aktuelle Uhrzeit kleiner als die erste Ausführung ist : erstesIntervall = sollZeit - time
Wenn die aktuelle Uhrzeit größer als die erste Ausführung ist: erstesIntervall = Sekunden bis Mitternacht + Sekunden bis zur sollZeit.
Die Sekunden bis Mitternacht lassen sich einfach ermitteln: 86400 - (Stunden*3600) - (Minuten*60) - Sekunden (von der aktuellen Uhrzeit)
Nur das Parsing des Parameterstrings musst Du selbst machen - aber auch das ist ja nicht weiter kompliziert.
ich such die ganze Zeit noch nach dem Wortspiel ;D
Zitat von: Loredo am 04 April 2014, 19:30:57
ich such die ganze Zeit noch nach dem Wortspiel ;D
Rudolf König -> Königsweg...
@Udo: dachte es geht noch einfacher... irgendeine interne Funktion der man den String übergeben könnte und die Sekunden für InternalTimer gibts zurück... Ok, dann muss ich wohl ran...
Warum baust Du in deinem Modul nicht einfach ein "require 90_at" ein, dann kannst Du die at-eigenen Funktionen verwenden?
Oder suchst du nach GetTimeSpec ?
danke, habe ein paar zeilen aus at.pm kopiert..... jetzt läuft es