Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Hardware
    4. MQTT Bluetooth BLE Anwesenheitserkennung mit ESP32

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    MQTT Bluetooth BLE Anwesenheitserkennung mit ESP32

    This topic has been deleted. Only users with topic management privileges can see it.
    • M
      mischaka last edited by

      Anwesenheitserkennung für MQTT per BLE Bluetooth node iobroker Präsenz ESP32 ibeacon

      Arduino ESP32 Projekt
      Personen Präsenz im Zimmer durch: iBeacon, Mi Band fitness tracker, smartwatch aufspüren.
      MQTT Anwesenheitserkennung per Bluetooth BLE für Hausautomatisierung

      Die Idee
      In jedem Raum befindet sich bluetooth Präsenzmelder auf Basis von ESP32 – Modul. Jedes bluetooth Präsenzmelder ist über WLAN mit Hausnetz verbunden und sendet die bluetooth MAC Adressen per mqtt an den smart home. Ich trage ein Fitness Tracker Xiaomi Mi Band, der kann so eingestellt werden, dass auch in verbundenen Zustand, bluetooth advertising Daten sendet. Natürlich kann statt Fitness Tracker, ein beliebige iTag, iBeacon verwendet werden. Der muss natürlich immer dabei sein. So kriegt mein smart home in welchem Zimmer ich mich gerade befinde mit. So kann Hausautomatisierung Software z.b. Telefonanrufe in richtige Zimmer leiten. Meine Position anderen Personen im Haus mitteilen.

      MQTT Bluetooth Anwesenheitserkennung

      1 Reply Last reply Reply Quote 1
      • L
        Lordcyber last edited by

        Hallo,
        wie hast du die Module Aufgebaut?
        Also Mit Netzteil Batterie oder anders.
        Ich möchte so etwas aktuell auch bauen Es soll aber nur in der Nähe der Türe sin um zu erkenne welcher Schlüssel da ist. An jedem hängt ein ITAG.
        Danke

        1 Reply Last reply Reply Quote 0
        • Raidy007
          Raidy007 last edited by

          Finde ich auch eine super Idee!?!

          Wäre der Betrieb mit Batterie sinnvoll und könnte man sich auch den Ladezustand bzw. Spannung übermitteln lassen?

          Wenn die Batterie nen Jahr hält, wäre das doch schon super, oder?

          Dann könnte man auch einfach abfragen .... (zB) Wo liegt meine Uhr , Antwort wäre zB. Liegt im "Wohnzimmer"...

          1 Reply Last reply Reply Quote 0
          • L
            Lordcyber last edited by

            Hallo,
            genau das will ich gerade nachbauen.
            Allerdings bringt er mir mit dem Code aus dem Oben angegebenen Link immer einen Fehler.

            C:\Users\laval\OneDrive\Documents\Arduino\ESP32 BTE MQTT\ESP32-MQTT-BTE-DHT22\ESP32-MQTT-BTE-DHT22.ino: In function 'void loop()':
            
            ESP32-MQTT-BTE-DHT22:97:16: error: 'MQTT' has not been declared
            
               mqtt.publish(MQTT::Publish(MQTT_Name, NachrichtJSON).set_qos(QoS)); // JSON per MQTT senden
            
                            ^
            
            Mehrere Bibliotheken wurden für "WiFi.h" gefunden
             Benutzt: C:\Users\laval\OneDrive\Documents\ArduinoData\packages\esp32\hardware\esp32\1.0.2\libraries\WiFi
             Nicht benutzt: C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.21.0_x86__mdqgnx93n4wtt\libraries\WiFi
            exit status 1
            'MQTT' has not been declared
            
            
            

            Woran liegt das?
            Danke

            lobomau 1 Reply Last reply Reply Quote 0
            • lobomau
              lobomau @Lordcyber last edited by lobomau

              Edit: ich habe noch nicht den Hinweis beachtet. Ist bestimmt wichtig. Hast du es gemacht?
              "Verwendete MQTT Bibliothek ist MQTT client library for Arduino(vom Imroy)."

              @Lordcyber ich bin leider auch nicht so fit damit. Bei mir ähnlicher Fehler.

              Arduino: 1.8.9 (Windows Store 1.8.21.0) (Windows 10), Board: "AI Thinker ESP32-CAM"
              
              C:\Users\Marcellus\Documents\Arduino\ESP32_BT-scanner\ESP32_BT-scanner.ino: In function 'void setup()':
              
              ESP32_BT-scanner:65:8: error: 'class PubSubClient' has no member named 'set_server'
              
                 mqtt.set_server(MQTT_server, MQTT_port); // MQTT Port einstellen
              
                      ^
              
              ESP32_BT-scanner:66:20: error: 'MQTT' has not been declared
              
                 if (mqtt.connect(MQTT::Connect(MQTT_Name).set_auth(MQTT_User, MQTT_Pass)))
              
                                  ^
              
              ESP32_BT-scanner:69:18: error: 'MQTT' has not been declared
              
                   mqtt.publish(MQTT::Publish("hallo", MQTT_Name).set_qos(QoS)); // im Topic hallo Präsenzmelder Name schreiben
              
                                ^
              
              C:\Users\Marcellus\Documents\Arduino\ESP32_BT-scanner\ESP32_BT-scanner.ino: In function 'void loop()':
              
              ESP32_BT-scanner:96:16: error: 'MQTT' has not been declared
              
                 mqtt.publish(MQTT::Publish(MQTT_Name, NachrichtJSON).set_qos(QoS)); // JSON per MQTT senden
              
                              ^
              
              ESP32_BT-scanner:107:18: error: 'MQTT' has not been declared
              
                   mqtt.connect(MQTT::Connect(MQTT_Name).set_auth(MQTT_User, MQTT_Pass));
              
                                ^
              
              Mehrere Bibliotheken wurden für "WiFi.h" gefunden
               Benutzt: C:\Users\Marcellus\Documents\ArduinoData\packages\esp32\hardware\esp32\1.0.2\libraries\WiFi
               Nicht benutzt: C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.21.0_x86__mdqgnx93n4wtt\libraries\WiFi
              exit status 1
              'class PubSubClient' has no member named 'set_server'
              
              Ungültige Bibliothek C:\Users\Marcellus\Documents\Arduino\libraries\esp-epaper-29-ws-20171230-gemu-1.0 in keine Header-Dateien (.h) in C:\Users\Marcellus\Documents\Arduino\libraries\esp-epaper-29-ws-20171230-gemu-1.0 gefunden gefunden
              Ungültige Bibliothek C:\Users\Marcellus\Documents\Arduino\libraries\esp-epaper-29-ws-20171230-gemu-1.0 in keine Header-Dateien (.h) in C:\Users\Marcellus\Documents\Arduino\libraries\esp-epaper-29-ws-20171230-gemu-1.0 gefunden gefunden
              
              Dieser Bericht wäre detaillierter, wenn die Option
              "Ausführliche Ausgabe während der Kompilierung"
              in Datei -> Voreinstellungen aktiviert wäre.
              
              
              L 1 Reply Last reply Reply Quote 0
              • L
                Lordcyber @lobomau last edited by

                @lobomau
                ich habe jetzt einen Andere Library benutzt und alles neu geschrieben. Jetzt funktioniert es bei mir.
                Da sind eben alle Befehle anders..
                aber es funktioniert so.

                stolly82 1 Reply Last reply Reply Quote 0
                • stolly82
                  stolly82 @Lordcyber last edited by

                  @Lordcyber

                  kannst du mir dein Arduino Sketch mal geben?

                  Das originale läuft bei mir null, bereits beim Überprüfen des Sketches von @mischaka Sketch bekomme ich die Fehlermeldung Globale Variablen verwenden 57900 Bytes (17%) des dynamischen Speichers, 269780 Bytes für lokale Variablen verbleiben. Das Maximum sind 327680 Bytes. obwohl ich extra die 16MB ESP32 gekauft hatte, damit ich von @mischaka den WiFi Manager mit installieren kann,....

                  no ide why 😞

                  Vielen Dank

                  Jan

                  1 Reply Last reply Reply Quote 1
                  • S
                    senger1985 last edited by senger1985

                    Einen schönen guten Abend.

                    Ich hoffe, euch allen geht es gut.

                    seit ihr hier schon weitergekommen?

                    Ich sitze da schon einige Stunden dran und habe eine Lib, nach der anderen nachinstalliert und dürfte jetzt alle Libs haben.

                    Aber ich bekomme jetzt folgende Fehlermeldung:

                    In file included from C:\Users\ICH\Dokumente\Arduino\ESP32_anwesenheit\ESP32_anwesenheit.ino:14:0:
                     
                    C:\Users\ICH\Dokumente\Arduino\libraries\pubsubclient-master\src/PubSubClient_JSON.h:29:54: error: 'ArduinoJson::Internals' has not been declared
                     
                         Connect& set_will(String willTopic, ArduinoJson::Internals::JsonPrintable<J>& willMessage, uint8_t willQos, bool willRetain) {
                     
                                                                          ^
                     
                    C:\Users\ICH\Dokumente\Arduino\libraries\pubsubclient-master\src/PubSubClient_JSON.h:29:78: error: expected ',' or '...' before '<' token
                     
                         Connect& set_will(String willTopic, ArduinoJson::Internals::JsonPrintable<J>& willMessage, uint8_t willQos, bool willRetain) {
                     
                                                                                                  ^
                     
                    In file included from C:\Users\ICH\Dokumente\Arduino\ESP32_anwesenheit\ESP32_anwesenheit.ino:14:0:
                     
                    C:\Users\ICH\Dokumente\Arduino\libraries\pubsubclient-master\src/PubSubClient_JSON.h: In member function 'MQTT::Connect& MQTT::ConnectJSON::set_will(String, int)':
                     
                    C:\Users\ICH\Dokumente\Arduino\libraries\pubsubclient-master\src/PubSubClient_JSON.h:31:19: error: 'willQos' was not declared in this scope
                     
                           _will_qos = willQos;
                     
                                       ^
                     
                    C:\Users\ICH\Dokumente\Arduino\libraries\pubsubclient-master\src/PubSubClient_JSON.h:32:22: error: 'willRetain' was not declared in this scope
                     
                           _will_retain = willRetain;
                     
                                          ^
                     
                    C:\Users\ICH\Dokumente\Arduino\libraries\pubsubclient-master\src/PubSubClient_JSON.h:37:27: error: 'willMessage' was not declared in this scope
                     
                           _will_message_len = willMessage.measureLength() + 1;
                     
                                               ^
                     
                    C:\Users\ICH\Dokumente\Arduino\libraries\pubsubclient-master\src/PubSubClient_JSON.h: At global scope:
                     
                    C:\Users\ICH\Dokumente\Arduino\libraries\pubsubclient-master\src/PubSubClient_JSON.h:55:44: error: 'ArduinoJson::Internals' has not been declared
                     
                         PublishJSON(String topic, ArduinoJson::Internals::JsonPrintable<J>& object) :
                     
                                                                ^
                     
                    C:\Users\ICH\Dokumente\Arduino\libraries\pubsubclient-master\src/PubSubClient_JSON.h:55:68: error: expected ',' or '...' before '<' token
                     
                         PublishJSON(String topic, ArduinoJson::Internals::JsonPrintable<J>& object) :
                     
                                                                                        ^
                     
                    C:\Users\ICH\Dokumente\Arduino\libraries\pubsubclient-master\src/PubSubClient_JSON.h: In constructor 'MQTT::PublishJSON::PublishJSON(String, int)':
                     
                    C:\Users\ICH\Dokumente\Arduino\libraries\pubsubclient-master\src/PubSubClient_JSON.h:56:31: error: 'object' was not declared in this scope
                     
                           Publish(topic, nullptr, object.measureLength() + 1)
                    

                    Kann mir da vielleicht jemand weiterhelfen?

                    Danke und bleibt gesund.

                    1 Reply Last reply Reply Quote 0
                    • G
                      GiuseppeS last edited by GiuseppeS

                      Sind weitere Smartwatches bekannt, die dauerhaft BLE Advertisements senden? Außer Xiaomi Mi Band?
                      Überlege mir eine Smartwatch zu kaufen und würde diese Funktion aktuell als wichtig ansehen.

                      Habe in ioBroker schon mit triangulation der Position angefangen und würde das Thema gerne weiterverfolgen; aber nur mit Smartwatch statt aktuell Smartphone macht die Nutzung Sinn.

                      @mischaka
                      Wie lange hält dein Akku der Xiaomi Mi Band mit Dauer-BLE oder hast du inzwischen eine andere Uhr?

                      lobomau 1 Reply Last reply Reply Quote 0
                      • lobomau
                        lobomau @GiuseppeS last edited by

                        @GiuseppeS wir haben die Mi Band 2 & 3 zu Hause im Einsatz. Beide senden ständig ihr BLE Signal was zuverlässig vom Pi3 detektiert wird. Akkus halten 2-3 Wochen.

                        G 1 Reply Last reply Reply Quote 0
                        • G
                          GiuseppeS @lobomau last edited by

                          @lobomau
                          Vielen Dank für die Rückmeldung. Top, dass der Akku auch so lange hält. Evtl sind noch weitere Alternativen bekannt. Ansonsten werde ich die nächsten Tage mal die Mi Band 4 oder 5 bestellen. Anscheinend ist es in der Mi Band Serie ein übliches Feature.

                          V 1 Reply Last reply Reply Quote 0
                          • V
                            Vujagig @GiuseppeS last edited by

                            Ich habs auch mal Versucht, die Mi Band kommt, ich hab aktuell ne Huawai, die bleibt leider stummt solange das Handy an ist. Mein Philipps TV gibt allerdings Laut von sich, ist aber etwas unhandlich 😁
                            Meine Frage, ich hab hier nur ein alive Objekt, wie komme ich an die json Daten ran?
                            In der serielle Konsole sammelt er fleißig MAC Adressen.
                            Benutze den sonoff Adapter. Bin allerdings noch blutiger ioBroker Anfänger.

                            G 1 Reply Last reply Reply Quote 0
                            • G
                              GiuseppeS @Vujagig last edited by

                              @Vujagig
                              Du brauchst den mqtt Adapter. Grundsätzlich:

                              Esp32 über mqtt -> mqtt broker -> mqtt Client

                              Ich selbst nutze mosquitto als mqtt Broker unter Linux und in ioBroker nutze ich den mqtt client Adapter. Bisher damit super gefahren. Es gibt für ioBroker auch einen mqtt Adapter mit broker+Client. Ist dir selbst überlassen. Mit mosquitto bin ich aber oft schon froh gewesen, außerhalb von ioBroker die Signale abfragen zu können (besser für Fehlersuche).

                              Im Sketch von Arduino musst du den Server mit IP und Port angeben. Sonoff kommuniziert zwar über mqtt aber die Messages bzw deren Aufbau sind wahrscheinlich sehr relevant für diesen Adapter.
                              Achte darauf, verschiedene Ports zwischen Sonoff und Standard mqtt zu nutzen.

                              V 1 Reply Last reply Reply Quote 0
                              • V
                                Vujagig @GiuseppeS last edited by

                                @GiuseppeS
                                Ah vielen dank, werde ich mal testen. Wobei ich irgendwo schon mal gehört hatte das jemand den Sonoff Adapter auch als generischen MQTT Adapter genommen hatte.
                                Morgen kommt das Mi Band. Überlege schon das auch als Keyless Entry für Auto und Garge zu nutzen. Wohnung und Haustür wird etwas komplizierter. Evtl lege ich die Adressen auch im ESP intern fest, für KFZ Nutzung eh notwendig. War schon erschrocken was hier in der Gegend alles auf Bluetooth rumbrüllt. In ner halben Stunde min 15 verschiedene Geräte und von mir kam nur der TV und evtl das Smartphone (muss ich aber noch verifizieren). Die Soudbar von einem Nachbar scheint sich im Dauerconnect Modus zu befinden, muss ich mich mal connecten und ordentliche Musik abspielen 🙂

                                G 1 Reply Last reply Reply Quote 1
                                • G
                                  GiuseppeS @Vujagig last edited by

                                  @Vujagig
                                  Nur das mi band als Zugang für Haus oder Garage nutzen wäre grob fahrlässig, falls ich dich korrekt verstanden habe. Jeder, der iwie scannt könnte dein Signal klonen. Es sei denn du würdest Mac und manipulierte rolling Manufacturer Data (quasi als Schlüssel Code) nutzen. Aber sowas ist glaub mir der Mi nicht möglich.
                                  Evtl könnte das Smartphone umfunktioniert werden, sodass z.B. der Code vom Google Authenticator gesendet werden könnte. Aber auch das ist nur ein Denkanstoß und übersteigt meine Programmierkenntnisse bei Weitem.

                                  V 1 Reply Last reply Reply Quote 0
                                  • V
                                    Vujagig @GiuseppeS last edited by

                                    @GiuseppeS nun bei der Wohnungstür geb ich dir schon Recht, da würd ich noch einen 2ten Faktor nehmen. Garage ist unkritisch und den Funksender der Zentralverriegelung vom Auto zu Kopieren ist einfacher, da gibt es fertige Produkte in einschlägigen Kreisen. Zum starten brauchst du immer noch den Zündschlüssel. Ist ein ziemlich alter Ford den kommst du mit jedem dritten Ford Schlüssel auf 🙂
                                    Dazu kommt noch das security by obscurity hier ganz gut funktioniert weil wirklich niemand auf die Idee kommt. Da belauschen die eher Funkschlüssel.

                                    1 Reply Last reply Reply Quote 1
                                    • S
                                      shooter last edited by

                                      Moin,
                                      ich hab das Ding auch mal aufgesetzt (paar kleine Bugs hat das Teil noch, z.B. sollte es einen Ordern im Broker erstellen um seine Infos dann dort zu sammeln...hab ich auch schon soweit umgesetzt).

                                      Ich habe jetzt ehr das Problem das mein Handy nicht erkannt wird. LE Beacons gehen aber ...

                                      Workaround ist für mich der Beacon Simulator (auf Android), damit geht das soweit auch aber bei jedem Neustart von Bluetooth oder Handy habe ich leider eine andere MAC Adresse...das ist so nicht praktikabel (außer halt zum testen). Eine feste MAC lässt sich leider nicht einstellen, ist wohl Betriebssystem bedingt.

                                      Hat jemand noch eine Lösung parat? Mit Handy? Ohne Beacon?

                                      Es geht mir darum das meine Family IMMER ihr Handy dabei hat, es wäre schon wenn es damit ginge...

                                      Ansonsten super Arbeit! Genau was ich gesucht habe!

                                      Gruß,

                                      Flo

                                      G 1 Reply Last reply Reply Quote 0
                                      • G
                                        GiuseppeS @shooter last edited by GiuseppeS

                                        @shooter
                                        Auf Basis des Skripts aus dem ersten Post, habe ich meins erstellt.

                                        Optimierungen:

                                        • nicht nur Mac sondern auch manufacturer data wird gesendet. Somit auch über das Smartphone nutzbar, da wechselnde iBeacon Mac mit Android App "Beacon Simulator", aber manu data bleibt konstant.
                                        • Bugfix bzgl json string: keine Treffer beim Scan führten zu fehlerhaftem json. Ist nun korrigiert.
                                        • im Namen der empfangenen ioBroker id steht auch der Ort des Absenders und dessen IP. Ort wird im ino Skript angegeben, aktuell "bett".
                                        • Updates können ota über den Webserver eingespielt werden.

                                        Übrigens: bei mir wird die Smartphone App mit dem Handy Neustart nicht automatisch gestartet. Nutze dafür die App Tasker, die ich eh aus verschiedenen Gründen installiert habe. Parallel zum Handy nutze ich neuerdings auch meine Mi Watch Band 5. Klappt einwandfrei.

                                        mqtt_anwesenheit_ota.ino.zip

                                        K screendj 2 Replies Last reply Reply Quote 0
                                        • S
                                          shooter last edited by

                                          @GiuseppeS

                                          Vielen Dank! Das schaue ich mir an, klingt ja nach einer Lösung 🙂

                                          Viele Grüße,

                                          Flo

                                          1 Reply Last reply Reply Quote 0
                                          • K
                                            Kopterframe @GiuseppeS last edited by

                                            @GiuseppeS
                                            Vielen Dank für dein Script
                                            Ich benötige mal Hilfe, das Script läuft und erkennt auch die Mac Adressen.
                                            Bekomme keine Verbindung zum MQTT Adapter.
                                            gibt es da irgend ein HowTo?
                                            Danke

                                            G 1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            851
                                            Online

                                            31.7k
                                            Users

                                            79.7k
                                            Topics

                                            1.3m
                                            Posts

                                            26
                                            242
                                            35038
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo