Как заставить веб-Bluetooth отправлять несколько событий `характеристика-значение`?

[Перефразируя разговор IRC]

Попытка построить датчик температуры с Ardunio и датчиком DHT11 и датчиком Bluetooth HM10. При получении значений температуры с помощью веб-Bluetooth, но, похоже, не срабатывает characteristicvaluechanged событие. Это только дает начальное значение.

document.querySelector('button')
    .addEventListener('click', connectBluetooth)


function connectBluetooth() {
    navigator.bluetooth
        .requestDevice({
            optionalServices: [ 0xffe0 ],
            acceptAllDevices: true
        })
        .then(device => device.gatt.connect())
        .then(server => server.getPrimaryService(0xffe0))
        .then(service => service.getCharacteristic(0xffe1))
        .then(characteristic => {
            characteristic.addEventListener('characteristicvaluechanged',
                                            handleValueChanged)

            return characteristic.readValue()
        })
        .catch(err => console.error(err))
}

function handleValueChanged(event) {
    console.log('Handling...')
    let value = event.target.value.getUint8(0)

    console.log(`The value is: ${value}`)
}

1 ответ

Вы никогда не подписывались на уведомления. См. https://googlechrome.github.io/samples/web-bluetooth/notifications.html для примера. Регистрация слушателя события не достаточно, вы также должны позвонить characteristic.startNotifications(), readValue возвращал один результат, так что просто замените его на startNotifications,

Другие вопросы по тегам