erweiterung von PRESENCE/(le)presenced/collectord um rssi werte

Begonnen von justme1968, 10 Juni 2016, 17:36:24

Vorheriges Thema - Nächstes Thema

PatrickR

#15
Mahlzeit!

Ich habe mal etwas an lepresenced herumgebaut, die rssi-Messung eingebaut und mit Thresholds für die rssi-Änderung gespielt:

Jul  2 22:58:01 rpi-test lepresenced[22213]: [tid:0] main: Mac address xx:xx:xx:xx:xx:xx needs update due to changed rssi. Old/new rssi: -54/-78, difference: 24, affected clients: 1.
Jul  2 22:58:09 rpi-test lepresenced[22213]: [tid:0] main: Mac address xx:xx:xx:xx:xx:xx needs update due to changed rssi. Old/new rssi: -78/-54, difference: 24, affected clients: 1.
Jul  2 22:58:12 rpi-test lepresenced[22213]: [tid:0] main: Mac address xx:xx:xx:xx:xx:xx needs update due to changed rssi. Old/new rssi: -54/-76, difference: 22, affected clients: 1.
Jul  2 22:58:29 rpi-test lepresenced[22213]: [tid:0] main: Mac address xx:xx:xx:xx:xx:xx needs update due to changed rssi. Old/new rssi: -76/-54, difference: 22, affected clients: 1.
Jul  2 22:58:32 rpi-test lepresenced[22213]: [tid:0] main: Mac address xx:xx:xx:xx:xx:xx needs update due to changed rssi. Old/new rssi: -54/-75, difference: 21, affected clients: 1.
Jul  2 22:58:39 rpi-test lepresenced[22213]: [tid:0] main: Mac address xx:xx:xx:xx:xx:xx needs update due to changed rssi. Old/new rssi: -75/-54, difference: 21, affected clients: 1.
Jul  2 22:58:40 rpi-test lepresenced[22213]: [tid:0] main: Mac address xx:xx:xx:xx:xx:xx needs update due to changed rssi. Old/new rssi: -54/-78, difference: 24, affected clients: 1.
Jul  2 22:58:41 rpi-test lepresenced[22213]: [tid:0] main: Mac address xx:xx:xx:xx:xx:xx needs update due to changed rssi. Old/new rssi: -78/-54, difference: 24, affected clients: 1.
Jul  2 22:58:42 rpi-test lepresenced[22213]: [tid:0] main: Mac address xx:xx:xx:xx:xx:xx needs update due to changed rssi. Old/new rssi: -54/-77, difference: 23, affected clients: 1.
Jul  2 22:58:55 rpi-test lepresenced[22213]: [tid:0] main: Mac address xx:xx:xx:xx:xx:xx needs update due to changed rssi. Old/new rssi: -77/-55, difference: 22, affected clients: 1.
Jul  2 22:58:58 rpi-test lepresenced[22213]: [tid:0] main: Mac address xx:xx:xx:xx:xx:xx needs update due to changed rssi. Old/new rssi: -55/-76, difference: 21, affected clients: 1.
Jul  2 22:59:03 rpi-test lepresenced[22213]: [tid:0] main: Mac address xx:xx:xx:xx:xx:xx needs update due to changed rssi. Old/new rssi: -76/-55, difference: 21, affected clients: 1.
Jul  2 22:59:06 rpi-test lepresenced[22213]: [tid:0] main: Mac address xx:xx:xx:xx:xx:xx needs update due to changed rssi. Old/new rssi: -55/-78, difference: 23, affected clients: 1.
Jul  2 22:59:07 rpi-test lepresenced[22213]: [tid:0] main: Mac address xx:xx:xx:xx:xx:xx needs update due to changed rssi. Old/new rssi: -78/-54, difference: 24, affected clients: 1.
Jul  2 22:59:08 rpi-test lepresenced[22213]: [tid:0] main: Mac address xx:xx:xx:xx:xx:xx needs update due to changed rssi. Old/new rssi: -54/-75, difference: 21, affected clients: 1.
Jul  2 22:59:13 rpi-test lepresenced[22213]: [tid:0] main: Mac address xx:xx:xx:xx:xx:xx needs update due to changed rssi. Old/new rssi: -75/-54, difference: 21, affected clients: 1.
Jul  2 22:59:17 rpi-test lepresenced[22213]: [tid:0] main: Mac address xx:xx:xx:xx:xx:xx needs update due to changed rssi. Old/new rssi: -54/-78, difference: 24, affected clients: 1.

Aktuelle Mindestabweichung für ein Update ist 20 dB. Das Log entstand mit dem G-Tag am Schlüsselbrett ohne jegliche Bewegung.

Stelle ich die Threshold auf 25dB kann ich 6m in den nächsten Raum gehen, ohne dass es ein einziges Update gibt. Ich fürchte, wenn es da noch etwas zu retten gibt muss ich die Werte über einen noch festzulegenden Zeitraum mitteln. In Anbetracht der Häufigkeit der Beacons ist das aber ein nicht zu vernachlässigender Bookkeepingaufwand...

Patrick

/Edit: Wenn ich über die letzten 10 Werte mittle und die Threshold auf 10 dB setze, wird es deutlich ruhiger.
lepresenced - Tracking von Bluetooth-LE-Tags (Gigaset G-Tag) mittels PRESENCE

"Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning." - Rich Cook

PatrickR

Mahlzeit!
Zitat von: Markus Bloch am 11 Juni 2016, 14:26:27

  • PRESENCE erweitern, so dass Readings durch collectord/presenced erkannt und direkt rausgegeben werden. Ich würde hierbei das folgende Format bevorzugen:

    absent;reading1=foo;reading2=bar
    present;reading1=foo;reading2=bar;rssi=-79;name=iPhone
    present;room=Wohnzimmer;name=iPhone


    Dieses Format ähnelt dem originalen und würde den Aufwand zur Verarbeitung in PRESENCE recht gering halten.

    Nachteil der Sache ist jedoch, dass ich in PRESENCE keine Kontrolle über die erzeugten Readings habe und in der Commandref irgendwie klar machen muss, dass diese Readings nicht direkt durch PRESENCE sondern presenced/collectord/lepresenced/... erzeugt werden.
Habe das Format mal testweise in einer Entwicklungsversion eingebaut. Was mich etwas ärgert ist, dass sich das Ganze nur mit einem Big Bang (d. h. Update für PRESENCE, presenced, collectord und lepresenced) umstellen lässt, d. h. der gleichzeitige Support von altem und erweitertem (wie oben) Format mindestens zu Anzeigefehlern führt:

Readings
device_name name=Gigaset G-tag 2016-10-03 14:56:15
room rssi=-66 2016-10-03 15:00:15

Setup war PRESENCE <-> lepresenced (ohne collectord).
Was collectord mit dem neuen Format anstellt, müsste man sich nochmal ansehen.

Patrick
lepresenced - Tracking von Bluetooth-LE-Tags (Gigaset G-Tag) mittels PRESENCE

"Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning." - Rich Cook

Markus Bloch

Hallo Patrick,

ja, dass stimmt. Das "neue" Format lässt sich nur realisieren durch eine initiale Änderung in PRESENCE um das ganze rückwärtskompatibel zu gestalten.

Ich will nicht behaupten, dass dieses Format am geeignetsten ist. Vielleicht hat hier jemand noch einen besseren Vorschlag. Das "alte" Format kam damals mir so als erstes in Sinn. Für meinen Zweck hat es gereicht.

Ich werd mal schauen, dass ich das in den nächsten Tagen angehe.

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)

Markus Bloch

Hallo Patrick,

ich habe in PRESENCE heute das neue Format rückwärtskompatibel integriert.

Man kann also nun folgendermaßen zusätzliche Readings an PRESENCE übergeben:

absent;reading1=foo;reading2=bar
present;reading1=foo;reading2=bar;rssi=-79;name=iPhone
present;room=Wohnzimmer;name=iPhone


Das ganze funktioniert momentan nur in Zusammenarbeit mit PRESENCE direkt (also ohne collectord).

Als nächstes müsste ich den collectord dafür fit machen, damit er sowohl eingehende Information mit diesem Format verarbeiten kann und seine Ergebnisse ebenfalls in diesem Format an FHEM weitergibt.

Viele Grüße

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)

PatrickR

Hallo Markus!

Sieht wirklich gut aus (Siehe Anhang). Mit dem offiziellen Release warte ich allerdings noch, um das etwas zu beobachten. Wäre auch nicht wirklich vernünftig, bevor der collectord so weit ist.

Übrigens sehr nett, dass Du die "AddonData" offen für zukünftige Erweiterungen gelassen hast.

Patrick
lepresenced - Tracking von Bluetooth-LE-Tags (Gigaset G-Tag) mittels PRESENCE

"Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning." - Rich Cook

PatrickR

Mahlzeit!

Ein Update: Wegen der Konsistenz sende ich mit lepresenced jetzt device_name statt name. Habe außerdem noch das Reading daemon hinzugefügt. Das sollte bei Forenfragen die Fehlersuche erleichtern.

Patrick
lepresenced - Tracking von Bluetooth-LE-Tags (Gigaset G-Tag) mittels PRESENCE

"Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning." - Rich Cook

slor

Hallo zusammen,
bin grade dabei meine BT Anwesenheitserkennung auszubauen. Wann wird das regulär via Update verfügbar sein und auch mit collectord funktionieren?
Dann würde ich das Projekt bei mir etwas zurückstellen.
Fhem auf Raspberry Pi 4
CCU3 mit RaspberryMatic mit HMCCU an FHEM
HMCCU, Telegram, Conbee2 und Hue/Tradfri/Osram Lampen AQARA Sensoren, HomeConnect

Markus Bloch

Das steht noch auf meiner TODO Liste. Einen Termin kann ich dir leider nicht nennen.

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)

Markus Bloch

Im Anhang mal der erste Wurf. Sofern alle Räume als Addon-Data "rssi=<Zahl>" bereitstellen und mehrere Räume "present" melden, wird anhand des RSSI-Werts der tatsächliche Raum ausgewählt.

Ich kann es leider nicht ausreichend testen, da ich keine BT-Tags habe.

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)

CoolTux

Hallo Markus,

Der Jörg ist gerade dabei ein BT Framwork zu schaffen. Darin enthalten soll meines Wissens dann auch BT Presenceerkennung sein. Ob jetzt nur BT LE oder auch normales BT weiß ich leider nicht. Aber auf alle Fälle BT LE (G-Tags z.B.) und damit verbunden auch rssi.



Grüße
Leon
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Markus Bloch

Hallo Leon,

hast du da gerade mal ein Link zur Hand? Muss ich mal im Auge behalten.

Vielen Dank

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)

CoolTux

Nein leider nicht. Jörg und ich arbeiten da zusammen dran. Naja Jörg macht die Hauptarbeit mit dem Framework und ich passe dann meine BT Module (Pflanzensensor und Playbulb) an.
Es geht im Grunde darum eine einheitliche Möglichkeit zu haben um BT Geräte abzufragen und Befehle an sie zu schicken.
Das leidige Thema hcitool lescan wird beendet wenn gatttool läuft hat dann ein Ende. Ausserdem werden auf Basis der BT Characteristics automatisch Devices angelegt sofern Module diese Unterstützen. Da arbeiten Jörg und ich dann zusammen. Aber erstmal muß das Framework stehen. Es geht auch darum gatttool nonBlocking und Interactiv auf zu rufen so das man auch BT Notifications verwenden kann.
Also verbundenen BT Geräte melden an FHEM Ihren aktuellen Status nach einer Änderung.
Ist alles ein ziemlich großes Projekt. Aber wir haben vor es im ersten Quartal 2017 ab zu schließen so das es ein einheitliches BT Framework für FHEM gibt.
Und Teil dieses Frameworks wird dann auch presence Abfrage von G-Tags beinhalten.

Wenn nicht frage doch einfach mal Jörg Hermann an. Dann kann er Dir schon mal mehr erzählen.


Grüße
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

slor

Danke Leute! Hat ja Zeit...
Funktioniert das Beta Modul auch mit Handys?
Würde gern auf weitere Gadgets verzichten.
Fhem auf Raspberry Pi 4
CCU3 mit RaspberryMatic mit HMCCU an FHEM
HMCCU, Telegram, Conbee2 und Hue/Tradfri/Osram Lampen AQARA Sensoren, HomeConnect

PatrickR

#28
Mahlzeit!

Damit Ihr Markus' collectord testen könnt, poste ich mal die aktuelle Version von lepresenced. Ist aber Alpha, d. h. der Supportvertrag gilt nicht :)

Bitte beachtet, dass es eine neue Abhängigkeit gibt:
bluez-hcidump

Ansonsten könnt Ihr Euch mal die neuen Kommandozeilenoptionen ansehen:
--legacymode
Sollte hier keinem helfen. In diesem Modus funktioniert lepresenced wie vorher, d. h. ohne hcidump aber es gibt auch keine rssi-Werte...
--rssithreshold <Zahl>
Hiermit könnt Ihr experimentieren. Das ist die rssi-Abweichung, ab der ein Update an FHEM gesendet wird. Vernünftige Werte für einen Default werden dankend angenommen, aktuell 10dB.

Patrick
lepresenced - Tracking von Bluetooth-LE-Tags (Gigaset G-Tag) mittels PRESENCE

"Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning." - Rich Cook

PatrickR

Mahlzeit!

Ich finde es ehrlich gesagt etwas schade, dass die Resonanz so gering ist. Das Problem ist, dass ohne Rückmeldungen zu Markus' collectord bzw. zum lepresenced kein Release erfolgen kann. Das wäre aber die Grundvoraussetzung dafür, dass der vorhandene Knoten gelöst und lepresenced weiterentwickelt werden kann. Letzteres halte ich gerade im Hinblick auf die Batterieabfrage für sinnvoll, um das In-den-Fuß-Schieß-Potenzial der Batterieskripte zu reduzieren.

Patrick
lepresenced - Tracking von Bluetooth-LE-Tags (Gigaset G-Tag) mittels PRESENCE

"Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning." - Rich Cook