@frankjoke Ich hatte gestern das Problem dass die Geräte nach einer Minute bereits als away gekennzeichnet wurden. Scanzeit auf 20 Sekunden, delayAway auf 15 Minuten. Ich habe dann mal einen Blick in den Code geworfen und festgestellt dass die Zeit beim Starten zurückgesetzt wird:
if (Math.floor(scanDelay * 2 / 1000 / 60)<= delayAway)
delayAway = Math.ceil(scanDelay * 2.5 / 1000 / 60);
In meinem Fall steht scanDelay auf 20 Sekunden - also ergibt sich daraus:
20000 * 2 / 1000 / 60
= 0,66
- nach dem floor bleibt dann noch eine 0.
Du schreibst dass delayAway auf 2,5*scanDelay
gesetzt wird wenn delayAway UNTER scanDelay*2
gesetzt wurde. Prüfen tust du jedoch ob delayAway größer ist als Math.floor(scanDelay * 2 / 1000 / 60)
- in meine Fall steht hier also if (0 <= delayAway)
- das ist natürlich immer true wenn delayAway >= 0 ist. Dadurch wird delayAway dann auf 1 Minute gesetzt.
Ich habe die zwei Zeilen auskommentiert - läuft nun wunderbar mit einer Verzögerung von 15 Minuten.