FHEM Forum

FHEM - Entwicklung => FHEM Development => Thema gestartet von: Tobias am 04 April 2014, 19:18:48

Titel: InternalTimer mit at-Funktionalität?
Beitrag von: Tobias am 04 April 2014, 19:18:48
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 ;)
Titel: Antw:InternalTimer mit at-Funktionalität?
Beitrag von: betateilchen am 04 April 2014, 19:30:26
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.
Titel: Antw:InternalTimer mit at-Funktionalität?
Beitrag von: Loredo am 04 April 2014, 19:30:57
ich such die ganze Zeit noch nach dem Wortspiel  ;D
Titel: Antw:InternalTimer mit at-Funktionalität?
Beitrag von: Tobias am 04 April 2014, 19:39:15
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...
Titel: Antw:InternalTimer mit at-Funktionalität?
Beitrag von: betateilchen am 04 April 2014, 19:54:21
Warum baust Du in deinem Modul nicht einfach ein "require 90_at" ein, dann kannst Du die at-eigenen Funktionen verwenden?
Titel: Antw:InternalTimer mit at-Funktionalität?
Beitrag von: rudolfkoenig am 05 April 2014, 08:28:24
Oder suchst du nach GetTimeSpec ?
Titel: Antw:InternalTimer mit at-Funktionalität?
Beitrag von: Tobias am 05 April 2014, 19:40:15
danke, habe ein paar zeilen aus at.pm kopiert..... jetzt läuft es