Freigeben über


Bluetooth-Näherungsprofil

Das Näherungsprofil definiert zwei Rollen, die es Geräten ermöglichen sollen, ihre Nähe zu erkennen.

Die beiden Rollen werden aufgerufen:

  • Der Näherungsreporter
  • Näherungsmonitor

Diagramm zur Veranschaulichung der Beziehung zwischen den Rollen

Näherungsreporter

Der Näherungsreporter muss ein generischer ATTribute-Server (GATT) sein.

Der Näherungsreporter unterstützt die folgenden GATT-Dienste:

  • Linkverlustdienst (obligatorisch)
  • Sofortwarnungsdienst (optional)
  • Tx Power Service (optional)

Näherungsmonitor

Der Näherungsmonitor ist der GATT-Client. Es sollte eine Verbindung mit dem Näherungsreporter herstellen und aufrechterhalten und die Informationen zur Funksignalstärke (oder RSSI) der Verbindung überwachen, um den Pfadverlust des Signals zu berechnen. Wenn der optionale Tx Power Service im Näherungsreporter verfügbar ist, kann er diese zusätzlichen Informationen auch verwenden, um den RSSI-Wert zu normalisieren, indem die RSSI vom Tx Power Level subtrahiert wird.

Unterstützung für GATT in Windows

Wenn ein GATT-Gerät mit Windows gekoppelt wird, wird das Gerät Teil des Systems. Windows stellt Geräteobjekte bereit, die sowohl das Gerät als auch die primären Dienste darstellen, die vom Gerät gemeldet werden.

Der Windows.Devices.Bluetooth.GenericAttributeProfile-Namespace beschreibt die generischen Attributprofil-APIs, die Entwickler in Windows verwenden können.

Einer der ersten Schritte bei der Entwicklung einer Geräte-App besteht darin, zu ermitteln, welche Bluetooth-Dienste die App benötigt, um die Szenarien zu erreichen, die einem Benutzer wichtig sind. Für das Näherungsprofil muss die Geräte-App den Link loss Service und optional den Sofortwarnungsdienst und den Tx Power Service verwenden.

Die Geräte-App sollte die im Windows.Devices.Enumeration-Namespace verfügbaren APIs verwenden, um zu bestimmen, ob geräte, die mit Windows gekoppelt sind, den Link Loss Service implementieren. Verwenden Sie insbesondere die DeviceInformation.FindAllAsync-Methode .

Die DeviceInformation.FindAllAsync-Methode verwendet eine AQS-Geräteauswahl (Advanced Query Syntax) als Parameter, um nur Geräte zu filtern, die den Link Loss Service enthalten. Geräte-App-Entwickler können auch die Methoden GetDeviceSelectorFromUuid oder GetDeviceSelectorFromShortId der GattDeviceService-Klasse verwenden, sodass sie den AQS-Filter nicht manuell erstellen müssen.

Der Link Loss Service ist ein bluetooth GATT-Dienst, der von der Bluetooth SIG definiert wird. Daher kann anstelle einer vollqualifizierten UUID eine kurze ID verwendet werden.

Die für einen Näherungsprofildienst zugewiesenen Kurz-ID-Dienst-IDs sind:

Service Name Kurz-ID
Linkverlust 0x1803
Sofortige Warnung 0x1802
Tx Power 0x1804

Die Bluetooth SIG verwaltet die aktuellste Liste der Dienste im Dokument mit den zugewiesenen Nummern.

Nachdem Sie ermittelt haben, welchen Dienst Sie verwenden möchten, rufen Sie GattDeviceService.FromIdAsync auf, um eine instance des Diensts zu erhalten.

Nachdem Sie ein gültiges GattDeviceService-Objekt abgerufen haben, verwenden Sie es, um mit dem Gerät über die Windows.Devices.Bluetooth.GenericAttributeProfile-API zu kommunizieren.

Diese APIs ermöglichen den Zugriff auf bestimmte Dienste und deren Objekte (z. B. Eingeschlossene Dienste, Merkmale und Deskriptoren) sowie Lese- und Schreibfunktionen.

Im Beispiel "Generisches Bluetooth-Attributprofil – Herzfrequenzdienst " werden einige dieser Techniken veranschaulicht.

Effiziente Energienutzung

Die Unterstützung für Bluetooth Low Energy in Windows konzentriert sich stark auf die effiziente Nutzung von Energie. Dieser Fokus umfasst die Reduzierung des Stromverbrauchs für den lokalen Bluetooth-Funkadapter und die Verwendung der CPU so wenig wie möglich.

Um eine Bluetooth LE-Verbindung herzustellen, muss eine App daher einen Handler für das GattCharacteristic.ValueChanged-Ereignis registrieren. Alternativ muss die App eine der Methoden GattCharacteristic.ReadValueAsync, GattCharacteristic.WriteValueAsync oder GattCharacteristic.WriteClientCharacteristicConfigurationDescriptorAsync aufrufen, ohne die Option BluetoothCacheMode.Cached anzugeben.

Hinweis

Um den Stromverbrauch zu minimieren, überwacht Windows den RSSI-Wert des Links nicht aktiv, indem der lokale Bluetooth-Funkcontroller abgerufen wird.

Überlegungen zur Energieversorgung werden unter Details zur Implementierung von Näherungsprofilen beschrieben.