Start · Sprachen · JavaScript · Referenz · BluetoothCharacteristicProperties.write

BluetoothCharacteristicProperties.write

Eigenschaft

Schreibgeschützter boolescher Wert, der <code>true</code> ist, wenn die GATT-Charakteristik Schreibvorgänge mit Bestätigung (Write Request) erlaubt.

seit JavaScript Chrome/Edge 56+, Opera 43+ (experimentell, nur sic Kategorie: webapi

Signatur

BluetoothCharacteristicProperties.write

Beschreibung

Die Eigenschaft write des Interfaces BluetoothCharacteristicProperties gibt an, ob eine Bluetooth-Low-Energy-Charakteristik (GATT) Schreibvorgänge mit Rückmeldung unterstützt. Bei einem solchen „Write Request“ bestätigt das Peripheriegerät jeden Schreibvorgang mit einer Antwort. Schlägt der Vorgang fehl, meldet das Gerät einen Fehler zurück.

Das Objekt erhalten Sie über BluetoothRemoteGATTCharacteristic.properties. Prüfen Sie write, bevor Sie writeValueWithResponse() aufrufen. So vermeiden Sie einen NotSupportedError und können in der Oberfläche passend reagieren, etwa einen Schreib-Button ausblenden.

Die Eigenschaft beschreibt nur, was die Charakteristik laut ihrer GATT-Deklaration kann. Sie sagt nichts darüber aus, ob der Schreibvorgang gerade tatsächlich gelingt: Verbindungsabbrüche, fehlende Kopplung oder Sicherheitsanforderungen des Geräts können trotzdem zu Fehlern führen. Für Schreibvorgänge ohne Bestätigung gibt es die separate Eigenschaft writeWithoutResponse.

Rückgabewert

Typ
boolean
Beschreibung
true, wenn die Charakteristik Schreibvorgänge mit Bestätigung erlaubt, sonst false.

Beispiele

Schreibfähigkeit einer Charakteristik prüfen

// Muss durch eine Nutzeraktion (z. B. Klick) ausgelöst werden
const button = document.querySelector('#verbinden');

button.addEventListener('click', async () => {
  const device = await navigator.bluetooth.requestDevice({
    filters: [{ services: ['heart_rate'] }]
  });
  const server = await device.gatt.connect();
  const service = await server.getPrimaryService('heart_rate');
  const characteristic = await service.getCharacteristic('heart_rate_control_point');

  console.log('Schreiben mit Rückmeldung:', characteristic.properties.write);
});
Schreiben mit Rückmeldung: true

Passende Schreibmethode automatisch wählen

const schreibeWert = async (characteristic, daten) => {
  const { write, writeWithoutResponse } = characteristic.properties;

  if (write) {
    // Gerät bestätigt den Schreibvorgang
    await characteristic.writeValueWithResponse(daten);
    return 'mit Rückmeldung geschrieben';
  }
  if (writeWithoutResponse) {
    await characteristic.writeValueWithoutResponse(daten);
    return 'ohne Rückmeldung geschrieben';
  }
  throw new Error('Charakteristik ist nicht beschreibbar');
};

// Aufruf, z. B. zum Zurücksetzen des Energiezählers
// const ergebnis = await schreibeWert(characteristic, Uint8Array.of(1));
// console.log(ergebnis);
mit Rückmeldung geschrieben

Alle Eigenschaften eines Dienstes auflisten

const listeCharakteristiken = async (service) => {
  const characteristics = await service.getCharacteristics();
  for (const c of characteristics) {
    const p = c.properties;
    console.log(c.uuid, {
      read: p.read,
      write: p.write,
      writeWithoutResponse: p.writeWithoutResponse,
      notify: p.notify
    });
  }
};
00002a39-0000-1000-8000-00805f9b34fb { read: false, write: true, writeWithoutResponse: false, notify: false }

// Wichtig · Fallstricke

  • Experimentell und nur eingeschränkt verfügbar: Web Bluetooth läuft nur in Chromium-basierten Browsern (Chrome, Edge, Opera). Firefox und Safari unterstützen die API nicht. Unter Linux muss sie teils per Flag aktiviert werden. Prüfen Sie die Verfügbarkeit mit 'bluetooth' in navigator.
  • Die API steht nur in sicheren Kontexten (HTTPS oder localhost) bereit. requestDevice() muss außerdem durch eine Nutzeraktion ausgelöst werden.
  • write ist schreibgeschützt: Eine Zuweisung wird ignoriert bzw. löst im Strict Mode einen TypeError aus.
  • true garantiert keinen erfolgreichen Schreibvorgang. Fangen Sie Fehler von writeValueWithResponse() immer ab, z. B. NetworkError bei getrennter Verbindung oder NotSupportedError.
  • Das ältere writeValue() gilt als veraltet. Nutzen Sie je nach Eigenschaft ausdrücklich writeValueWithResponse() oder writeValueWithoutResponse().
  • Bestimmte UUIDs stehen auf der Blockliste von Web Bluetooth und lassen sich unabhängig von write nicht beschreiben.