NEWS
MQTT Bluetooth BLE Anwesenheitserkennung mit ESP32
-
@amg_666
Exclude müsste von der Firmware espresense umgesetzt werden. Das ist bis jetzt noch nicht geschehen. Hatte mal ein Issue dazu auf github gesehen. Das solltest du verfolgen. -
@giuseppes sagte in MQTT Bluetooth BLE Anwesenheitserkennung mit ESP32:
Hatte mal ein Issue dazu auf github gesehen. Das solltest du verfolgen.
Danke für die Info.
ich hab jetzt nmoch ein Problem bzw eine Frage: Zum Testen habe ich 3 ESP geflasht und die in 3 Etagen angeschlossen. Final soll das mal so fein werden, dass ich den Raum einer Person (respektive des Devices) mitbekomme und dann individuell Licht/Musik etc steuern kann.
Samsung Smartphone: Quasselt regelmäßig mit den ESPs, ich werte die Entfernungen aus und die niedrigste Entfernung ist dann die Etage wo das Handy grade ist. Funktioniert ohne Probleme (na ja fast, die Entfernungsermittlung ist schon ziemlich ungenau, aber im großen und ganzen ok).
Fitnessband (mi 3 Band): Das hatte ich gestern getestet und auch da wurden die Datenpunkte der ESP regelmäßig upgedatet. Heute morgen war da "Funkstille" (im wahrsten Sinne des Wortes). Ich hab dann mal die ESP resettet, den mqtt Adapter neu gestartet und irgendwann liefs wieder gut. Jetzt ist wieder Stillstand und es wird nichts upgedatet.
Sind diese einfachen Fitnessbänder so unzuverlässig oder woran kann das liegen? Das Samsung ist fröhlich am aktualisieren... -
@amg_666
Ich verwendete zu Testzwecken mein miband5 bzw 6 und da gab es nie Probleme, wie du sie beschreibst. Grundsätzlich wurde immer gesendet. Über mehrere Wochen hatte ich teilweise getestet. -
Hallo zusammen,
ich bekomme es leider nicht hin den Sketch zu kompilieren. Bei Kompilieren erhalte ich immer folgende Fehlermeldung:
Arduino: 1.8.19 (Windows 10), Board: "ESP32 Dev Module, Disabled, Default 4MB with spiffs (1.2MB APP/1.5MB SPIFFS), 240MHz (WiFi/BT), QIO, 80MHz, 4MB (32Mb), 921600, None" C:\Users\Andy\Downloads\1603999752128-mqtt_anwesenheit_ota.ino\mqtt_anwesenheit_ota\mqtt_anwesenheit_ota.ino: In function 'void setup()': mqtt_anwesenheit_ota:226:8: error: 'class PubSubClient' has no member named 'set_server' mqtt.set_server(MQTT_server, MQTT_port); // MQTT Port einstellen ^ mqtt_anwesenheit_ota:228:29: error: no matching function for call to 'PubSubClient::connect(String&)' if (mqtt.connect(MQTT_Name)) ^ In file included from C:\Users\Andy\Downloads\1603999752128-mqtt_anwesenheit_ota.ino\mqtt_anwesenheit_ota\mqtt_anwesenheit_ota.ino:34:0: C:\Users\Andy\Documents\Arduino\libraries\PubSubClient\src/PubSubClient.h:112:12: note: candidate: boolean PubSubClient::connect(const char*) boolean connect(const char* id); ^ C:\Users\Andy\Documents\Arduino\libraries\PubSubClient\src/PubSubClient.h:112:12: note: no known conversion for argument 1 from 'String' to 'const char*' C:\Users\Andy\Documents\Arduino\libraries\PubSubClient\src/PubSubClient.h:113:12: note: candidate: boolean PubSubClient::connect(const char*, const char*, const char*) boolean connect(const char* id, const char* user, const char* pass); ^ C:\Users\Andy\Documents\Arduino\libraries\PubSubClient\src/PubSubClient.h:113:12: note: candidate expects 3 arguments, 1 provided C:\Users\Andy\Documents\Arduino\libraries\PubSubClient\src/PubSubClient.h:114:12: note: candidate: boolean PubSubClient::connect(const char*, const char*, uint8_t, boolean, const char*) boolean connect(const char* id, const char* willTopic, uint8_t willQos, boolean willRetain, const char* willMessage); ^ C:\Users\Andy\Documents\Arduino\libraries\PubSubClient\src/PubSubClient.h:114:12: note: candidate expects 5 arguments, 1 provided C:\Users\Andy\Documents\Arduino\libraries\PubSubClient\src/PubSubClient.h:115:12: note: candidate: boolean PubSubClient::connect(const char*, const char*, const char*, const char*, uint8_t, boolean, const char*) boolean connect(const char* id, const char* user, const char* pass, const char* willTopic, uint8_t willQos, boolean willRetain, const char* willMessage); ^ C:\Users\Andy\Documents\Arduino\libraries\PubSubClient\src/PubSubClient.h:115:12: note: candidate expects 7 arguments, 1 provided mqtt_anwesenheit_ota:231: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\Andy\Downloads\1603999752128-mqtt_anwesenheit_ota.ino\mqtt_anwesenheit_ota\mqtt_anwesenheit_ota.ino: In function 'void loop()': mqtt_anwesenheit_ota:271:16: error: 'MQTT' has not been declared mqtt.publish(MQTT::Publish(MQTT_Name, NachrichtJSON).set_qos(QoS)); // JSON per MQTT senden ^ mqtt_anwesenheit_ota:283:27: error: no matching function for call to 'PubSubClient::connect(String&)' mqtt.connect(MQTT_Name); ^ In file included from C:\Users\Andy\Downloads\1603999752128-mqtt_anwesenheit_ota.ino\mqtt_anwesenheit_ota\mqtt_anwesenheit_ota.ino:34:0: C:\Users\Andy\Documents\Arduino\libraries\PubSubClient\src/PubSubClient.h:112:12: note: candidate: boolean PubSubClient::connect(const char*) boolean connect(const char* id); ^ C:\Users\Andy\Documents\Arduino\libraries\PubSubClient\src/PubSubClient.h:112:12: note: no known conversion for argument 1 from 'String' to 'const char*' C:\Users\Andy\Documents\Arduino\libraries\PubSubClient\src/PubSubClient.h:113:12: note: candidate: boolean PubSubClient::connect(const char*, const char*, const char*) boolean connect(const char* id, const char* user, const char* pass); ^ C:\Users\Andy\Documents\Arduino\libraries\PubSubClient\src/PubSubClient.h:113:12: note: candidate expects 3 arguments, 1 provided C:\Users\Andy\Documents\Arduino\libraries\PubSubClient\src/PubSubClient.h:114:12: note: candidate: boolean PubSubClient::connect(const char*, const char*, uint8_t, boolean, const char*) boolean connect(const char* id, const char* willTopic, uint8_t willQos, boolean willRetain, const char* willMessage); ^ C:\Users\Andy\Documents\Arduino\libraries\PubSubClient\src/PubSubClient.h:114:12: note: candidate expects 5 arguments, 1 provided C:\Users\Andy\Documents\Arduino\libraries\PubSubClient\src/PubSubClient.h:115:12: note: candidate: boolean PubSubClient::connect(const char*, const char*, const char*, const char*, uint8_t, boolean, const char*) boolean connect(const char* id, const char* user, const char* pass, const char* willTopic, uint8_t willQos, boolean willRetain, const char* willMessage); ^ C:\Users\Andy\Documents\Arduino\libraries\PubSubClient\src/PubSubClient.h:115:12: note: candidate expects 7 arguments, 1 provided Mehrere Bibliotheken wurden für "WiFi.h" gefunden Benutzt: C:\Users\Andy\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.5\libraries\WiFi Nicht benutzt: C:\Program Files (x86)\Arduino\libraries\WiFi exit status 1 'class PubSubClient' has no member named 'set_server'
Weiß jemand was ich hier machen kann?
-
@banis
Wozu überhaupt noch diesen Sketch verwenden? Espresense funktioniert ganz gut. -
@giuseppes Super vielen Dank das funktioniert mit Espresense ja mega einfach.
-
Welche Hardware nutzt ihr? Bzw welchen ESP32 sollte man denn kaufen? Bin von den verschiedenen Varianten auf Aliexpress etwas irritiert..
-
@grace13 Also bei mir läuft es mittlerweile ganz gut und ich benutze D1Mini von A-Z Delivery. Die sind da nicht sooo viel teurer als "beim Chinesen" und du hast kürzere Lieferzeiten und Garantie, bzw die sind eh sehr kulant.
Link auf die Homepage
Und wenn du dich da für den Newsletter einträgst kriegst du täglich irgendwelche Angebote, oft auch D1 Mini als Mehrfachpackung -
@grace13 said in MQTT Bluetooth BLE Anwesenheitserkennung mit ESP32:
Welche Hardware nutzt ihr? Bzw welchen ESP32 sollte man denn kaufen?
@amg_666 said in MQTT Bluetooth BLE Anwesenheitserkennung mit ESP32:
Also bei mir läuft es mittlerweile ganz gut und ich benutze D1Mini
Einziges Manko: Der gute D1 Mini hat einen esp82xx und keinen esp32. Sprich kein BLE an board und deswegen gänzlich ungeeignet für den gewünschten Einsatzzweck hier.
-
@opensourcenomad Sorry, dann hab ich den falschen verlinkt: "D1 Mini" Ausführung und auch in größerer Bauform
-
@amg_666 wurde mit ESPresense geflasht und funktioniert soweit, die Daten kommen am MQTT Adapter an. Ich hätte aber noch eine Frage.
Meine Bluetooth Mac Adresse vom Handy habe ich in "Known BLE mac addresses" eingetragen.
Im MQTT Adapter bekomme ich nun bestimmt über 20 Geräte angezeigt, allerdings ist keins mein Gerät. Wo liegt denn der Fehler? -
@grace13 said in MQTT Bluetooth BLE Anwesenheitserkennung mit ESP32:
Meine Bluetooth Mac Adresse vom Handy habe ich in "Known BLE mac addresses" eingetragen.
Mobilfunkdelefone neuerer Generationen, bzw. deren software randomisiert meist die mac Adressen der WLAN und Bluetooth interfaces (wenn diese passiv/nicht verbunden sind) um ein tracking für "Mitbewerber" zu erschweren.
Eventuell macht dir diese Funktion gerade das leben schwer?
-
@opensourcenomad hm okay, danke für die Info, dann werde ich es mal mit meiner galaxy watch versuchen.
-
@grace13 said in MQTT Bluetooth BLE Anwesenheitserkennung mit ESP32:
danke für die Info
Hätte ja Ansporn sein können kurz 20 Sekunden Internetrecherche zu betreiben und z.B. folgendes, für Androiden gültiges, Wissen zu erlangen:
For devices running Android 10 or higher, the framework uses randomized MAC address by default. Users can enable or disable MAC randomization for individual networks through an option in the Network details screen in Settings, as shown in Figure 1. If a user disables MAC randomization for a network, the framework uses the factory MAC address (globally unique address).
.
Quelle: https://source.android.com/devices/tech/connect/wifi-mac-randomization-behavior
..und wer genau liest sieht es geht nur um wifi
-
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