ble2mqtt - Bluetooth Anwesenheitserkennung

Begonnen von drhirn, 07 April 2022, 13:45:09

Vorheriges Thema - Nächstes Thema

PatrickR

#120
Hi!

Zitat von: hkspks am 20 März 2023, 14:51:22Gefährliches Halbwissen: kommt wohl über die Zeit, wenn es immer mehr Match-rules werden. 512 sollten grundsätzlich ausreichen. Evtl. kann man da am Skript noch was optimieren?
Das ist natürlich möglich. Dann bräuchte ich aber eine Info, was genau das Anlegen dieser Match-Rules auslöst. Das Log sieht so aus, also würde es (z. B.) um die Signalstärke gehen. Die frage ich aber nie aktiv ab, d. h. bluetoothctl entscheidet selbst, dass es daran interessiert ist. Dadurch dürfte auch der mac-Filter von ble2mqttd nicht greifen. Ohne genauere Infos würden mir nur informatische Verzweiflungstaten einfallen (z. B. bluetoothctl nach n Stunden beenden bzw. den Scan-Prozess neu starten.)

/Edit:
Bekommst Du die Meldungen mit einem Neustart von ble2mqttd weg oder nur einem Reboot? Sind in Deinem Umfeld "viele" BLE-Geräte unterwegs (Innenstadt etc.)?

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

hkspks

Zitat von: PatrickR am 20 März 2023, 16:12:51/Edit:
Bekommst Du die Meldungen mit einem Neustart von ble2mqttd weg oder nur einem Reboot? Sind in Deinem Umfeld "viele" BLE-Geräte unterwegs (Innenstadt etc.)?
Patrick

Ja, hier dürften schon ein paar BLE-Geräte unterwegs sein. Was ich aber wiederum nicht verstehe: ich habe einen pizerow an der Straße stehen (ohne diese Probleme) und einen pi3b eher im Hinterhaus. Nur der pi3 hat diese Probleme. Ggf. ist es also eher Problem mit meiner Systemkonfiguration.

Ob ein restart des Services hilft, kann ich beim nächsten mal probieren. Diesmal war es ein Systemreboot - da hatte es geholfen.

Weiterer funfact: z.T. braucht der Service bei mir knapp 10 Versuche um zu starten (auch nur auf dem pi3b, nicht auf dem zero w). Hintergrund ist:
Mar 20 11:32:09 raspberrypi ble2mqttd: main::error_exit: ERROR expecting bluetoothctl prompt while waiting to send 'menu scan'.
Vielleicht ist einfach etwas mit dem pi3b schief ...

Die Lösung über MQTT ist ansonsten super stabil bei mir (im Vgl zu lepresence!) und reduziert Systemlast deutlich. Generell scheint MQTT ein recht effizienter "Servicebus" - die Substitution von deconz mit zigbee2mqtt hat auch nochmal 5-10% gebracht.

hkspks

#122
Update: Restart des Services reicht nicht - Serverrestart notwendig!

Wernieman

Dann würde ich auf ein HW-Problem tippen .....
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

drhirn

#124
Edit:
Vergesst es. War wohl mein Fehler. Hatte noch versehentlich lepresenced am Laufen.

----
Hallo!

Verwendet noch jemand ble2mqttd? Ich probier's nämlich gerade wieder aus und hab das Problem, dass es nicht mehr zu scannen scheint, sobald der G-Tag mal "absent" war. Heartbeat ändert sich noch, aber ansonsten bleiben alle anderen Werte unverändert.
Macht keinen Unterschied, ob ich ble2mqttd mit dem Parameter --daemonize oder über ein systemd-Script starte.

Läuft mit folgenden Optionen:
/usr/local/bin/ble2mqttd --mqttserver mqtt.example.com:8883 --mqttfingerprint 'sha256$5638d3455441866ed88f5...e9d876a' --mqtttopic ble2mqtt/wohnzimmer --mac '(11:22:33:44:55:66|77:88:99:00:AA:BB)' --absentinterval 30 --mqttuser user --mqttpass password --daemonize
Danke!
Stefan

Loetkolben

Hallo,

da bei mir lepresenced immer mal wieder Probleme macht, habe ich das Script mal getestet.
Das Reading 'state' hat entweder den Status connected oder disconected, das Reading 'present' hat 0 und 1.
Soweit so gut :-)
Damit ich relativ einfach von lepresenced auf ble2mqtt wechseln kann, müssten die Readings anders gefüllt werden.
Kann man das irgendwo anpassen, das das Reading 'present' entweder present oder absent hat, also Text anstatt 1/0?
Ich werte das Reading 'present' von lepresenced mehrfach aus und alles umschreiben ist sehr aufwändig.

Gruß
Andreas
1x Pi3, 1x Pi4, CUL V3, miniCUL433+868, IKEA-Steckdosen, sonoff, shelly1, Conbee II, div. Zigbee-Leuchten, Alexa, Homematic, Tablet UI

MadMax-FHEM

Zitat von: Loetkolben am 14 August 2023, 18:29:36Kann man das irgendwo anpassen, das das Reading 'present' entweder present oder absent hat, also Text anstatt 1/0?

Vielleicht damit: https://wiki.fhem.de/wiki/ReadingsChange

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

drhirn

Frage: Wäre es nicht sinnvoll, das present-Reading als retained zu schicken?

Ich hatte im Urlaub öfter mal das Problem, dass meine Residents plötzlich zuhause waren. Weiß aber noch nicht, warum genau das passiert ist.

PatrickR

Hi!

Zitat von: drhirn am 04 September 2023, 11:39:49Frage: Wäre es nicht sinnvoll, das present-Reading als retained zu schicken?
Der Grundgedanke bei ble2mqttd ist, dass er ein offenes Ohr für *alle* anwesenden Bluetooth-Geräte hat, d. h. ohne Filter betrieben wird. Wenn man dann retain setzt, liegen die Nachrichten bis zum Sankt-Nimmerleinstag auf dem MQTT-Server rum. Daher hatte ich das Flag nur bei dem globalen State-Topic gesetzt.

Wenn es Dir hilft, kann ich einen neuen Parameter einbauen, der present und lastseen retained.

Zitat von: drhirn am 04 September 2023, 11:39:49Ich hatte im Urlaub öfter mal das Problem, dass meine Residents plötzlich zuhause waren. Weiß aber noch nicht, warum genau das passiert ist.
Uff, da hilft wohl nur ein Debug-Log von ble2mqttd.

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

drhirn

Das globale State-Topic hat (aus meiner Sicht), das Problem, dass es auch "connected" und "disconnected" sein kann. Das kann ich bei Roommates nicht brauchen. Wir könnten das retain ja auch optional machen, nicht?

PatrickR

Hi!

Zitat von: drhirn am 04 September 2023, 12:47:57Das globale State-Topic hat (aus meiner Sicht), das Problem, dass es auch "connected" und "disconnected" sein kann. Das kann ich bei Roommates nicht brauchen.
Genau genommen kann es *nur* connected und disconnected sein und sagt absolut nichts über Anwesenheiten aus. Dafür ist es ja auch nicht :)

Zitat von: drhirn am 04 September 2023, 12:47:57Wir könnten das retain ja auch optional machen, nicht?

Das hatte ich ja vorgeschlagen:
Zitat von: PatrickR am 04 September 2023, 11:58:44Wenn es Dir hilft, kann ich einen neuen Parameter einbauen, der present und lastseen retained.

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

drhirn

Ist beides natürlich vollkommen richtig...   :-[

Ja, das fände ich super und würde dich darum bitten! Danke!

PatrickR

#132
Hi!

Neue Version 0.13:
-Neuer Kommandozeilenparameter: --retain - Topics present und lastseen werden retained.

Patrick

/Edit: Anhang entfernt, neue Version unten.
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

drhirn

Das war flott! Danke!
Ich werde dann testen, sobald ich aus meiner alltäglichen 8h Geiselhaft entlassen werde.

drhirn

Hmm. Ich starte ble2mqtt jetzt so:

ble2mqttd --retain --batterymaxage 0 --mqttserver 192.0.2.1:1883 --mqtttopic ble2mqtt/wohnzimmer --mac (xx:xx:xx:xx:xx:xx) --absentinterval 30 --mqttuser <user> --mqttpass <pass>
state ist retained, brav.
Bei lastseen und present hat sich aber leider nichts geändert. Ich weiß jetzt aber nicht, ob das einfach am MQTT Explorer liegt und der das nicht so anzeigt, wie ich gerne hätte. Muss weiter testen.

Was mir aber aufgefallen ist: Geht der MQTT Broker kurz offline, wechselt der state auf disconnected. Und das ändert sich erst mit einem Neustart des ble2mqtt-Services wieder. Könnte man das irgendwie optimieren?