Start · Sprachen · JavaScript · Referenz · BluetoothRemoteGATTService.uuid

BluetoothRemoteGATTService.uuid

Eigenschaft

Schreibgeschützte Eigenschaft, die die UUID des GATT-Dienstes als kleingeschriebenen 128-Bit-String zurückgibt, z. B. <code>0000180f-0000-1000-8000-00805f9b34fb</code>.

seit JavaScript Experimentell: Chrome/Edge 56+, Opera; nicht in Fi Kategorie: webapi

Signatur

BluetoothRemoteGATTService.uuid

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

Typ
string
Beschreibung
Die 128-Bit-UUID des Dienstes als kleingeschriebener String im Format 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);
  }
});
Dienst-UUID: 0000180f-0000-1000-8000-00805f9b34fb

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);
Batterie: 0000180f-0000-1000-8000-00805f9b34fb (primär: true) Geräteinformation: 0000180a-0000-1000-8000-00805f9b34fb (primär: true)

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));
0000180d-0000-1000-8000-00805f9b34fb

// Wichtig · Fallstricke

  • Schreibgeschützt: Eine Zuweisung an uuid wird ignoriert (im strict mode gibt es einen TypeError).
  • Immer lange Form: Der Wert ist nie eine Kurz-UUID wie '180f' oder ein Name wie 'battery_service'. Für Vergleiche erst mit BluetoothUUID.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 navigator prü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 filters noch in optionalServices stehen, sind nicht erreichbar. Sie tauchen dann auch nicht in getPrimaryServices() auf.