Code: Alles auswählen
#include <NimBLEDevice.h>
static NimBLEAdvertisedDevice* djiDevice = nullptr;
static NimBLEClient* client = nullptr;
static NimBLEUUID serviceUUID("0000fee7-0000-1000-8000-00805f9b34fb");
static NimBLEUUID charUUID("000036f5-0000-1000-8000-00805f9b34fb");
NimBLECharacteristic* controlChar = nullptr;
uint8_t recordToggleFrame[] = {
0x55, 0x0A, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x63
};
class AdvertisedDeviceCallbacks : public NimBLEAdvertisedDeviceCallbacks {
void onResult(NimBLEAdvertisedDevice* dev) override {
if (dev->getName().find("DJI") != std::string::npos) {
Serial.println("DJI Gerät gefunden!");
djiDevice = dev;
NimBLEDevice::getScan()->stop();
}
}
};
void setup() {
Serial.begin(115200);
NimBLEDevice::init("ESP32-DJI-Test");
NimBLEScan* scan = NimBLEDevice::getScan();
scan->setAdvertisedDeviceCallbacks(new AdvertisedDeviceCallbacks());
scan->setActiveScan(true);
scan->start(10, false);
}
void loop() {
if (djiDevice && !client) {
Serial.println("Verbinde zu DJI Gerät...");
client = NimBLEDevice::createClient();
if (client->connect(djiDevice)) {
Serial.println("Verbunden!");
NimBLEService* service = client->getService(serviceUUID);
if (!service) {
Serial.println("Service nicht gefunden!");
return;
}
controlChar = service->getCharacteristic(charUUID);
if (!controlChar) {
Serial.println("Characteristic nicht gefunden!");
return;
}
Serial.println("Sende Record Toggle Frame...");
controlChar->writeValue(recordToggleFrame, sizeof(recordToggleFrame));
Serial.println("Warten auf Antwort...");
}
}
delay(2000);
}- aktiviert BLE
- sucht nach DJI‑Geräten
- verbindet sich automatisch
- sendet einen Record‑Toggle‑Frame (Start/Stop)
- loggt jede Antwort der Pocket 4 im seriellen Monitor
Hinweis: Das ist ein Testprogramm, kein fertiger Controller.
Es prüft nur, ob die Pocket 4 das Protokoll versteht.
Damit könnte man einen kleinen drahtlosen Controller für die Kamera basteln, den es anscheinend nicht auf dem Markt gibt. Muss ja nicht immer nur das Smartphone mit App sein ;-)
Aber: Gilt dieses Protokoll auch für die DJI Pocket 4?
Hier wird es schwierig:
- DJI veröffentlicht kein offizielles SDK für die Pocket‑Serie.
- Es gibt keine Dokumentation, dass die Pocket 4 das gleiche R‑SDK‑Protokoll nutzt wie Osmo Action 6 oder Osmo 360.
- Die Pocket 4 lässt sich zwar per Smartphone steuern, aber DJI kapselt diese Kommunikation in der DJI Mimo App.
Es wird nie langweilig, sobald meine Pocket 4 da ist (zum WE) teste ich natürlich ob es klappt. Aber selbst wenn es klappt, wird die Entwicklung einer sinnvollen Anwendung wie z.B. Radargesteuerter Auslöser etc. noch etwas dauern, es liegen noch andere Projekte hier an, diese Bastelarbeit ist zwar spannend, muss aber trotzdem etwas warten ;-)


