PRESENCE: Timeouts richtig verstehen

Begonnen von Pfriemler, 10 März 2014, 17:55:39

Vorheriges Thema - Nächstes Thema

Pfriemler

FHEM macht mir als baldigem UHU schon Knoten ins Hirn ...

PRESENCE kennt zwei Timeouts: TIMEOUT_NORMAL und TIMEOUT_PRESENCE (fhem 5.3fff). In der Commandref werden noch "check-interval" und "present-check-interval" dafür verwendet. Leider ist beides eigentlich nicht das gleiche.
(NB: Bei meinem Koukaam Netio230B dachte ich auch, das Ping-"Intervall" für den Watchdog auf 120 Sekunden und das "Timeout" auf 20 Sekunden zu setzen - in der Hoffnung, das Ding würde alle 120 Sekunden einen Ping absetzen und nach 20 Sekunden Wartezeit auslösen. Pustekuchen: Intervall und Wartezeit laufen unabhängig: der Watchdog löst immer aus, weil die Antworten des gepingten Gerätes nur alle 120 Sekunden kommen. Richtig ist, Intervall auf 120 und Timeout auf 140 zu setzen...)

Konkret geht es um die Anwesenheitserkennung eines Handys: Dass es weg ist, soll weniger schnell prozessiert werden, dass es da ist, möglichst bald. Liege ich also richtig mit
TIMEOUT_NORMAL = 30 und TIMEOUT_PRESENCE = 600,
wenn FHEM ein als vorhanden gemeldetes Handy nach maximal 10 Minuten als "abwesend" erkennen darf (indem es nur alle 10 Minuten angepingt wird), andererseits bei Abwesenheit aber ruhig jede halbe Minute danach suchen soll?

Der umgekehrte Fall: Eine Automatik soll den Strom für meine Dreambox automatisch abschalten, wenn sie heruntergefahren ist. Das zu erkennen soll nach einer Minute erfolgen, andererseits schaue ich nie kürzer als 10 Minuten, also ist dann
TIMEOUT_NORMAL = 600 und TIMEOUT_PRESENCE = 60 richtig?

"Änd're nie in fhem.cfg, denn das tut hier allen weh!" *** Wheezy@Raspi(3), HMWLAN+HMUART, CUL868(SlowRF) für FHT+KS+FS20, miniCUL433, Rademacher DuoFern *** "... kaum macht man es richtig, funktioniert es ..."

Markus Bloch

Ganz einfach:

TIMEOUT_NORMAL alias <check-interval> gibt das Intervall in Sekunden zwischen zwei Checks an, wenn das Gerät NICHT anwesend ist.

TIMEOUT_PRESENCE alias <present-check-interval> gibt das Intervall in Sekunden zwischen zwei Checks an, wenn das Gerät ANWESEND ist.

Also deine Beispiele genau umgekehrt.

Gruß
Markus
Developer für Module: YAMAHA_AVR, YAMAHA_BD, FB_CALLMONITOR, FB_CALLLIST, PRESENCE, Pushsafer, LGTV_IP12, version

aktives Mitglied des FHEM e.V. (Technik)

Pfriemler

#2
Zitat von: Markus Bloch am 10 März 2014, 19:50:16
TIMEOUT_NORMAL alias <check-interval> gibt das Intervall in Sekunden zwischen zwei Checks an, wenn das Gerät NICHT anwesend ist.
TIMEOUT_PRESENCE alias <present-check-interval> gibt das Intervall in Sekunden zwischen zwei Checks an, wenn das Gerät ANWESEND ist.
Ja, so hatte ich es verstanden.
Zitat
Also deine Beispiele genau umgekehrt.
Das verstehe ich jetzt wiederum nicht. Fall Handy: Ein vorhandenes Gerät soll nur gelegentlich gecheckt werden ob es noch da ist, ein nicht vorhandenes soll öfter gesucht werden (besser gesagt: es soll schneller gefunden werden, wenn es wieder da ist - eigentlich dient die Verlängerung der Anwesenheits-Pingintervalle nur zur Batterieschonung, und die bei Abwesenheit auszulösenden Ereignisse sind ohnehin stark verzögert, da kommts auf 10 Minuten nicht an...). Genau dafür hätte ich jetzt TIMEOUT_PRESENCE länger als TIMEOUT_NORMAL gesetzt ... (kopfkratz)

In meinem zweiten Beispiel soll es praktisch reichen, wenn die Automatik erst nach 10 Minuten wahrnimmt, dass die Box eingeschaltet ist. Der Fall ist akademisch, ich könnte genausogut öfter suchen lassen...
"Änd're nie in fhem.cfg, denn das tut hier allen weh!" *** Wheezy@Raspi(3), HMWLAN+HMUART, CUL868(SlowRF) für FHT+KS+FS20, miniCUL433, Rademacher DuoFern *** "... kaum macht man es richtig, funktioniert es ..."

Markus Bloch

Zitat von: Pfriemler am 10 März 2014, 21:54:28
Ja, so hatte ich es verstanden.Das verstehe ich jetzt wiederum nicht. Fall Handy: Ein vorhandenes Gerät soll nur gelegentlich gecheckt werden ob es noch da ist, ein nicht vorhandenes soll öfter gesucht werden (besser gesagt: es soll schneller gefunden werden, wenn es wieder da ist - eigentlich dient die Verlängerung der Anwesenheits-Pingintervalle nur zur Batterieschonung, und die bei Abwesenheit auszulösenden Ereignisse sind ohnehin stark verzögert, da kommts auf 10 Minuten nicht an...).
Genau dafür hätte ich jetzt TIMEOUT_PRESENCE länger als TIMEOUT_NORMAL gesetzt ... (kopfkratz)

So passt das auch. In diesem Beispiel währe:

TIMEOUT_PRESENCE=120   # Bei Anwesenheit
TIMEOUT_NORMAL=30         # Bei Abwesenheit

Gruß
Markus
Developer für Module: YAMAHA_AVR, YAMAHA_BD, FB_CALLMONITOR, FB_CALLLIST, PRESENCE, Pushsafer, LGTV_IP12, version

aktives Mitglied des FHEM e.V. (Technik)