NEWS
MQTT Bluetooth BLE Anwesenheitserkennung mit ESP32
-
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. -
@bicmac nein, leider noch nicht getestet. Das wird wohl ein Projekt für die kommenden Wintermonate. Da ich das ganze ebenfalls über mehrere Stockwerke realisieren müsste bin ich aber gespannt was hier bei der aktuellen Diskussion raus kommt.
Könnte man nicht eine Abfrage erstellen, dass wenn ich mich einem bestimmten esp nähere, dass dadurch quasi festgelegt wird auf welcher Etage ich mich befinde? Sobald die Etage dann erkannt wurde, könnte man ja nurnoch esps für die Auswertung hinzu ziehen die sich nur auf der betretenen Etage befinden und die restlichen esp werden für die Auswertung ausgeblendet.
-
@bicmac Das Projekt mit den Shellys liegt leider bis auf weiteres auf Eis. Ich habe es leider nicht geschafft die Shelly's erfolgreich zu flashen. Nach dem aufspielen von Espresense erzeugen die Shellys keine WLAN AP und verfallen in einen Bootloop. Auch das Aufspielen von Esp Home und Tasmota Bluetooth führte leider nur zum gleichen Ergebnis. Hat hier jemand einen Tipp?
Alternativ besteht die Möglichkeit die Esp32 Mini mit einem 220V-5V Netzteil zu versehen und vor eine Steckdose zu schlalten. Es gibt da passende Netzteile von Azdelivery. Das Gerät wäre insgesamt etwa genau so groß wie ein Shelly. Allerdings müsste das Netzteil mit dem Esp32, am besten ohne Platine, verlötet werden und befindet sich dann nicht in einem abgeschlossen Gehäuse. Für mich als Hobbyelektiker wäre das keine Alternative da ich mir das Haus nicht abfackeln will. Wenn hier jemand der mehr Ahnung hat, eine Anleitung oder Lösung dafür hätte wäre das für mich eine Option. Ich möchte mir aber keine Eigenkonstruktion in die Wände basteln. Für Hilfe wäre ich an der Stelle dankbar.
-
@utze86
Hast du die korrekte esp32 Version von tasmota aufgespielt? Die Shelly haben SingleCore, nicht DualCore, was üblicherweise bei esp32 der Fall ist.Habe selbst erfolgreich ein Shelly Plus 2pm geflashed und verwende es für das Licht. Rollläden mit Tasmota muss ich mich bzgl Kalibrierung einlesen, scheint komplex zu sein.
Habe von hier das binary zum flashen:
(ganz unten solo1 bluetooth)
https://github.com/Jason2866/Tasmota-specials/tree/firmware/firmware/tasmota32/otherBLE muss dann über Einstellungen eingeschaltet werden. Außerdem muss das Scannen per Rule eingerichtet werden, damit es nach reboot weiter funktioniert. Nutze folgende Regeln:
- Rule1 ON System#Boot DO iBeacon 1 endon
- Rule2 ON System#Boot DO BLEAlias E861515FF02E=Giuseppe endon
- Rule3 ON System#Boot DO Backlog iBeaconPeriod 10; iBeaconOnlyAliased 1; BLEMaxAge 20 endon
- Rule1 1
- Rule2 1
- Rule3 1
Mit diesen Regeln wird alle 10 Sekunden ein Scanvorgang gestartet und nur mit Alias versehene MAC Adressen per mqtt übermittelt.
Für den Shelly Plus 2pm gilt folgende Tasmota config:
{"NAME":"Shelly Plus 2PM","GPIO":[320,0,192,0,0,0,1,1,225,224,0,0,0,0,193,0,0,0,0,0,0,608,3840,32,0,0,0,0,0,640,0,0,3456,4736,0,0],"FLAG":0,"BASE":1}
Edit:
Bekomme über den Sonoff Adapter alle ca. 12/13 Sekunden den rssi Wert vom Shelly. Funktioniert also ganz gut. Gefiltert wird leider nicht wie bei espresense.