Hallo zusammen,
ich möchte aus einem Modul heraus interne Timer, die ebenso aus dem Modul heraus erstellt werden, nachträglich ändern, genauer gesagt die TRIGGERTIME.
Das Ändern ist nicht das Problem sondern eher, dass FHEM es nicht interessiert und die Funktion bzw. in diesem Fall eine anonyme sub nicht zur geänderten Zeit aufruft.
Was muss man tun damit FHEM die Timer bspw. neu einliest bzw. zur geänderten Zeit ausführt?
Oder muss man stattdessen den vorhandenen Timer löschen, den CODE ref deparsen und damit einen neuen Timer aufrufen?
Dankeschön :)
Die alten, oder den alten Timer löschen und dann wieder neu anlegen entsprechend dem Code.
Ist das Dein Modul oder willst Du in ein Modul als User eingreifen (was untypisch wäre)?
Mist, ich hab die Antwort befürchtet ;-/
Ist mein Modul...
Zitat von: mcp am 23 Dezember 2022, 14:44:55
Was muss man tun damit FHEM die Timer bspw. neu einliest bzw. zur geänderten Zeit ausführt?
Jedenfalls habe ich das bisher immer so gemacht, und auch DefFn() von 90_at.pm macht es so ;) .
Falls du ein gepackagtes Modul hast, gibt es die Funktion resetRegIntTimer() aus dem Hilfscode in https://svn.fhem.de/trac/browser/trunk/fhem/lib/FHEM/Core/Timer/Register.pm. Macht aber nur Sinn, wenn du eine Vielzahl von vorher nicht absehbaren Timern mit unterschiedlichen Namen und Funktionen verwalten willst...
ZitatIst mein Modul...
Warum muss man in diesem Fall "den CODE ref deparsen" ?
nein, muss man natürlich nicht :)
Wollte wahrscheinlich damit nur zum Ausdruck bringen, daß es sich um eine anonyme Funktion handelt.