Как заставить веб-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
,