[gelöst] Regelmäßiger "Event" bei eigenem Modul auslösen

Begonnen von meikelS, 17 Dezember 2019, 12:05:17

Vorheriges Thema - Nächstes Thema

meikelS

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.


Don't blame the newbies.

Beta-User

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;
}
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

meikelS

Super. Das ist genau das, was ich gesucht habe.
Danke
Don't blame the newbies.