Anwesenheit-Erkennung - Raspi + ESP32 (BLE + Eddystone + BTHome (Shelly) Protokoll)
Einklappen
X
-
Wärend ich auf das Memory-Leak Ergebnis warte, habe ich mal noch die Vorlage für Loxone Virtuelle UDP Eingänge gemacht
Kein Support per PN! -
hismastersvoice: Cooles Projekt und auch die Umsetzung sieht auf den Screenhots super aus! Vielleicht hast du während der Wartezeit auch noch Zeit deine Anwendung und die Positionierung der unterschiedlichen Empfänger etwas näher zu beschreiben. Grundsätzlich ist das Thema Präsenz Ja/Nein auf Basis eines Tags z.b. am Schlüssel klar. Aber vielleicht hast du hier ja noch ein paar zusätzliche Ideen die man Umsetzen kann.Kommentar
-
Shelly Plus 1 Mini ESP32-C3 - mit dem würde ich es als erstes versuchen
Shelly 1 Mini Gen3 ESP-Shelly-C38F vermutliche ein ESP32-C3
Shelly 1 Mini Gen4 ESP-Shelly-C68F vermutlich ein ESP32-C6
Shelly 1 Gen3 ESP-Shelly-C38F
Shelly 1 Gen4 ESP-Shelly-C68F
Eine Reaktionszeit von 1sec sehe ich für die Anwesenheit gar nicht kritisch.
Für den Taster schaut es natürlich wieder anders aus.
Anwendungszweck: Freischaltung Wallbox, Alarm scharf wenn der letzte Button weg ist, Betriebsmodi usw.Zuletzt geändert von AlexAn; 27.01.2026, 15:31.Grüße AlexKommentar
-
Ich kann dir jetzt schon sagen das C3/C6 aufgrund des Ram und 1 Core nicht gehen.
Wifi BT läuft durch das kontinuierliche scannen das ich für die Button-Erkennung des Shelly brauche auf einem eigenen Kern.
Nur so konnte ich schnell erkennen und abstürze und das Memory Leak vermeiden. Shelly verwendet hier ein auf ihr System zugeschnittenes System, ich bin mit BLE Tags / Eddystone / BTHome hier natürlich umfangreicher unterwegs.
Das ist ja alles ein Präsenz Thema, oder schaltest du diese Funktionen per Button?Anwendungszweck: Freischaltung Wallbox, Alarm scharf wenn der letzte Button weg ist, Betriebsmodi usw.Zuletzt geändert von hismastersvoice; 01.02.2026, 08:03.
-
-
Position kommt ganz drauf an was du vor hast.hismastersvoice: Cooles Projekt und auch die Umsetzung sieht auf den Screenhots super aus! Vielleicht hast du während der Wartezeit auch noch Zeit deine Anwendung und die Positionierung der unterschiedlichen Empfänger etwas näher zu beschreiben. Grundsätzlich ist das Thema Präsenz Ja/Nein auf Basis eines Tags z.b. am Schlüssel klar. Aber vielleicht hast du hier ja noch ein paar zusätzliche Ideen die man Umsetzen kann.
Es kommt erst mal auf die Fläche an die du abdecken willst.
Normales aus ca. 70-100m² würde vermutlich einer in der Mitte des Hauses reichen um 2 Stockwerke abzudecken.
Ich habe für das normale erkennen der Präsenz 2 Stück an Ost- und Westwand. So ist die Garage und der Garten auch dabei.
Was ich noch mache ist einen ins Gartenhaus oder Gewächshaus zu platzieren. Hier könnte meine Frau sich vorstellen mit dem Shelly per Button die Zisternen-Pumpe einzuschalten. Die geht zwar per Druckschalter an aus, wenn aber niemand Home ist schalten wir sie aus Sicherheitsgründen ganz ab.
Will man aber eine indoor positioning machen, dann braucht man deutlich mehr Scanner.
Je Stockwerk min. 4 Stück an jeder Ecke.
Der RSSI jedes BLE-Device wird trianguliert und das BLE Device in zuvor angelegte Zonen positioniert.
Indoor Positionierung ist genau das Problem an dem ich gerade arbeite.
Da der RSSI selbst wenn sich das Device nicht bewegt trotzdem variiert springen die Devices zum Teil von Raum zu Raum.
Das ist schon schwer genug wenn man nur ein Stockwerk hat, über 2,3 Stockwerke wird das sehr aufwendig.
Ist alles nut Mathe, aber durch den schwankenden RSSI so wirklich schwer.
Es reicht das du einen Raum betrittst in dem ein Device liegt, dann bist du eine Dämpfung und der RSSI ändert sich.
Die Meter der Entfernung zum Scanner wird über den RSSI berechnet, und schon bewegt sich dein Device auf der Karte, obwohl es da noch liegt.
Es ist jetzt nicht so das es gar nicht stimmt, aber der Raum kann sich eben wechseln,
und dann ist es ja wieder uninteressant für eine Steuerung wenn ich Büro melde aber im Wohnzimmer bin.
Ich bin mir noch nicht sicher ob ich das weiter verfolge.
Wie man auf den Bildern und MQTT Messages sieht, passt das schon "oft", aber für ein ordentliches System ist mir da noch viel zu viel springen dabei.
PS:
Memory Leak habe ich gefunden, die Scanner laufen seit >48h ohne Fehler
Allerdings musste ich ESP32-C3/C5 raus nehmen, die habe einfach zu wenig Ram
ESP32 Dev und ESP32-S3 laufen jetzt perfekt. Wegen 1€ was ein S3 mehr kostet werde ich jetzt auch nicht weiter schrauben.
Kein Support per PN!👍 2Kommentar
-
AlexAn
Habe das mit dem Button auswählbar gemacht.
So kann jeder wählen was er will, schnell ohne Rücksicht von welchem Scanner, oder bester Scanner-RSSI um die Position zu berücksichtigen.
Bei Sofort ist es wirklich so das es sehr schnell (nur wenige 0,x Sek.) braucht bis der MiniServer den Button-Press bekommt.
Denke mal das ich nächste Woche die erste Version (ohne indoor-positioning) freigeben kann.
Lass alles noch ein paar Tage laufen, sieht aber schon gut aus.Kein Support per PN!👍 4Kommentar
-
hismastersvoice welcher rpi wird den vorausgesetzt ? Hab noch nen zweier da liegen würde die Software darauf laufen oder ist der zu schwach?
Hast du mal getestet wie es mit den ESP‘s aussieht wenn man das Wlan abschaltet bei Abwesenheit oder Nachts.
Nutze aktuell Espresense nur da hatte ich immer wieder bei der W-Lan Verbindung Probleme so das ich auf Kabelgebunden umgestiegen bin.
Gruß MarcoKommentar
-
Dütt
Die Logik ist so...
Wenn SSID und Passort gespeichert sind...- SSID im Scan gefunden ✓
- 30s Stabilität abwarten ✓
- Verbindung mit Passwort testen ✓
- Nur wenn WL_CONNECTED → Neustart ✓
- Wenn Passwort falsch → Bleibt im AP Mode ✓
Kein Support per PN!Kommentar
-
Nein, zumindest meine aktuelle Software versucht es alle 30 Sek. die SIID zu finden.
Wenn gefunden dann...
Das heißt so lange dein WLAN Off ist, geht er in den AP Mode und läuft die 30 Sek. Schleife ab.
Also verbindet er sich automatisch neu wenn WLAN SIID wieder da ist.
Was ich noch vergessen habe zu beantworten... Pi Zero 1 oder zwei oder Pi 2 reicht locker. -
Habe es gerade nochmal getestet.
Nach ca. 30 Sek. merkt der ESP ob das WLAN weg ist.
Dann geht er in AP Mode.
Jetzt scannt er alle 30 Sek. nach der SSID die gespeichert ist.
Wir diese gefunden, checkt er mit SSID und PAss ob diese zu connecten ist, und wartet 15 Sek. ob es stabil da bleibt.
Wenn ja = reboot. (reboot ist sicherer als NTP/MQTT/BLE etc neu zu initialisieren)
Das alte System was ich genutzt habe, hatte hier genau die Schwachstelle. WLAN länger weg, dann ging er nicht mehr online, oder nur mit viel Glück.
-
Ich bin in den letzten Tagen bei der Indoor-Positioning sehr viel weiter gekommen.
Mit Filter und Logik kann man das springen verhindern und es wird ganz gut die Position der Devices angezeigt. Die Räume stimmen in 99% der Fälle bei mir.
Der Nachteil... Es sind min. 4 Scanner je Stockwerk nötig um es einigermaßen genau hin zu bekommen.
Auch die Positionierung der Scanner macht einen großen Unterschied.
Früher hatte ich sie auf Deckenhöhe. Jetzt eher auf Schalterhöhe in jedem Stockwerk. so wird das Stockwerk besser erkannt. (EG war manchmal OG etc)
Ich habe es so Designt das theoretisch unendlich viele Stockwerke möglich sind. Aktuell teste ich nur mit zwei (EG/OG)
MQTT Output
Code:{ "hostname": "test", "address": "AA:BB:CC:DD:EE:FF", "is_online": 1, "last_battery_percent": 100, "name": "Shelly 2", "alias": "Shelly 2", "rssi": -38, "distance": 0.144544, "room": "Esszimmer", "floor": "eg", "scanner": "test", "timestamp": 1770230331 }
Grafisch muss ich zwar noch ein paar Verbesserungen vornehmen, aber es ist schon 90% fertig.
Kein Support per PN!🥰 1Kommentar
-
Heute habe ich noch das Update ganz fertig gemacht...
Cooles Feature das mir heute gekommen ist weil ich mehrere Scanner updaten musste Remote-Update.
Die Scanner laden selber die Update-Bin runter und spielen sie ein.
Morgen mache ich mal den Installer fertig und eine kurze Anleitung, ich hoffe das ich dann alles habe für ein Release
Kein Support per PN!👍 6Kommentar
-
Will mich mal zurück melden...
Eigentlich war ich schon kurz vor dem ersten Release, da ist mir wegen AlexAn noch eine Idee gekommen.
Die neuen Shelly können ja Bluetooth, warum diese nicht auch als Scanner nutzen?
Der Shelly bekommt ein Skript, und verhält sich dann wie ein ESP32 Scanner. Der einzige Unterschied ist das er die Daten nicht direkt an MQTT sendet, sondern an die API, und diese Daten werden dann dort aufbereitet.
Was nicht geht ist Battery-Scan von reinen BLE Devices, ich habe keinen kpl. BLE-Stack im Shelly. BTHome und Eddystone gehen aber.
Auch hier bin ich schon fast fertig, nur die Button-Events machen noch ein klein wenig ärger (Verzögerung)
UUIDs können inzwischen auch verarbeitet werden (zB BeaconScop auf Android)
Aber es wird immer besser
Zuletzt geändert von hismastersvoice; 18.02.2026, 21:02.Kein Support per PN!👍 6Kommentar
-
Kurze Frage...
Ich habe eine Möglichkeit getestet um iPhone/Android per kurzem auslesen des IRK (Identity Resolving Key) einzubinden.
Dazu wird das Telefon kurz mit dem Raspi gepairt und der Key gelesen. Danach wird das pairing wieder gelöscht.
So ist/wäre ein Telefon per UUID und dem Key dauerhaft erkennbar (Theorie).
Hört sich erst mal gut an...
Aber sowohl iPhone (nach ca. 1Min) als auch Android (nach ca.7-10Min) schlafen ein und senden keine Advertisements mehr.
Man kann es am iPhone künstlich am Leben halten... zB iWatch kommuniziert dauerhaft mit iPhone.
Bei Android habe ich die App BeaconScope gefunden die das im Hintergrund macht, beim iPhone geht das nicht, da es in iOS zu viele Restriktionen gibt.
Wie wichtig wäre so ein Feature?
Android geht mit der App
iOS nur mit Watch (aktuell)
Ich würde mich da einlesen, aber das wird der größte Zeitfresser des kpl. Projekt hier.
Das mache ich nur wenn es wirklich wichtig wäre.
Reicht euch ein natives Gerät am Schlüssel, im Geldbeutel oder wo auch immer?
Kein Support per PN!Kommentar
-
wie macht das den espresense mit dem Iphone weil so mache ich das schon länger ohne Probleme?
Gruß MarcoKommentar
-
Bei mir geht nicht
iPhone SE 2025
iPhone 15 Max
iPhone 16 Max
Ich habe keine iWatch deswegen kann ich das nicht testen.
Interessant ist wirklich das es wohl mit manchen iPhone gehen soll.
Man kann im Netz Bereichte finden von Usern die sogar ein Phone habe das geht und das andere nicht am gleichen Scanner.
ESPresense Discussion #492:
DTTerastar (Maintainer): "My iPhone blasts out nearby info every 500ms no matter what." → Er hat fast sicher eine Apple Watch.
harphere: "Screen goes off → stops broadcasting" → Identisch zu dir.
bayees: "I have two iPhones and one works perfectly, the other stops while locked." → Gleicher Haushalt, verschiedenes Verhalten!
huytd2k: "After installing the room-assistant app, the issue is fixed for me."
51av0sh: "Apple Watch 6 tracks for 20 minutes with screen off. Stopped at exactly 20 min mark."
RacoJo (Feb 2023): "Tracking perfectly only when screen is on. Is there a solution?"
-
Wer von euch hat es schon geschafft mit dem iPhone eine saubere Anwesenheit-Erkennung zu machen.
Ich lese bei esppresence es geht mit manchen iPhones oder dann wenn man eine iWatch hat, bei vielen geht es nicht.
Alle Apps die mal im Hintergrund das iPhone wachgehalten haben sind aus dem App Store verbannt.
Ich finde keine saubere Lösung die wirklich klappt.Kein Support per PN!Kommentar
-
Also bei mir laufen eigentlich alle iphones wo ich bisher probiert habe Problemlos. Aktuell sind es zwei Iphone 16, 1 Iphone 16 Max und ein Iphone 13
und das läuft seid circa einem Jahr sehr stabil.
einzige Problem was ich manchmal hatte war das sich der Esp verabschiedet hatte, aber die überwache ich jetzt auch und wenn einer nicht mehr erreichbar ist wird die Poe Versorgung abgeschaltet und nach einer Zeit wieder eingeschaltet.
Kommentar
-
Dütt
Hinweis: Einige iOS-Geräte senden kein Signal aus, wenn der Bildschirm des Telefons ausgeschaltet ist und kein Grund für das Gerät besteht, ein Signal zu senden. Daher wird das Gerät möglicherweise nicht angezeigt, wenn der Bildschirm ausgeschaltet ist. Geräte wie eine iWatch, Universal Clipboard mit aktivierter Handoff-Funktion oder andere Dienste, die eine regelmäßige Kommunikation mit dem Telefon erfordern, können dieses Problem möglicherweise beheben, da sie eine Kommunikation des betreffenden iOS-Geräts im „Ruhezustand“ erfordern. Falls Sie kein Bluetooth-Gerät wie eine iWatch besitzen, berichten einige Nutzer, dass die Verwendung von Hintergrund-Apps wie iCloud Family Sharing, iCloud Photo Backup oder Room Assistant das Gerät dazu gebracht hat, im „Ruhemodus” zu kommunizieren. Dieses Problem tritt nicht universell auf, aber es ist derzeit nicht klar, warum es auftritt, und möglicherweise tritt dieses Problem auch dann nicht auf, wenn das Gerät scheinbar keinen Grund zur Kommunikation hat.
Nutzt du die Cloud?
iOS Version?
Zuletzt geändert von hismastersvoice; 20.02.2026, 16:37.Kein Support per PN!Kommentar
-
Ich denke ich habe es wann es geht...
Dütt
Vielleicht kannst du das bestätigen
Bei allen Usern die berichten das es ohne Probleme geht scheinen eines gemeinsam zu haben.
1. iPhone mit iWatch, die kommunziert dann recht viel mit der Uhr und die Ads belieben aktiv
oder
2. min zwei Apple Geräte in der Cloud angemeldet iPhone, iPad, Macboook etc, dann geht es auch ohne iWatch
Hat man nur ein iPhone ohne Cloud oder iWatch geht nach dem Display off das Gerät in einen Tiefschlaf und sendet keine Ads mehr.
Deswegen scheint es bei mir nicht zu laufen... Da muss ich wohl noch ein iPhone zum testen besorgen
Dütt
Erfüllst du das mit den zwei Apple Geräten in der Cloud?
Kommentar