NEWS
MQTT Bluetooth BLE Anwesenheitserkennung mit ESP32
-
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
-
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.
-
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? -
@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.
-
@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. -
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. -
@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. -
@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 -
@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. -
@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. -
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
-
@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.
-
-
@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 -
Ich verwende mosquitto als Broker und in ioBroker nur den mqtt Client. Damit habe ich keine Probleme. Über den "Umweg" mit mosquitto kannst du auch den Weg vom esp32 zum Server besser prüfen. In meinem Script hatte ich übrigens das login für mqtt deaktiviert, d.h. es können hier kein User + Passwort angegeben werden.
Grundsätzlich solltest du IP und Port checken -
@GiuseppeS
Ip und Port passen, habe ich mehfach geprüft. Hatte auch schon das original von
http://esp32-server.de/mqtt-ble/ mit meinen Wlan Zugangsdaten versucht.
beide Fils laufen, das sehe ich am Terminal. Es werden auch alle MAC ausgegeben.
Auf welchem Systhem hast du IoBroker laufen?
Ich am NAS Synology in Docker.
kann mir nur vorstellen, dass es mit dem Docker zusammenhängt. -
@Kopterframe
Nutze ioBroker im Docker Container auf einem Ubuntu Host (PC).
Du musst zunächst herausfinden wo es überhaupt scheitert. Steht die esp32 Verbindung zum mqtt Broker? Welchen Broker nutzt Du überhaupt, den in ioBroker?
Hast Du im ioBroker mqtt Client die subscribtion drin? So schaut es bei mir aus:Der Eintrag bleScan/# ist hierbei relevant.
-
@GiuseppeS
Muss ich den MQTT und den Clint installieren???
Habe nur den MQTT Adapter
![alt text](image url)
-
@Kopterframe
Wenn du den mqtt Adapter verwendest, bringt der den mqtt Broker + Client mit. Dann musst du dort alles einstellen. -
@GiuseppeS
egal, was ich einstelle. Bekommen keine Verbindung??