Hi, den ESP32 per BLE Daten zu übertragen lassen ist grundsätzlich ja kein Problem, Beispiele bekommt man dafür zu Hauf (z.B. für Temperaturmessungen: https://sourceforge.net/p/iot-leaf/code/ci/master/tree/BleDHT22/BleDHT22.ino ) Jetzt möchte ich aber mit einem ESP32 auf ein BLE-Gerät verbinden und von dort Werte empfangen (um bei dem Beispiel oben zu bleiben, das sind z.B. nur Temperaturwerte, ich weiß also immer genau, welche Art von BLE-Datenpaketen ich empfangen möchte). Wenn ich nach passenden Informationen suche, lande ich leider immer nur bei Beispielen für die Senderichtung. Meine Frage: geht das, dass ich den ESP32 auch als Empfänger für BLE verwende und wenn ja wie? Danke!
Stamsund schrieb: > Meine Frage: geht das, dass ich den ESP32 auch als Empfänger für BLE > verwende und wenn ja wie? Empfangen und Senden können sowohl GATT-Clients, als auch GATT-Server. Du suchst wahrscheinlich nach der API für GATT-Server. Könnte das diese hier sein: https://github.com/espressif/arduino-esp32/blob/master/libraries/BLE/src/BLEServer.h ? mfg Torsten
OK, nicht dass ich wirklich verstanden hätte wie das genau funktioniert, was da gemacht wird, aber wäre das nicht eher der Client wie im Beispiel von https://github.com/espressif/arduino-esp32/blob/master/libraries/BLE/examples/BLE_client/BLE_client.ino ? Da kommt zumindest ein scan() vor, mit dem nach vorhandenen Bluetooth-Geräten gesucht wird. allerdings ist mir noch vollkommen schleierhaft, wie dann ein spezielles Bluetooth-Gerät ausgewählt wird und wie das Empfangen von speziellen Daten von diesem von statten geht...
Stamsund schrieb: > OK, nicht dass ich wirklich verstanden hätte wie das genau funktioniert, > was da gemacht wird, aber wäre das nicht eher der Client wie im Beispiel > von Ja, da hast Du natürlich völlig recht. War wohl noch zu früh heute morgen :-) > Da kommt zumindest ein scan() vor, mit dem nach vorhandenen > Bluetooth-Geräten gesucht wird. allerdings ist mir noch vollkommen > schleierhaft, wie dann ein spezielles Bluetooth-Gerät ausgewählt wird > und wie das Empfangen von speziellen Daten von diesem von statten > geht... Üblich ist, einen Server nach bestimmten Kriterien auszusuchen. In den Advertising-Data könnte z.B. die Liste der Unterstützen services, der Service aufgeführt sein, nach dem Du suchst. Oder es besteht ein Bond zwischen beiden Geräten. Danach stellst Du eine Verbindung zu dem Server her (Connect), guckst, welche Services der Server hat (Service Discovery) und guckst dann, welche Characteristics der von Service hat, für den Du dich interessierst (Characeristic Discovery). Wie Du den Service dann konkret verwendest, sollte in der Profil-Beschreibung des Service stehen. Ich finde die Kapitel zu ATT und GATT in der Bluetooth CodeSpec recht gut zu lesen und sehr verständlich. Da sind dann auch alle GATT procedure beschrieben. In fast allen APIs wirst Du die so, oder so ähnlich wieder finden.
Wenn es nur um Temperaturwerte geht und Sicherheit kein Thema ist kannst du auch einfach die Daten in der Advertise-Nachricht verpacken. So machen es viele China-Billo-Gadgets und ich konnte so ganz einfach meine Badezimmerwaage ins SmartHome verbinden.:)
Chr. M. schrieb: > So machen es viele China-Billo-Gadgets > und ich konnte so ganz einfach meine Badezimmerwaage > ins SmartHome verbinden.:) Du musst das mit dem Fitnessraum auch machen! Erst nach x Kilometer geht die Tür wieder auf und schaltet die Kaffeemaschine zur Benutzung frei :)
Torsten R. schrieb: > Üblich ist, einen Server nach bestimmten Kriterien auszusuchen. In den > Advertising-Data könnte z.B. die Liste der Unterstützen services, der > Service aufgeführt sein, nach dem Du suchst. OK, in meinem Fall ist es so, dass ich den Namen des Gerätes weiß, auf das ich mich verbinden will. Einfach nur irgend ein in der Nähe befindliches Gerät mit den passenden Diensten zu verwenden, wäre ja etwas unsicher? Im schlimmsten fall erwische ich dann z.B. nicht mein gewünschtes Außenthermometer, sondern das von meinem Nachbarn, das blöderweise aber nicht draußen sondern direkt über der Heizung steht (um mal beim Temperaturbeispiel zu bleiben). Chr. M. schrieb: > Wenn es nur um Temperaturwerte geht und Sicherheit > kein Thema ist kannst du auch einfach die Daten > in der Advertise-Nachricht verpacken. Schöne Antwort, passt nur leider nicht zur Frage. Ich will mich auf ein existierendes BLE-Gerät verbinden und nicht selber Daten versenden!
Stamsund schrieb: > OK, in meinem Fall ist es so, dass ich den Namen des Gerätes weiß, auf > das ich mich verbinden will. Einfach nur irgend ein in der Nähe > befindliches Gerät mit den passenden Diensten zu verwenden, wäre ja > etwas unsicher? Die MAC Adresse des Geräts sollte auch eindeutig sein.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.