Anwesenheit-Erkennung - Raspi + ESP32 (BLE + Eddystone + BTHome (Shelly) Protokoll)

Einklappen
X
 
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge
  • hismastersvoice
    Supermoderator
    • 25.08.2015
    • 7597

    #1

    Anwesenheit-Erkennung - Raspi + ESP32 (BLE + Eddystone + BTHome (Shelly) Protokoll)

    Präsenz-Erkennung mit BLE Tags

    Da ich nichts gefunden habe was zu meinen Wünschen passt, und stabil ohne Wartung läuft, habe ich mich mal dran gemacht ein eigenes System zu bauen.

    Was musste das System für mich erfüllen...
    1. Master-Client System
      Ich wollte das ein Raspberry die Daten sammelt und verarbeitet die von den ESP32 Scannern geliefert werden.
      Sammeln und per UDP an den MiniServer übertragen. (MQTT wäre auch möglich)
    2. Größere Anzahl von Clients
      Ich wollte ein größeren Fläche mit den Scannern abdecken, und so immer eine saubere Erkennung haben
    3. Batterie auslesen
      Keines der System konnte die Batterie sauber auslesen, insbesondere keine Eddystone Devices.
      Auch der Raspi kann das nicht wirklich gut, deswegen die ESP32 Clients, die machen das schnell und sauber.
    4. WebUI mit Dashboard
      Ein WebUI für Settings und ein Dashboard für eine Übersicht.
    5. Statistik im WebUI
      Daten über Anwesenheit und Batterie sammeln und darstellen.
    6. Eddystone Protokoll
      Das normale BLE Protokoll kann zwar perfekt Advertising senden, aber muss zum auslesen der Batterie connected werden.
      Das kostet Batterie und ist aufwendig und nicht immer perfekt bei schwachen Signalen.
      Deswegen Eddystone, der sendet die Daten direkt mit und muss nicht connected werden.
      Batterielebensdauern anstatt 6 Monate 2-6 Jahre je nach Device

    Funktionen
    • Discover
      Der Master und alle ESP-Scanner suchen Devices in der Umgebung, sammeln diese und Stellen Daten bereit
    • Device Sync
      Geräte die genutzt werden sollen werden am Master ausgewählt und an alle Scanner automatisch übertragen
    • Alle Scanner sendet an Master, dieser sammelt die Daten, und führt diese zusammen.
      So wird ein Device auch nur einmal an den MiniServer übertragen
    • Batteriescan automatisch / manuell
      Es kann täglich um Uhrzeit X ein Batterie-Scan gestartet werden, oder auch manuell
    • Im Hintergrund läuft ein eigener MQTT Broker der die Daten je Scanner und die gesammelten Daten verarbeitet.

    Was noch fehlt...
    • Button der Eddystone BLE Devices auslesen
    • Befehlserkunnung für den Miniserver automatisch erstellen.

    Hier mal ein paar Screenshots.


    Master
    Klicke auf die Grafik für eine vergrößerte Ansicht  Name: grafik.png Ansichten: 110 Größe: 92,2 KB ID: 477867Klicke auf die Grafik für eine vergrößerte Ansicht  Name: grafik.png Ansichten: 72 Größe: 99,6 KB ID: 477868
    Klicke auf die Grafik für eine vergrößerte Ansicht  Name: grafik.png Ansichten: 72 Größe: 98,8 KB ID: 477871Klicke auf die Grafik für eine vergrößerte Ansicht  Name: grafik.png Ansichten: 70 Größe: 143,0 KB ID: 477869

    ESP-Scanner
    Klicke auf die Grafik für eine vergrößerte Ansicht  Name: grafik.png Ansichten: 70 Größe: 94,3 KB ID: 477870

    Ist sowas interessant für euch, oder zu speziell für meine Anwendungen zugeschnitten?
    Welche Funktionen fehlen noch?
    Zuletzt geändert von hismastersvoice; 02.02.2026, 18:56.
    Kein Support per PN!
  • AlexAn
    Lebende Foren Legende
    • 25.08.2015
    • 4555

    #2
    Sehr cool!
    Habe gleich an BTHome gedacht.
    Müsste mal schauen was jetzt bereits erkannt wird. Gibt es bereits was auf Github?
    Grüße Alex

    Kommentar


    • hismastersvoice
      hismastersvoice kommentierte
      Kommentar bearbeiten
      Nein auf Git habe ich noch nichts.
      Ich würde das auch erst aufbereiten mit Install-Routine wenn wirklich Interesse besteht.

      Habe mal kurz über BTHome drüber gelesen und es hört sich sehr ähnlich an wie Eddystone.
      Man solch ein Protokoll natürlich zusätzlich mit einbauen wenn es Sinn macht.

    • AlexAn
      AlexAn kommentierte
      Kommentar bearbeiten
      Der Grund sind die Shelly Buttons die bei mir im Auto liegen. Ich öffne damit das Garagentor und werte den "Beacon" (periodischer Rssi Wert) aus um den Standort zu lokalisieren. Je nach Rssi Wert kann ich sagen ob das Auto in der Garage oder im Carport steht.

      Das ganze im Haus zu verwenden wär auch eine Möglichkeit: https://meintechblog.de/2024/05/31/a...unter-100euro/
  • AlexAn
    Lebende Foren Legende
    • 25.08.2015
    • 4555

    #3
    Hier die Auswertung wie ich es jetzt mache. Das stärkste Gateway bestimmt den Standort ( bei dir sehe ich auch 3 Gateways):
    Klicke auf die Grafik für eine vergrößerte Ansicht  Name: image.png Ansichten: 0 Größe: 45,1 KB ID: 477895
    Zuletzt geändert von AlexAn; 21.01.2026, 15:09.
    Grüße Alex

    Kommentar


    • hismastersvoice
      hismastersvoice kommentierte
      Kommentar bearbeiten
      In meinem Fall würde nur das stärkste Signal und der dazugehörige Scanner vom Master an den MiniServer übergeben.

      {"hostname": "ost", "address": "DC:0D:....", "is_online": 1, "last_battery_percent": 100, "name": "Dieter", "alias": "Dieter", "rssi": -70, "timestamp": 1769023634}

      So kann man auch auch die Auswertung machen (wenn ost und DC:0D..... dann Standort...)

      Leider unterstützt das BTHome als tragbare Devices gerade mal den Shelly, was dann doch überschaubar ist.
      Die Batterielebensdauer des Shelly und die nicht vorhandene IP-Klasse spricht jetzt nicht für ihn.
      Wenn man natürlich nur die Autos damit überwacht, dann ist das OK.
      Bei meinem Projekt tragen die Personen den Tag am Schlüssel / Geldbeutel etc, da ist ein gewisser Wasser/Staubschutz schon gut.

      Die Integration des BTHomeist aber in den ESP32 möglich.
      Ich habe einen Shelly Button da, mal testen...

    • AlexAn
      AlexAn kommentierte
      Kommentar bearbeiten
      Auch wen das nicht klappt werde ich deine Lösung verfolgen und wenn es soweit ist einrichten 😊

      Ip54
      Buy Shelly BLU Button Tough 1 Black at an irresistible price ⭐ Make your home smarter with a Shelly BLU Button Tough 1 Black from a proven brand - Shelly
      Zuletzt geändert von AlexAn; 21.01.2026, 21:25.
  • Noschvie
    MS Profi
    • 24.09.2018
    • 655

    #4
    Eine Frage zum ESP Scanner: dafür hast du welchen ESP32 in Verwendung, DevKits? Und welche Firmware läuft darauf?
    Für die Application am Raspberry wäre ein Docker Container geeignet…

    Kommentar


    • hismastersvoice
      hismastersvoice kommentierte
      Kommentar bearbeiten
      Ich nutze ESP32-S3 oder C3 von Xiao, durch die externe Antenne ist der Empfang um Welten besser.
      Als Firmware nutze ich wie auf dem Screenshot zu sehen ist eine komplett eigenprogrammierte.

      Ich möchte dass Master komplett unabhängig funktioniert, und es weder einen Docker Container noch ein Loxberry Plugin geben.
  • Noschvie
    MS Profi
    • 24.09.2018
    • 655

    #5
    Wenn der Source Code verfügbar ist und es die License erlaubt, kann dann auch ein Docker Image erstellt werden.
    Womit hast du den Master / das Backend und das Frontend realisiert, Python und /oder Node JS ?
    Hast du dir auch das Tasmota BLE Scan Feature angesehen?
    Die Screenshots sehen recht gut aus...
    Zuletzt geändert von Noschvie; 22.01.2026, 13:58. Grund: Add Tasmota

    Kommentar


    • hismastersvoice
      hismastersvoice kommentierte
      Kommentar bearbeiten
      Python ist als Backend, PHP als Frontend / ESP32 C und HTML

      Vielleicht nochmal zum Verständnis...
      Ich frage was noch an Funktionen fehlt, wie zB BTHome von AlexAn erwähnt. (An dem arbeite ich auch schon.)
      Ich frage aber nicht ob meine gewählte Basis/Hardware die richtige ist. Das System funktioniert schon sehr gut.

      Deine Fragen verstehe ich deswegen nicht.

    • Noschvie
      Noschvie kommentierte
      Kommentar bearbeiten
      Rein technisches Interesse. Es gibt vermutlich gute Gründe bzw. Erfahrungen, die zu der gewählten Konstelation geführt haben.
  • hismastersvoice
    Supermoderator
    • 25.08.2015
    • 7597

    #6
    AlexAn
    Brauch mal deine Hilfe zum Shelly Button....

    Der Button wird erkannt sobald ich den Button drücke und bleibt 10-15 Sek. erreichbar. Danach ist er wieder weg.
    Sendet er keine wiederkehrende Advertisements?
    Kein Support per PN!

    Kommentar


    • hismastersvoice
      hismastersvoice kommentierte
      Kommentar bearbeiten
      Glaube ich habe es gefunden... Beacon Modus... Da muss ich erst mal die App installieren
  • hismastersvoice
    Supermoderator
    • 25.08.2015
    • 7597

    #7
    AlexAn
    Im Beacon Mode passt das jetzt alles...
    Klicke auf die Grafik für eine vergrößerte Ansicht  Name: grafik.png Ansichten: 0 Größe: 6,0 KB ID: 477956
    Das Kürzel beim Batteriewert sagt welches Protokoll genutzt wird (BTH / TLM / SRV)

    Auch im Discover habe ich es so eingebaut....
    Klicke auf die Grafik für eine vergrößerte Ansicht  Name: grafik.png Ansichten: 0 Größe: 7,1 KB ID: 477957


    Was mir auffällt ist das der Batteriewert um bis zu 10% hin und her schwankt... Ist das normal? Dann muss ich eine kleine Logik einbauen


    Jetzt mache ich mich an die Erkennung des Button beim BTHome und Eddystone
    BTH geht schon ganz gut, muss noch etwas optimieren
    Klicke auf die Grafik für eine vergrößerte Ansicht

Name: grafik.png
Ansichten: 227
Größe: 5,6 KB
ID: 477958
    Zuletzt geändert von hismastersvoice; 22.01.2026, 19:28.
    Kein Support per PN!

    Kommentar


    • AlexAn
      AlexAn kommentierte
      Kommentar bearbeiten
      Sorry wär länger nicht online.
      Ja der Batteriewert ist ein Schätzeisen😩

      Wird ziemich cool 😎
  • Prof.Mobilux
    Supermoderator
    • 25.08.2015
    • 5295

    #8
    Schickes Projekt! Wie nutzt ihr das so? Mit den Handys? Oder irgendwelche Beacon am Schlüsselbund? Oder unter der Haut ?

    Und auch Lokalisierung innerhalb des Gebäudes (dann müsste man sicherstellen, dass man Beacon/Handy immer "am Mann" hat) oder nur Anwesenheitserkennung a la "ist zu Hause"?

    Ich mach auch immer mehr mit den ESP32, einfach aus Wartungsgründen. Irgendwann hast Du auf dieses ganze Gebastel keinen Bock mehr. Schmeiße immer mehr dieser Lösungen bei mir raus und ersetze sie durch Anbindung via ESP oder kompletten Wechsel auf Loxone. Die ESPs sind aber mittlerweile wirklich Eierlegende Wollmilchsäue.
    Zuletzt geändert von Prof.Mobilux; 23.01.2026, 07:16.
    🇺🇦 Hilfe für die Menschen der Ukraine: https://www.loxforum.com/forum/proje...Cr-die-ukraine


    LoxBerry - Beyond the Limits

    Kommentar

    • <Andreas>
      LoxBus Spammer
      • 07.03.2023
      • 406

      #9
      Schick, gefällt mir

      Hab mir mal ne Zeit lang ESPresence angesehen, aber irgendwie alles zu fummelig, triangulation wär schon cool weiß aber nicht ob das Praxistauglich ist

      Kommentar

      • hismastersvoice
        Supermoderator
        • 25.08.2015
        • 7597

        #10
        Prof.Mobilux

        Handy...
        Ohne die Einstellungen zu verändern habe SmartPhones eine MAC Rotation, und sind ohne das Abschalten dieser Funktion nicht geeignet.

        Beacons
        Feasycom Beacons (Eddystone Protocol) sind perfekt. Batterie hält je nach Typ bis zu 6 Jahre.
        Shelly Button im Beacon Mode (BTHome) funktionieren auch seit gestern perfekt.
        Gigaset G-Tag funktionieren auch, werden aber nicht mehr hergestellt.

        Es gibt zb Schlüsselanhänger/ feste Beacons / Armband etc.

        Aktuell nutze ich "ist zu Hause" für Personen, Hunde und Fahrzeuge.

        Ich teste auch positioning im Haus.
        Eine Ebene geht mit 3 oder 4 Scanner sehr gut. Ist aber über Stockwerk hinweg schwer.

        Das soll ggf. später noch hinzugefügt werden.

        <Andreas>
        Aus meiner Erfahrung ist das mit sehr viel Aufwand möglich ein positioning zu erstellen.
        Das ersetzt aber kein BWM oder andere Sensoren. Also stellt sich in der Tat die Frage der Praxistauglichkeit.
        Kein Support per PN!

        Kommentar


        • Prof.Mobilux
          Prof.Mobilux kommentierte
          Kommentar bearbeiten
          Danke. Hund.... Das bringt mich auf eine ganz coole Idee: "Hund ist draussen" wäre dür mich ganz interessant - z. B. um den Rasenmäherroboter zu stoppen. Unser ist so relaxed, dass er einfach liegen bleibt wenn ihn das Ding anfährt :-) Deswegen fahre ich ihn immer direkt zurück, wenn eine unserer Türen offen steht.

          Muss mir auch mal ein paar Tags bestellen - das ist ja wirklich ganz cool.
      • hismastersvoice
        Supermoderator
        • 25.08.2015
        • 7597

        #11
        AlexAn

        Habe BTHome implemetiert
        Ein oder mehrere Scanner erkennen den Button Press, und der Aggregator sendet "nur" den schnellsten per UDP an den MinIserver.
        MQTT könnte bei einem MiniServer Gen 2 auch genutzt werden.

        Befehlserkennung MAC + Button (press/doulbe_press/tripple_press/long_press)


        Klicke auf die Grafik für eine vergrößerte Ansicht

Name: grafik.png
Ansichten: 236
Größe: 26,3 KB
ID: 478088

        Funktioniert 100% zuverlässig.
        Musste die Scanner aber auf dauerhaften Scan umbauen (zuvor Interval)
        Machte den Code erst mal instabil, aber läuft jetzt sauber ohne Abstürze.

        Ist das so wie du es dir gedacht hast?

        Die Feasycom Beacons mit Eddystone musste ich beim verwenden des Buttons erstmal aufgeben.
        Das geht nur mit eine speziellen Firmware, die der Support aber nicht raus rückt.

        Kein Support per PN!

        Kommentar

        • AlexAn
          Lebende Foren Legende
          • 25.08.2015
          • 4555

          #12
          Das ist schon mehr als ich mir vorgestellt habe

          Damit sollte sich auch die Fernbedienung umsetzen lassen.
          Ich nehme die Fernbedienung mit in die andere Zone und steuere dort die Raffstore oder was auch immer. Dazu bräuchte man den jeweiligen Scanner in der Ausgabe. Ob man dann den Scanner in der Befehlsausgabe für die Zonen nutzt könnte jeder für sich entscheiden.
          Zuletzt geändert von AlexAn; 24.01.2026, 16:39.
          Grüße Alex

          Kommentar

          • hismastersvoice
            Supermoderator
            • 25.08.2015
            • 7597

            #13
            Aktuell nehme ich den schnellsten, dann müsste ich den mir den höchsten RSSI nehmen?
            Kein Support per PN!

            Kommentar


            • AlexAn
              AlexAn kommentierte
              Kommentar bearbeiten
              denke für die Zone wird es nicht anders gehen

            • hismastersvoice
              hismastersvoice kommentierte
              Kommentar bearbeiten
              Schau ich mir mal an
          • AlexAn
            Lebende Foren Legende
            • 25.08.2015
            • 4555

            #14
            Bereite mich schon mal vor zum Flashen
            Klicke auf die Grafik für eine vergrößerte Ansicht  Name: image.png Ansichten: 0 Größe: 190,7 KB ID: 478103

            Da ich die 24V fast überall habe passt der alte Mini ganz gut.
            Als Scanner wird der vermutlich schon reichen. Für den Aggregator werde ich eher was stärkeres brauchen.

            Halterungen zum Flashen:
            Shelly Plus 1 Mini UART Flash Holder by aktendully - Thingiverse
            Shelly 1 Mini Gen3 UART/Flash Jig by dronchi - Thingiverse

            Belegung:
            Shelly Plus 1 Mini | ESPHome Devices
            Shelly Plus 1 Mini Flash via UART - ESPHome - Home Assistant Community

            ​​

            ​​
            Zuletzt geändert von AlexAn; 24.01.2026, 16:56.
            Grüße Alex

            Kommentar

            • hismastersvoice
              Supermoderator
              • 25.08.2015
              • 7597

              #15
              AlexAn
              Das er immer das stärkste Signal nimmt kostet mich etwas Reaktionszeit. Er wartet jetzt immer 0,5 Sek. ob noch ein stärkeres RSSI gesendet wird, und erst dann gibt er das Signal an den MiniServer weiter.
              kürze Zeit 0,3 Sek. ist auch möglich, aber dann kommen immer wieder mal auch schlechtere Siganle durch, je nach dem wie schnell der Scanner gerade an den Aggregator zurück meldet.

              Soweit teste ich das jetzt mal ein paar Tage.
              Ich habe noch ein Memory Leak das mir den ESP alle paar Tage zum Absturz bringt (bzw richtig ist restart durch Watchdog).
              Habe es glaube ich gefunden, muss jetzt aber mal 1-2 Tage laufen lassen wie der RAM sich abbaut oder nicht.

              Wenn das alles dann passt können wir weiter machen.

              Was für ESP genau sitzt in deinem zu flashenden Shelly?
              Kein Support per PN!

              Kommentar


              • AlexAn
                AlexAn kommentierte
                Kommentar bearbeiten
                je nach Generation unterschiedlich aber kann ich heute Abend raussuchen
                bei den neuen ist das auch eine Shelly Version
            Lädt...