Obwohl ich einen present-timeout von 120 Sekunden definiert habe:
define gtag PRESENCE lan-bluetooth 11:.... 192.168.123.157:5333 30 120
wird der Parameter einfach komplett ignoriert:
2016-06-02 20:39:49 PRESENCE gtag presence: present
2016-06-02 20:40:20 PRESENCE gtag presence: present
2016-06-02 20:40:49 PRESENCE gtag presence: present
2016-06-02 20:41:19 PRESENCE gtag presence: present
2016-06-02 20:41:49 PRESENCE gtag presence: absent
2016-06-02 20:42:19 PRESENCE gtag presence: present
2016-06-02 20:42:49 PRESENCE gtag presence: present
Vermutlich fängt die Ursache des Problems schon damit an,
dass an dieser Stelle im Code PRESENCE steht anstatt PRESENT (wie an allen anderen Stellen)
Index: 73_PRESENCE.pm
===================================================================
--- 73_PRESENCE.pm (revision 11578)
+++ 73_PRESENCE.pm (working copy)
@@ -170,7 +170,7 @@
}
my $timeout = $hash->{TIMEOUT_NORMAL};
- my $presence_timeout = $hash->{TIMEOUT_PRESENCE};
+ my $presence_timeout = $hash->{TIMEOUT_PRESENT};
if(defined($timeout) and not $timeout =~ /^\d+$/)
{
Aber selbst wenn ich das in PRESENT ändere, ändert sich das Verhalten nicht.
Hab gerade mal bei mir nachgeschaut - funktioniert alles wie es soll. Allerdings mit local-bluetooth und lan-ping.
2016.06.02 21:15:23 4: PRESENCE (handy) - rescheduling next check in 60 seconds
Hallo Udo,
deine Beobachtung ist durchaus korrekt, was das Verhalten angeht. Die Stelle im Code welche Dir aufgefallen ist, dient lediglich der Syntax-Prüfung im Rahmen der Define-Funktion. Dennoch handelt es sich hier um einen Fehler. Werd ich fixen.
Zum Verhalten mit lan-bluetooth gebe ich Dir Recht, da funktioniert das present-timeout nicht. Das liegt daran, dass ich das damals für diese Variante mit in den collectord geschoben habe, wo man für jeden Raum einzeln ein present-timeout setzen kann. Generell habe ich nichts gegen diese "Sonderlocke" zu schließen, da presenced und collectord damit jeweils umgehen können. presenced würde das neue timeout entsprechend umsetzen und collectord würde es eh ignorieren, da es eigene timeouts konfiguriert hat.
Ich nehme an du verwendest den lepresenced von Patrick für einen Low-Energy Scan.
Ich werde das ganze wahrscheinlich am Wochenende ändern können, dauert also nicht mehr lange ;)
Gruß und gute Nacht
Markus
Zitat von: Markus Bloch am 02 Juni 2016, 22:03:26
Ich nehme an du verwendest den lepresenced von Patrick für einen Low-Energy Scan.
Ich werde das ganze wahrscheinlich am Wochenende ändern können, dauert also nicht mehr lange ;)
Ja, lepresenced. Und nur keinen Streß, so schlimm ist das Ganze nicht, es ist mir heute beim "Spielen" nur aufgefallen. Mit collectord habe ich noch gar nicht gearbeitet. Bin ja schon froh, dass ich den Sinn von lepresenced verstanden habe 8)
Hallo Udo,
hab ich soeben eingecheckt. Habe es bei mir ausgiebig mit dem normalen presenced getestet. Sollte aber auch mit lepresenced funktionieren. Da ich aktuell keinen LE-Tag habe, konnte ich das nicht exakt verifizieren. Ich habe aber den Perl-Code von Patricks lepresenced durchgeschaut und denke, dass es klappen sollte.
Gruß und ein angenehmes Wochenende
Markus
Edit: Solltest du nur ein svn update und reload 73_PRESENCE machen, muss zusätzlich ein modify der Define-Parameter gemacht werden, da eine Änderung in der DefineFn enthalten ist ;-)
Hallo Markus,
danke für Deine Unterstützung. Das Verhalten hat sich tatsächlich verändert:
2016-06-04 21:51:34 PRESENCE gtag present
2016-06-04 21:51:34 PRESENCE gtag presence: present
2016-06-04 21:51:34 PRESENCE gtag device_name: Gigaset G-tag
2016-06-04 21:53:34 PRESENCE gtag present
2016-06-04 21:53:34 PRESENCE gtag presence: present
2016-06-04 21:53:34 PRESENCE gtag device_name: Gigaset G-tag
2016-06-04 21:55:34 PRESENCE gtag present
2016-06-04 21:55:34 PRESENCE gtag presence: present
2016-06-04 21:55:34 PRESENCE gtag device_name: Gigaset G-tag
2016-06-04 21:57:34 PRESENCE gtag present
2016-06-04 21:57:34 PRESENCE gtag presence: present
2016-06-04 21:57:34 PRESENCE gtag device_name: Gigaset G-tag
2016-06-04 21:59:34 PRESENCE gtag present
2016-06-04 21:59:34 PRESENCE gtag presence: present
2016-06-04 21:59:34 PRESENCE gtag device_name: Gigaset G-tag
2016-06-04 22:01:34 PRESENCE gtag absent
2016-06-04 22:01:34 PRESENCE gtag presence: absent
2016-06-04 22:01:35 PRESENCE gtag command_accepted: yes
2016-06-04 22:01:35 PRESENCE gtag absent
2016-06-04 22:01:35 PRESENCE gtag presence: absent
2016-06-04 22:02:05 PRESENCE gtag absent
2016-06-04 22:02:05 PRESENCE gtag presence: absent
2016-06-04 22:02:35 PRESENCE gtag absent
2016-06-04 22:02:35 PRESENCE gtag presence: absent
2016-06-04 22:03:05 PRESENCE gtag present
2016-06-04 22:03:05 PRESENCE gtag presence: present
2016-06-04 22:03:05 PRESENCE gtag device_name: Gigaset G-tag
2016-06-04 22:03:05 PRESENCE gtag command_accepted: yes
2016-06-04 22:03:05 PRESENCE gtag present
2016-06-04 22:03:05 PRESENCE gtag presence: present
2016-06-04 22:03:05 PRESENCE gtag device_name: Gigaset G-tag
2016-06-04 22:05:57 PRESENCE gtag present
2016-06-04 22:05:57 PRESENCE gtag presence: present
2016-06-04 22:05:57 PRESENCE gtag device_name: Gigaset G-tag
2016-06-04 22:07:05 PRESENCE gtag present
2016-06-04 22:07:05 PRESENCE gtag presence: present
2016-06-04 22:07:05 PRESENCE gtag device_name: Gigaset G-tag
2016-06-04 22:09:05 PRESENCE gtag absent
2016-06-04 22:09:05 PRESENCE gtag presence: absent
2016-06-04 22:09:06 PRESENCE gtag command_accepted: yes
2016-06-04 22:09:06 PRESENCE gtag absent
2016-06-04 22:09:06 PRESENCE gtag presence: absent
2016-06-04 22:09:35 PRESENCE gtag present
2016-06-04 22:09:35 PRESENCE gtag presence: present
2016-06-04 22:09:35 PRESENCE gtag device_name: Gigaset G-tag
2016-06-04 22:09:36 PRESENCE gtag command_accepted: yes
2016-06-04 22:09:37 PRESENCE gtag present
2016-06-04 22:09:37 PRESENCE gtag presence: present
2016-06-04 22:09:37 PRESENCE gtag device_name: Gigaset G-tag
2016-06-04 22:11:36 PRESENCE gtag present
2016-06-04 22:11:36 PRESENCE gtag presence: present
2016-06-04 22:11:36 PRESENCE gtag device_name: Gigaset G-tag
2016-06-04 22:13:36 PRESENCE gtag present
2016-06-04 22:13:36 PRESENCE gtag presence: present
2016-06-04 22:13:36 PRESENCE gtag device_name: Gigaset G-tag
Lediglich beim Statuswechsel scheint was durcheinander zu kommen, aber im großen und ganzen passt das schon.
Die zweite "absent" Phase ist übrigens eigenartig, ich hatte keine der beteiligten Komponenten bewegt.
Aber solche absent-Effekte scheinen bei den g-tags manchmal vorzukommen.
War übrigens gar nicht so einfach, innerhalb meiner Wohnung das absent zu provozieren, meine Wohnung ist scheinbar zu klein... 8)
Hallo Udo,
Solche abent Effekte kommen in der Tat öfters vor. Daher empfehle ich das Attribut absenceThreshold zu verwenden.
Grüße
Hallo Udo,
super, dass es funktioniert :)
Zitat von: betateilchen am 04 Juni 2016, 22:17:12
Lediglich beim Statuswechsel scheint was durcheinander zu kommen, aber im großen und ganzen passt das schon.
Was genau meinst du? Sah soweit alles in Ordnung für mich aus.
Diese sporadischen absent-Effekte können durchaus vorkommen. Wie von CoolTux vorgeschlagen, kann man hier das Attribut absenceThreshold verwenden um eine tatsächliche Abwesenheit erst nach X "absent"-Ergebnissen zu setzen. Als Zwischenstatus kommt dann "maybe absent". Sobald die gewünschte Anzahl erreicht ist, wird der Status dann final auf "absent" gesetzt.
Alternativ kann man auch die alte Variante mit einem Watchdog verwenden.
Gruß
Markus
Hallo Markus,
Zitat von: Markus Bloch am 05 Juni 2016, 15:52:13
Was genau meinst du? Sah soweit alles in Ordnung für mich aus.
Es ist irgendwie auch alles in Ordnung, ich versuche mal zu beschreiben, was ich meine.
Immer wenn es von present auf absent (oder umgekehrt) wechselt, kommen zwei Events (mit gleichem Status) sehr kurz hintereinander. Wie gesagt, absolut nicht dramatisch, es fiel mir nur auf.
2016-06-04 21:59:34 PRESENCE gtag presence: present
2016-06-04 21:59:34 PRESENCE gtag device_name: Gigaset G-tag
2016-06-04 22:01:34 PRESENCE gtag absent
2016-06-04 22:01:34 PRESENCE gtag presence: absent
2016-06-04 22:01:35 PRESENCE gtag command_accepted: yes
2016-06-04 22:01:35 PRESENCE gtag absent
2016-06-04 22:01:35 PRESENCE gtag presence: absent
2016-06-04 22:02:35 PRESENCE gtag presence: absent
2016-06-04 22:03:05 PRESENCE gtag present
2016-06-04 22:03:05 PRESENCE gtag presence: present
2016-06-04 22:03:05 PRESENCE gtag device_name: Gigaset G-tag
2016-06-04 22:03:05 PRESENCE gtag command_accepted: yes
2016-06-04 22:03:05 PRESENCE gtag present
2016-06-04 22:03:05 PRESENCE gtag presence: present
2016-06-04 22:03:05 PRESENCE gtag device_name: Gigaset G-tag
Das ist ein normales Verhalten. Sobald der Status wechselt (absent->present / present->absent) wird das neue Interval (normal oder present) an lepresenced übermittelt. Aufgrund der Änderung des Intervals wird der Status sofort nochmals übermittelt, da es quasi ein "Auftragsänderung" für lepresenced ist.
Gruß
Markus
Dann ist ja alles gut :)
Danke nochmal für die schnelle Anpassung.