Autor Thema: [Idee] alignTime() als zentrale Funktion bereitstellen  (Gelesen 403 mal)

Offline betateilchen

  • Developer
  • Hero Member
  • ****
  • Beiträge: 13591
  • Das "S" in "IoT" steht für "Security"
[Idee] alignTime() als zentrale Funktion bereitstellen
« am: 29 August 2017, 09:17:39 »
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.
« Letzte Änderung: 29 August 2017, 10:57:04 von betateilchen »
-----------------------
Nächster Hamburg-Stammtisch: 15.12.2017
Gefällt mir Gefällt mir x 1 Zustimmung Zustimmung x 1 Liste anzeigen

Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 17262
Antw:[Idee] alignTime() als zentrale Funktion bereitstellen
« Antwort #1 am: 29 August 2017, 19:04:10 »
Habe nichts dagegen, du musst aber bis naechste Woche warten.
Gefällt mir Gefällt mir x 1 Liste anzeigen

Offline betateilchen

  • Developer
  • Hero Member
  • ****
  • Beiträge: 13591
  • Das "S" in "IoT" steht für "Security"
Antw:[Idee] alignTime() als zentrale Funktion bereitstellen
« Antwort #2 am: 29 August 2017, 20:44:31 »
Danke!

Bloss keine Hektik. Das ging jetzt so lange ohne, da kommt es auf eine Woche bestimmt nicht an.
-----------------------
Nächster Hamburg-Stammtisch: 15.12.2017

Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 17262
Antw:[Idee] alignTime() als zentrale Funktion bereitstellen
« Antwort #3 am: 03 September 2017, 16:32:34 »
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.

 

decade-submarginal