ESP32c3 und JDY-24M

OP #8054832
Lesenswert?

ESP32c3 und JDY-24M

Ich habe einen Wasserstandsensor für eine Zisterne mit JDY24M und AJ-SR04M. Gespeist wird das alles über die Elektronik einer simplen Solarleuchte und StepUp.

Funktioniert mit NRF52Supermini und Bluefruit als Empfänger super, verbraucht ca. 100uA (JDY mit ROLE0 und STARTEN0 und AJ-SR04M in Mode 4).

Jetzt wollte ich die Werte in MQTT speichern und mit einem ESP32c3 eine BLE-Wifi-Bridge bauen. Mit ESP32_BLE_Arduino und dem Beispiel BLE_client.ino als Grundlage.

Der ESP verbindet sich auch mit dem JDY--24M, er kann aber den Service 0xFFE0 oder 0000ffe0-0000-1000-8000-00805f9b34fb nicht erkennen. Im Scan wird der Service als 0000ffe0-0000-1000-8000-00805f9b34fb angezeigt. Auch ist nach Aufbau der BLE-Verbindung kein disconnect möglich.

Auch auf dem Schreibtisch mit USB-Versorgung und 1000uF Kondensator funktioniert es nicht. Ich habe auch einen ESP32H2 und einen S3 getestet. Nichts geht. Alle Google-Seiten incl. KI habe ich durch.

Hat es jemand geschafft einen ESP mit dem JDY-24M zu verbinden?

#8054837
Lesenswert?

Diese ServiceUUID 0000ffe0-0000-1000-8000-00805f9b34fb wird so ziemlich von jedem BLE‑Modul und deren China‑Clones genutzt. Selbst mein Xiaomi Smartphone identifiziert sich damit. Du solltest dir eine eigene ServiceUUID generieren.

Da das beim JDY-24M nicht möglich ist, kannst Du zumindest die MAC‑Adresse verwenden in der Hoffnung diese ist nicht randomisiert.

Wenn Du Hilfe brauchst den Code auf NimBLE-Arduino (h2zero) umzuschreiben poste dein Sketch als Dateianhang (nur classic esp32, der esp32c3 läuft bereits auf NimBLE)

: Bearbeitet durch User
OP #8054842
Lesenswert?

Hallo Alexander, danke für die schnelle Antwort. Ich nutze die MAC zur Identifikation. Es wird ja auch ein Connect durchgeführt und mit NFR52 funktioniert es. Es geht irgendwie um die Erkennung der Service UUID. Auch die NRF-Connect App hat keine Probleme.

: Bearbeitet durch User
OP #8054913
Lesenswert?

Ich hatte die Version 3.3.8 und habe nun ein Upgrade auf 4.0.0 durchgeführt. Immer noch kein Erfolg:

Starting Arduino ESP32-C3 BLE Client...

Scan Ergebnis: Name: , Address: 11:89:d5:90:XX:XX, manufacturer data: 262188a01189d5900236, serviceUUID: 0000ffe0-0000-1000-8000-00805f9b34fb, serviceUUID: 0000fee7-0000-1000-8000-00805f9b34fb, rssi: -48

Connect Ergebnis: Device: ZISTERNE Found Forming a connection to 11:89:d5:90:XX:XX

  • Connected to server Failed to find our service UUID: 0000ffe0-0000-1000-8000-00805f9b34fb
OP #8055024
Lesenswert?

Die NFR Connect App findet 0xFEFE0

Beim NRF52 funktioniert alles mit #include <bluefruit.h> BLEClientCharacteristic ZisternenStand = BLEClientCharacteristic(0xFFE1); BLEClientService ZisternenService = BLEClientService(0xFFE0);

Es funktioniert ja mit Bluefruit. Deshalb sind alle UUIDs offensichtlich richtig.

Im ESP wird serviceUUID((uint16_t) 0xFFE0) statt serviceUUID("0000ffe0-0000-1000-8000-00805f9b34fb") auch ohne Murren verarbeitet und in "0000ffe0-0000-1000-8000-00805f9b34fb" übersetzt. Den Service findet er trotzdem nicht.

Die NRF-Connect App kann den Service ansprechen und ich kann Daten senden und lesen.

: Bearbeitet durch User
#8055117
Lesenswert?

Ja die UUIDs sind im Datenblatt gelistet welches Christof Rieger im Wiki verlinkt hat.

Beitrag "JDY-24M BLE Bluetooth Mesh Dokumentation"

0xFFE0 ist der Advertising Service und 0xFFE1-0xFFE3 die GATT Characteristics auf die man zugreifen kann. Dein ESP32c3 scheint die nach dem connect nicht zu finden.

Lass Dir mal über getServices() -> getUUID() im Sketch anzeigen was davon der ESP32c3 überhaupt sieht.

: Bearbeitet durch User
OP #8055427
Lesenswert?

So, ich habe es nun geschafft. Danke für die Hilfe.

Mit der NimBLE-Arduino library 2.5. Ich habe vielfach gelesen, dass der ESP32 als BLE-Chip sehr empfindlich auf falsche Konfigurationen und Timings reagiert. Mit dem NimBLEClient und pClient->setConnectionParams(24, 40, 0, 400); funktioniert es nun problemlos (zumindest mit 3.3.8).

Mit der espressif/arduino-esp32 library und BLEClient und pClient->updateConnParams(24,40,0,400); klappt es bei mir leider nicht.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren