So liest, schreibst und abonnierst du eine BLE-Characteristic vom iPhone aus
Öffne das Gerät im Inspektor von Periphery, und jede Characteristic zeigt Buttons für das, was sie erlaubt: Lesen holt ihren Wert, Schreiben sendet Bytes, die du in Hex eintippst, und Benachrichtigen abonniert Live-Updates, bis du auf Stoppen Sie die Benachrichtigung tippst. Werte lassen sich als Hex, Dezimal, ASCII oder Binär anzeigen. Ein schneller Weg, eigene Firmware ohne Laptop zu testen.
BLE-Services, -Characteristics und -Properties in einer Minute
Ein BLE-Gerät gruppiert seine Daten in Services, und jeder Service enthält Characteristics. Eine Characteristic ist ein Wert, etwa ein Akkustand oder ein Datenkanal, und ihre Properties sagen, was du damit tun darfst: lesen, schreiben oder bei Änderung benachrichtigt werden. Periphery zeigt diese Properties als kleine Kürzel in jeder Zeile: R für Read, W für Write und N für Notify oder Indicate.
So liest du eine Characteristic
- Tippe auf Scannen, dann auf dein Gerät. Periphery verbindet sich und listet seine Services auf.
- Finde eine Characteristic mit einem R-Kürzel und tippe auf Lesen.
- Der Wert erscheint unter der Characteristic. Wechsle mit der Auswahl Format zwischen Hex, Dezimal, ASCII und Binär.
So schreibst du Bytes auf eine Characteristic
- Tippe auf Schreiben bei einer Characteristic mit einem W-Kürzel. Das Blatt Hexadezimalwert schreiben öffnet sich.
- Tippe die Bytes als hexadezimale Paare ein, zum Beispiel 01 FF. Leerzeichen sind optional.
- Prüfe die Zeile unter dem Feld: Sie zeigt, wie viele Bytes gesendet werden, oder warnt, dass der Text kein gültiges Hexadezimal ist.
- Tippe auf Senden, oder auf Abbrechen, um ohne Schreiben zu schließen.
Unterstützt die Characteristic Write mit Bestätigung, nutzt Periphery diese und wartet auf die Bestätigung des Geräts. Unterstützt sie nur Write ohne Bestätigung, werden die Bytes ohne Bestätigung gesendet, also den Wert zurücklesen oder auf eine Benachrichtigung achten, um zu prüfen, ob es angekommen ist.
So abonnierst du Benachrichtigungen
- Tippe auf Benachrichtigen bei einer Characteristic mit einem N-Kürzel.
- Sendet das Gerät einen neuen Wert, ersetzt er den unter der Characteristic angezeigten.
- Tippe auf Stoppen Sie die Benachrichtigung, um das Abo zu beenden. Der Inspektor zu verlassen trennt die Verbindung und beendet alle Abos.
Beispielrechnung: ein Wert, vier Formate
Angenommen, eine Characteristic gibt die drei Bytes zurück, die du an ein Testboard schicken könntest. So zeigt jedes Format sie:
| Format | Angezeigt als |
|---|---|
| Hex | 01 41 42 |
| Decimal | 1 65 66 |
| Binary | 00000001 01000001 01000010 |
| ASCII | Nur das erste Byte lässt sich nicht drucken; die anderen beiden zeigen sich als Buchstaben, AB |
Eine Battery-Level-Characteristic (2A19), die 5A in Hex zurückgibt, liest sich in Decimal als 90, also 90 %. Textfelder wie Manufacturer Name lassen sich in ASCII am einfachsten lesen.
Eine Testsitzung mit Pro protokollieren
Mit Periphery Pro wird jedes Lesen, Schreiben und jede Benachrichtigung während einer Verbindung automatisch mit Zeitstempel, Richtung, Characteristic-UUID und den rohen Bytes gespeichert. Öffne den Tab Protokolle, um jede Sitzung und ihre Paketanzahl zu sehen, wische eine Sitzung und tippe auf Exportieren, um sie als reinen Text zu teilen, oder auf Löschen, um sie zu entfernen. Eine Sitzung ohne Pakete wird beim Verlassen des Inspektors verworfen. Ohne Pro wird nichts protokolliert.
Tipps und häufige Fehler
- Buttons erscheinen nur für das, was die Characteristic erlaubt. Kein Button Lesen heißt, die Property ist nicht gesetzt, nicht, dass die App etwas verbirgt.
- Mehrbyte-Zahlen sind bei BLE meist Little-Endian. 34 12 in Hex ist 0x1234, nicht 0x3412.
- Ein Lesen oder Schreiben kann fehlschlagen, wenn die Characteristic Pairing oder Verschlüsselung braucht. iOS übernimmt das Pairing; die Anfrage bestätigen und erneut versuchen.
- Meist kann nur eine App oder ein Telefon eine Verbindung halten. Trenn zuerst deine eigene Test-App oder ein anderes Telefon.
Häufige Fragen
Was ist der Unterschied zwischen Notify und Indicate?
Kann ich Text statt Hex schreiben?
Warum sehe ich Connecting… und dann einen Fehler?
Kann ich Descriptors lesen?
Weitere Anleitungen für Periphery
- So findest du ein verlorenes Bluetooth-Gerät mit dem iPhone über die Signalstärke
- Eine Bluetooth-Scanner-App auf dem iPhone nutzen, um BLE-Geräte in der Nähe aufzulisten
- So identifizierst du ein unbekanntes Bluetooth-Gerät auf dem iPhone
- BLE-UUID-Lookup auf dem iPhone: Service-UUIDs eines Geräts finden und benennen
- So prüfst du die Bluetooth-Signalstärke auf dem iPhone
- Alle Fragen zu Periphery
- Zurück zu Periphery