Anwesenheitserkennung mit BLE (Bluetooth low energy) und ESP32

Begonnen von Adimarantis, 14 März 2022, 16:52:19

Vorheriges Thema - Nächstes Thema

Adimarantis

Hallo,

Ich habe jetzt einen ESP32 (eigentlich für meinen CO2 Sensor) in Betrieb genommen, und da noch Platz war noch einen Bluetooth Scanner implementiert.
Der fragt jetzt fleissig die BLE devices im Raum ab und stellt diese per Webserver in einer JSON API zur Verfügung.
Das wird einfach per HTTPMOD abgefragt und schon habe ich eine schöne Liste in FHEM.

Leider haben viele Geräte (besonders iPhones) die Angewohnheit ständig die MAC zu ändern (privacy und so), so dass meine Liste immer länger wird (und einen besseren Schlüssel als MAC hab ich bisher nicht gefunden).
Die meisten Devices übermitteln auch leider keinen Namen (zumindest nicht über die ESP32/Arduino BLE library) - bei mir sehe ich nur Fitbit Tracker und ein paar Bluetooth Kopfhörer. Bei allen Telefonen etc. wird kein Name erkannt.

Hat jemand Erfahrung mit BLE und Ideen wie man
a) Devices eindeutig identifizieren kann (Manufacturer Data? Service UUID? ...?)
b) Zumindest die "Spammer" ausfiltern kann (BLE_ADDR_TYPE_RANDOM funktioniert leider nicht - das setzt irgendwie jedes Device)?
c) Mehr Devices mit Namen bekommt (mein Android Telefon sieht da mehr als der ESP32)?

Danke,
Jörg
Raspberry 4 + HM-MOD-RPI-PCB (pivCCU) + RfxTrx433XL + 2xRaspberry 1
Module: 50_Signalbot, 52_I2C_ADS1x1x , 58_RPI_1Wire, (50_SPI_MAX31865)

Beta-User

Hmm, das mit den "gelegentlichen" bzw. random ID's ist auch "andernorts" ein Problem. Vielleicht magst du den Weg andersrum gehen und den CO2-Sensor als weiteren Sensor in OpenMQTTGateway einbinden? Da kann man zumindest white- und blacklists definieren...
Siehe https://docs.openmqttgateway.com/ und https://forum.fhem.de/index.php/topic,126366.0/topicseen.html
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

MadMax-FHEM

Vielleicht ist ja das was: https://docs.openmqttgateway.com/
Dort wird das "Problem" mit einer App auf dem Smartphone "gelöst":
https://github.com/1technophile/OpenMQTTGateway/issues/71
https://community.openmqttgateway.com/t/smartphone-bt-presence-detection/1147
usw.

Wird in fhem per mqtt eingebunden.

Aktuell nehme ich einen gTag für Anwesenheit ("norm." Presenced) zusammen mit meinem Telefon aber da eben das: https://forum.fhem.de/index.php/topic,118917.msg1133609.html#msg1133609

Da wollte ich auch gerne auf einen ESP gehen...
...aber ich kriege mit dem OpenMqttGateway nur den gTag erkannt :-\

Auf eine zusätzliche App auf dem Telefon habe ich eigentlich keine Lust, würde aber dein Prpblem lösen, danke ich, siehe:

Aktuell nutze ich den OpenMqttGateway "nur" für meine Waage: https://forum.fhem.de/index.php/topic,126366.msg1209794.html#msg1209794
(dort liest auch einer der Entwickler von OpenMqttGateway/ESP-FW mit: https://forum.fhem.de/index.php?action=profile;u=50929)

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)

Adimarantis

Danke.

Wenn ich mir das so durchlese scheint ein Whitelisting der übliche Weg zu sein. Ich hatte halt gehofft es gibt noch irgendwelche Tricks gewisse Devices anderweitig automatisch auszufiltern.
Meine Fitbit hat z.B. eine feste MAC (soweit ich sehen kann) und wäre somit erkennbar. Telefone kann man wohl komplett vergessen - aber da weiss ich zumindest per WLAN ob sie zuhause sind.
Mit MQTT hab ich mich bisher nicht beschäftigt. Aber statt mit HTTPMOD alles blind einzulesen, kann ich ja auch auf bestimmte Keys (MACs) lauschen. Das ginge mit meiner Lösung jetzt schon.
Derzeit mache ich extractAllJSON und das müllt FHEM langsam aber sicher zu.

Grundsätzlich klingt das OpenMqttGateway recht interessant. Hab ich mir auf jeden Fall mal gebookmarkt. Momentan hab ich aber keinen Use Case.

Wie gesagt war das mit dem BLE eher eine Spielerei, weils der ESP32 halt kann und ich mir mit einem MH-Z19E einen CO2 Sensor gebaut hab - eben derzeit über Webservice/JSON - und der noch Kapazität hat, aber MQTT hätte sicher auch was, mal sehen.
Das mit dem CO2 Sensor war übrigens ziemlich einfach. Kann ich auch mal posten. Derzeit hapert es noch an einem Gehäuse und einer Verkabelung ohne Breadboard.

Raspberry 4 + HM-MOD-RPI-PCB (pivCCU) + RfxTrx433XL + 2xRaspberry 1
Module: 50_Signalbot, 52_I2C_ADS1x1x , 58_RPI_1Wire, (50_SPI_MAX31865)