Signatur
Beschreibung
Die Eigenschaft uuid eines BluetoothRemoteGATTService-Objekts enthält die eindeutige Kennung des Dienstes auf dem entfernten Bluetooth-Low-Energy-Gerät. Standardisierte Dienste wie Battery Service (0x180F) oder Heart Rate (0x180D) haben von der Bluetooth SIG vergebene Kurz-UUIDs. Die Eigenschaft liefert aber immer die vollständige 128-Bit-Form in Kleinbuchstaben.
Gebraucht wird sie vor allem, wenn Sie mit BluetoothRemoteGATTServer.getPrimaryServices() alle Dienste eines Geräts abrufen und dann herausfinden müssen, welcher Dienst welcher ist, etwa für Protokollausgaben, zur Fehlersuche oder um passende Behandlungsroutinen auszuwählen.
Mit BluetoothUUID.getService() können Sie Kurz-UUIDs (Zahlen) oder Dienstnamen wie 'battery_service' in die volle Form umwandeln. So vergleichen Sie zuverlässig mit dem Wert von uuid.
Rückgabewert
xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.Beispiele
UUID des Batterie-Dienstes ausgeben
// Muss durch eine Nutzeraktion ausgelöst werden (z. B. Klick)
const button = document.querySelector('#verbinden');
button.addEventListener('click', async () => {
try {
const device = await navigator.bluetooth.requestDevice({
filters: [{ services: ['battery_service'] }]
});
const server = await device.gatt.connect();
const service = await server.getPrimaryService('battery_service');
console.log('Dienst-UUID:', service.uuid);
} catch (err) {
console.error('Bluetooth-Fehler:', err.name, err.message);
}
});
Alle Dienste eines Geräts auflisten und benennen
const bekannteDienste = new Map([
[BluetoothUUID.getService('battery_service'), 'Batterie'],
[BluetoothUUID.getService('heart_rate'), 'Herzfrequenz'],
[BluetoothUUID.getService('device_information'), 'Geräteinformation']
]);
const listeDienste = async () => {
const device = await navigator.bluetooth.requestDevice({
acceptAllDevices: true,
optionalServices: ['battery_service', 'heart_rate', 'device_information']
});
const server = await device.gatt.connect();
const services = await server.getPrimaryServices();
for (const service of services) {
const name = bekannteDienste.get(service.uuid) ?? 'Unbekannt';
console.log(`${name}: ${service.uuid} (primär: ${service.isPrimary})`);
}
};
document.querySelector('#scan').addEventListener('click', listeDienste);
Kurz-UUID sicher vergleichen
// Vergleich mit einer 16-Bit-Kurz-UUID
const istHerzfrequenzDienst = (service) =>
service.uuid === BluetoothUUID.getService(0x180d);
// Falsch wäre: service.uuid === '180d' oder === 0x180d
console.log(BluetoothUUID.getService(0x180d));
// Wichtig · Fallstricke
- Schreibgeschützt: Eine Zuweisung an
uuidwird ignoriert (im strict mode gibt es einenTypeError). - Immer lange Form: Der Wert ist nie eine Kurz-UUID wie
'180f'oder ein Name wie'battery_service'. Für Vergleiche erst mitBluetoothUUID.getService()umwandeln. - Kleinbuchstaben: Eigene 128-Bit-UUIDs vor dem Vergleich mit
toLowerCase()normalisieren. - Browser-Unterstützung: Die Web-Bluetooth-API ist experimentell. Sie läuft nur in Chromium-Browsern (Chrome, Edge, Opera) auf Desktop und Android und nicht in Firefox oder Safari/iOS. Vor der Nutzung mit
'bluetooth' in navigatorprüfen. - Sicherer Kontext: Die API gibt es nur über HTTPS (oder
localhost).requestDevice()verlangt außerdem eine Nutzeraktion. - Freigabe der Dienste: Dienste, die weder in
filtersnoch inoptionalServicesstehen, sind nicht erreichbar. Sie tauchen dann auch nicht ingetPrimaryServices()auf.