Hallo,
ich habe ein komisches Phänomen. Ich rufe jede Minute eine Funktion auf. Manchmal wird die dahinterliegende Funktion aber einfach 10-20 mal direkt hintereinander, also nicht maximal 1 x pro Minute aufgerufen. Einzig gemeinsamer Nenner ist, dass das Problem unmittelbar nach FHEM (neu-) Start auftritt.
define Every1Minute at +*00:01:00 { Every1Minute() }
attr Every1Minute alignTime 00:00
Ich habe das Problem soweit im Griff, dass ich die Funktion "Every1Minute" so schütze.
$data{LastEvery1Min} = 0 unless(defined($data{LastEvery1Min}));
return if(time() < $data{LastEvery1Min}+1*50);
$data{LastEvery1Min} = time();
Das klappt zwar, aber wieso wird die Funktion manchmal mehrmals in einem kurzem Zeitraum aufgerufen?
Hi,
Zitatdass das Problem unmittelbar nach FHEM (neu-) Start auftritt.
Nach FHEM Neustart oder nach komplettem Systemneustart?
Was ist das für ein System?
Gruß Otto
Zitat von: Otto123 am 09 Februar 2019, 11:57:15
Hi,Nach FHEM Neustart oder nach komplettem Systemneustart?
Was ist das für ein System?
Beides.
Mein Gedanke ging in die Richtung: Beim Raspberry z.B. bleibt die Uhr während der Startphase "stehen" und wird erst später über NTP korrigiert. Dabei ändert sich die Systemzeit innerhalb kurzer Zeit. Keine Ahnung wie sich ein minuten Takt Gerät dabei verhält.
War nur ne Idee...
Hmmm, guter Ansatz. Unter Windows gibt es GetTickCount, um die MSek seit Systemstart zu ermitteln. Gibt es sowas auch im FHEM? Müsste ja mehr 59 Sekunden sein, bevor die erste Minute aufgerufen wird.