BLE-Protokolldetails und Gerätekommunikation für RADR
Dieses Dokument behandelt die Bluetooth Low Energy (BLE)-Kommunikationsprotokolle, die RADR zur Kommunikation mit unterstützten Geräten verwendet.
BLE-Übersicht
RADR nutzt Bluetooth Low Energy (BLE) für die gesamte Gerätekommunikation. Als BLE-Zentralgerät scannt RADR nach Peripheriegeräten wie OSSM und Lovense-Spielzeugen und verbindet sich mit ihnen.
| Parameter | Wert |
|---|---|
| BLE-Rolle | Zentral |
| Gerätename | OSSM-REMOTE |
| Sendeleistung | 9 dBm |
| Stack | NimBLE |
Scan-Parameter
| Parameter | Wert |
|---|---|
| Scanintervall | 100ms |
| Scanfenster | 100ms |
| Scantyp | Aktiv |
| Scandauer | 5000ms (5 Sekunden) |
Während des aktiven Scannens sendet RADR Scananforderungspakete an Geräte, um deren vollständige Advertising-Daten einschließlich der Gerätenamen abzurufen.
Verbindungsparameter
RADR verwendet optimierte Verbindungsparameter für eine reaktionsfähige Steuerung:
| Parameter | Wert | Beschreibung |
|---|---|---|
| Mindestintervall | 12 | Mindestverbindungsintervall 15ms |
| Maximales Intervall | 12 | Maximales Verbindungsintervall 15ms |
| Latenz | 0 | Keine Slave-Latenz (sofortige Antworten) |
| Überwachungszeitüberschreitung | 150 | 1500ms Zeitüberschreitung für verlorene Verbindungen |
| Verbindungs-Timeout | 5000ms | Maximale Zeit zum Verbindungsaufbau |
Das Verbindungsintervall von 15ms ermöglicht eine reaktionsfähige Steuerung mit minimaler Latenz zwischen Encoderumdrehungen und Gerätereaktion.
Geräteerkennung
RADR identifiziert unterstützte Geräte anhand ihrer angekündigten Service-UUIDs:
Research And Desire-Geräte
| Gerät | Dienst-UUID |
|---|---|
| OSSM | 522B443A-4F53-534D-0001-420BADBABE69 |
| LKBX | Ausstehende Umsetzung |
| DTT | Ausstehende Umsetzung |
Lovense-Geräte
| Gerät | Dienst-UUID |
|---|---|
| Domi 2 | 57300001-0023-4BD4-BBD5-A6920E4C5653 |
| Andere | Über die Buttplug.io-Registrierung |
Buttplug.io-Geräte
Über das Buttplug.io-Protokoll unterstützte Geräte werden mithilfe von UUIDs aus
der dynamischen Registrierung (registry.json) identifiziert. Diese
Registrierung kann über Firmware-Updates ohne Codeänderungen aktualisiert werden.
OSSM-Protokoll
RADR kommuniziert mit OSSM über ein benutzerdefiniertes BLE-Protokoll:
Servicestruktur
Service: 522B443A-4F53-534D-0001-420BADBABE69
├── Position Characteristic
├── Speed Characteristic
├── Depth Characteristic
├── Sensation Characteristic
├── Stroke Characteristic
└── Pattern CharacteristicBefehlsformat
Befehle werden als Byte-Arrays an das entsprechende Merkmal gesendet:
| Parameter | Datentyp | Bereich |
|---|---|---|
| Speed | uint8_t | 0-100 |
| Depth | uint8_t | 0-100 |
| Sensation | uint8_t | 0-100 |
| Stroke | uint8_t | 0-100 |
| Pattern | uint8_t | Musterindex |
Musterauswahl
Muster werden nach Index ausgewählt:
| Index | Mustername |
|---|---|
| 0 | Simple Stroke |
| 1 | Teasing Pounding |
| 2 | Robo Stroke |
| 3 | Half'n'Half |
| 4 | Deeper |
| 5 | Stop'n'Go |
| 6 | Insist |
Lovense-Protokoll
Für Lovense-Geräte mit direkter Integration (Domi) verwendet RADR das Lovense-BLE-Protokoll:
Vibrationssteuerung
Command: Vibrate:{level};
Level: 0-16Batterieabfrage
Command: Battery;
Response: {percentage}Steuerung der Stromversorgung
Command: PowerOff;Buttplug.io-Geräte
Für über Buttplug.io unterstützte Geräte implementiert RADR eine Teilmenge des Buttplug-Protokolls:
- Vibrate – Vibrationsstufe einstellen (0-1-Gleitkommazahl, auf den Gerätebereich abgebildet)
- Linear – Für Geräte mit Schubbewegung
- Rotate – Für rotierende Geräte
Nicht alle Geräte unterstützen alle Befehle. RADR fragt während der Verbindung die Gerätefunktionen ab.
Verbindungswiederherstellung
Wenn RADR die Verbindung zu einem Gerät verliert:
- Erkennung – Verbindungsverlust innerhalb des Überwachungszeitlimits (1500ms) erkannt
- Wiederverbindung – Automatischer Wiederverbindungsversuch innerhalb von 2-5 Sekunden
- Sicherheit – Für OSSM sanftes Herunterregeln während der Trennung
- Fehler – Nach fehlgeschlagener Wiederverbindung kehrt RADR zum Hauptmenü zurück
Sicherheit
RADR nutzt offene BLE-Verbindungen ohne Pairing oder Bonding:
- Keine PIN erforderlich
- Keine Verschlüsselung (Befehle sind Klartext)
- Einzelne Verbindung gleichzeitig
BLE-Kommunikation ist nicht verschlüsselt. Verwenden Sie RADR in privaten Umgebungen, in denen das Abfangen von Funksignalen kein Problem darstellt.
Debuggen
Zum BLE-Debugging während der Entwicklung:
- Verwenden Sie einen BLE-Sniffer (nRF Connect, Wireshark mit BLE-Adapter)
- Aktivieren Sie die serielle Protokollierung in der Firmware (
LOG_LEVEL_DEBUG) - Überwachen Sie Verbindungsereignisse und Schreibvorgänge an Merkmalen