NEWS
MQTT Bluetooth BLE Anwesenheitserkennung mit ESP32
-
@grace13 said in MQTT Bluetooth BLE Anwesenheitserkennung mit ESP32:
Meine Bluetooth Mac Adresse vom Handy habe ich in "Known BLE mac addresses" eingetragen.
Mobilfunkdelefone neuerer Generationen, bzw. deren software randomisiert meist die mac Adressen der WLAN und Bluetooth interfaces (wenn diese passiv/nicht verbunden sind) um ein tracking für "Mitbewerber" zu erschweren.
Eventuell macht dir diese Funktion gerade das leben schwer?
-
@opensourcenomad hm okay, danke für die Info, dann werde ich es mal mit meiner galaxy watch versuchen.
-
@grace13 said in MQTT Bluetooth BLE Anwesenheitserkennung mit ESP32:
danke für die Info
Hätte ja Ansporn sein können kurz 20 Sekunden Internetrecherche zu betreiben und z.B. folgendes, für Androiden gültiges, Wissen zu erlangen:
For devices running Android 10 or higher, the framework uses randomized MAC address by default. Users can enable or disable MAC randomization for individual networks through an option in the Network details screen in Settings, as shown in Figure 1. If a user disables MAC randomization for a network, the framework uses the factory MAC address (globally unique address).
.
Quelle: https://source.android.com/devices/tech/connect/wifi-mac-randomization-behavior
..und wer genau liest sieht es geht nur um wifi
-
Hallo @giuseppes,
die Installation mit ESPresence funktioniert wirklich gut. Wie verarbeitest du die Werte aktuell weiter?
Nach langem hin und her denke ich, dass mir eine einfache Erkennung reichen würde, ob ein Gerät anwesend ist oder nicht.
LG
-
@spezialtrick
Ich habe das Thema Triangulation erstmal pausiert, weil mir die Werte zu stark streuen.
Ich habe ein esp32 im Schlafzimmer, eins in der Küche und eins neben der Couch im Wohnzimmer. Damit arbeite ich nun. Ohne viel drum herum, d.h. keine Skripte oder ähnliches, was noch viel verarbeitet. Wenn Distanz kleiner 2,5 Meter von einem esp32, dann bin ich genau da. -
@giuseppes wie verarbeitest du die Werte von ESPresense im IoBroker? Bzwe welchen Datenpunkt verwendest du? Bin etwas ratlos was bzw welchen Wert ich nutzen soll.
-
@giuseppes
Vllt. eine blöde Frage, aber ich bin noch nicht so lange mit dem IOBroker befasst... Wie bekommst du die Werte aus dem JSON heraus bzw. wie könnte man sie in einem Skript weiterverarbeiten. -
@giuseppes sagte in MQTT Bluetooth BLE Anwesenheitserkennung mit ESP32:
Wenn Distanz kleiner 2,5 Meter von einem esp32, dann bin ich genau da.
So wollte ich das eigentlich auch lösen. Problem: Ein ESP ist in einem Raum im OG und einer in einem Kellerraum. Wenn ich mich relativ schnell OG in den Keller begebe, dann wird zwar der Wert vom ESP im Keller aktualisiert (Distanz kleiner xx) aber der Wert im OG wird nicht aktualisiert (zu weit entfernt) und dann ist da auch die (alte) Distanz <xx. Irgendeine Idee, wie man da einen Lösungsansatz findet? Ich bin am überlegen ob ich die Zeitstempel mit auswerte, aber vielleicht gibts da ja noch ne andere Lösung...
-
@spezialtrick
Ich verwende den Wert "distance" aus dem JSON -
@amg_666
Mir fällt auch nur ein, den Zeitstempel mit auszuwerten -
Hier gibt's noch eine Firmware von mir zum Scannen von BLE Geräten:
https://github.com/technyon/blescanner
Ist ein Spin-off von meiner NUKI Firmware (https://forum.iobroker.net/topic/53754/nuki-hub), die auch scannen kann. Die Geräte werden über MQTT als CSV gemeldet. Javascript bzw. Typescript zum Parsen findet sich hier:
https://forum.iobroker.net/topic/53754/nuki-hub/30
Binaries sind auf Github vorhanden, diese müssen nur geflashed werden. Die Konfiguration von WiFi und MQTT erfolgt dann über Web-Interface.
-
Hi zusammen, ich bin neu hier im Forum und möchte mich dem Thema einmal anschließen. Den Thread zu lesen hat mich bereits wesentlich weiter gebracht. Ein paar Fragen tun sich mir allerdings auf.
Ist bekannt ob das ganze Verfahren mit ESPresense auch auf dem Shelly 1 Plus funktioniert ohne dessen Funktion als Schalter zu beeinträchtigen? Der Shelly 1 Plus verfügt ja über einen ESP32. Für mich wäre das Ganze in sofern interessant, da ich mein Haus eh mit den Shellys ausstatten möchte. Dadurch könnte ich es mir ersparen die ganzen ESP's an diversen Steckdosen im Haus zu verteilen.
Alternativ könnte ich mir eine Batterie- / Akkulösung für die ESP's vorstellen um die ESP's in Schränken und Schubladen unterzubringen. Hat hier jemand Erfahrung wie lange entsprechende Akkus/Batterien für die Anwesenheitserkennung mit dem ESP32 halten?
Viele Grüße
Utze86 -
@utze86 Das wird mit Batterien nicht funktionieren. Um sinnvoll Anwesenheitserkennung zu betreiben, kann der ESP nicht in den deep sleep gehen. Da sind Batterien ziemlich schnell leer.
-
@utze86
Die aktuellen Shellies können mit Tasmota scannen, habe ich zufällig auf Facebook in der iobroker Gruppe gelesen. Tasmota konnte zuletzt für die Shellies als alternative Firmware verwendet werden. Daher würde ich Mal behaupten, dass sich das Scannen und die Relais Funktionen nicht gegenseitig ausschließen.
Habe es selbst noch nicht getestet, da ich noch keine Plus Geräte von Shelly besitze -
@da-phreak @GiuseppeS danke für die Infos. Damit ist die Akku/Batterie Alternative wohl gestorben.
Ein Shelly 1 Plus hab ich noch zuhause. Ich werde den mal mit Tasmota flashen und gucken was passiert. Sollte der Shelly die Relais Funktion verlieren habe ich mir überlegt den Shelly mit ESPresens zu Flashen und hinter eine Steckdose zu setzten. Da benötige ich ja nur Dauerstrom und keine Schalterfunktion. Wenn es funktioniert wären die Shellys zwar etwas teurer als die ESP's, dafür hätte ich aber eine Unterputzlösung und bräuchte keine zusätzliche Stromversorgung.
Gibt es etwas was dagegen spricht?
Viele Grüße
Utze86 -
@utze86 und hast du das mal getestet? ich suche quasi auch sowas in der Art um meine espresence Devices möglichst versteckt im Haus zu verteilen.
-
Hey zusammen,
ich hatte noch 10x ESP32s aus einem anderem Projekt über gehabt und hatte diese heute mal in alte iPhone USB Adapter eingebaut und vorher mit ESPresence geflasht.
Das Script mit der Trieangulierung ist 1a für Einstöckige Wohnungen, ich hatte es gerade mal im Erdgeschoss ausprobiert.
Da wir drei Stockwerke haben wäre da nur die Frage, wie man es hier am besten aufsetzt.
Im Erdgeschoss hatte ich in der Küche / Wohnzimmer drei ESP32 verteilt.
Dahinter grenzt dann praktisch ein Schlafzimmer, nur eben ein Stockwerk darüber.
Über dem Wohnzimmer ist ein zweites Schlafzimmer und ein Büro.
Theoretisch würde ich sagen, dass wenn man mit dem Script alle drei Stockwerke abbildet (natürlich in jedem Stockwerk genügend ESP's verteilt), dass das Script nicht richtig tracken kann, da wir hier praktisch ja in's Dreidimensionale gehen müssen und die Höhe der ESP's mit angegeben werden müsste.
Ebenfalls wenn man je Stockwerk ein Script laufen lässt, kann es sein, dass man hier praktisch doppelt in unterschiedlichen Stockwerken anwesend ist, oder?
Habt Ihr sonst eine Idee, wie man das ggf. umsetzen kann?
Liebe Grüsse
-
@stolly82
https://synyx.de/blog/fingerprinting-indoor-positionsbestimmung-mit-bluetooth-low-energy-2-2/Mit Fingerprint Methode sollte es funktionieren. Müsstest dir selbst was programmieren. So wie das gedanklich überschlage, wäre zumindest die Erstellung einer Karte der Wohnung bzw Haus unnötig.
-
@giuseppes said in MQTT Bluetooth BLE Anwesenheitserkennung mit ESP32:
@stolly82
https://synyx.de/blog/fingerprinting-indoor-positionsbestimmung-mit-bluetooth-low-energy-2-2/Mit Fingerprint Methode sollte es funktionieren. Müsstest dir selbst was programmieren. So wie das gedanklich überschlage, wäre zumindest die Erstellung einer Karte der Wohnung bzw Haus unnötig.
Ja, mit der Karte hast du recht.
Ich muss mal überlegen, wie ich das realisieren kann, ich vermute das wird etwas kompliziert.
Mit der Triangolierung fand ich ganz witzig, dass man da eben nicht so viel definieren muss (wobei es natürlich auch ungenau ist).
Ggf. geht dann auch ein Ansatz mit dem Script von dir, dass ich Bedingungen mit einbaue "Wenn Distance von ESP1,2,3 < 3m, ignoriere ESP5,9,6" und lege die Karten nebeneinander,...
Mit der Fingerprint Methode muss ich sonst mal schauen, ob das über eine Server- Lösung klappen kann, ohne dass ich das hier mit allen Geräten machen muss (das habe ich bei dem Artikel noch nicht so ganz verstanden).
-
@stolly82
Das mit dem Fingerprint funktioniert so dass du jede für dich relevante Position "anlernen" musst. Dabei beachtest du alle Sensoren mit deren Werten. Dadurch werden lokale Ungenauigkeiten auch beachtet. Zum Beispiel ist ein Sensor hinter dem Schrank evtl nur 1m entfernt, könnte aber über espresense mit 3m angezeigt werden. Wenn du das ganze mit Skript generisch lösen möchtest ist es natürlich aufwendig. Aber wenn du die Werte pro Position manuell notietst und im Skript verwendest, würde es sich in Grenzen halten.