FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: meikelS am 17 Dezember 2019, 12:05:17

Titel: [gelöst] Regelmäßiger "Event" bei eigenem Modul auslösen
Beitrag von: meikelS am 17 Dezember 2019, 12:05:17
Hallo,


ich möchte testweise mal ein eigenes Modul schreiben.
Das soll regelmäßig etwas machen. Das macht man vermutlich über einen ausgelösten Event.
Ich kann aber in der Erklärung zur Modulprogrammierung außer den dort genannten Events nichts finden.


Ich möchte eigentlich kein extra "Device" wie ein "AT" haben.
Gibt es da eine Möglichkeit?


Ansonsten wäre meine Idee, dass das Modul beim Initialisieren, das kann man ja wohl als Event erkennen, selbst einen "AT" anlegt, der dann halt was triggert.


Titel: Antw:Regelmäßiger "Event" bei eigenem Modul auslösen
Beitrag von: Beta-User am 17 Dezember 2019, 12:13:17
Klingt so, als wäre InternalTimer dein Freund.

Oder eben eine notifyFn, die auf $init_done lauscht (finde ich aber weniger elegant).

Beispielcode gibt es häufiger, ich habe z.B. den WeekdayTimer jüngst auf so eine InternalTimer-Lösung umgestellt:

sub WeekdayTimer_Define($$) {
  my ($hash, $def) = @_;
[...]
  InternalTimer(time(), "WeekdayTimer_Start",$hash,0);
 
  return undef;
}.

sub WeekdayTimer_Start($) {
  my ($hash) = @_;
  my $name = $hash->{NAME};
  my @a = split("[ \t\\\n]+", $hash->{DEF});
  [...]

  return undef;
}
Titel: Antw:Regelmäßiger "Event" bei eigenem Modul auslösen
Beitrag von: meikelS am 20 Dezember 2019, 16:44:04
Super. Das ist genau das, was ich gesucht habe.
Danke