[Idee] alignTime() als zentrale Funktion bereitstellen

Begonnen von betateilchen, 29 August 2017, 09:17:39

Vorheriges Thema - Nächstes Thema

betateilchen

Da es inzwischen mehrere Module gibt, die mit Prozessen in Intervallen periodischen Abständen arbeiten (at, Calendar, HTTPMOD, ...) und ein Attribut alignTime anbieten, ist inzwischen auch die Berechnung der nächsten Ausführung aus $interval und $alignTime mehrfach umgesetzt und in den Modulen enthalten.

Wäre es nicht sinnvoll, eine entsprechende Berechnung als zentrale Funktion von FHEM bereitzustellen? Wahrscheinlich werden künftig noch mehr Module auftauchen, die zeitbasiert arbeiten. Dann muss man nicht jedes Mal das Rad neu erfinden.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

rudolfkoenig

Habe nichts dagegen, du musst aber bis naechste Woche warten.

betateilchen

Danke!

Bloss keine Hektik. Das ging jetzt so lange ohne, da kommt es auf eine Woche bestimmt nicht an.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

rudolfkoenig

Ab sofort gibt es in fhem.pl ein computeAlignTime($timeSpec, $alignSpec, $triggertime).

$timeSpec ist der Intervall (z.Bsp. 01:00 fuer einmal in der Stunde)
$alignSpec ist die Zeit, wann es auch ausgefuehrt werden soll (z.Bsp. 12:00)
Beide Werte werden mit GetTimeSpec analysiert, Format ist also HH:MM, HH:MM:SS oder {perlfunc()}

$triggertime ist optional, und bezeichnet die bisher berechnete naechste Ausfuehrungszeit ohne alignTime. Falls nicht gesetzt, wird die aktuelle Zeitpunkt verwendet. Vermutlich komplett ueberfluessig, ich bin nur unsicher, ob ich durchs Weglassen im at nicht irgendetwas aendere, und das Risiko wollte ich nicht eingehen.

CoolTux

Vielen vielen Dank Udo und Rudi. Genau das brauche ich aktuell. Tolle Arbeit.


Grüße
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net