Я несколько дней играл с этим плагином, пытаясь заставить приложение Cordova и устройство BLE общаться друг с другом. Устройство представляет собой так называемый «itag», брелок, купленный на ebay, цель которого ~ = «не теряйте свои ключи».
Что я мог сделать: -подключиться к устройству и получить некоторые из его характеристик - прочитайте состояние кнопки, а также уровень заряда батареи с помощью ble.read(..)
- сделайте кольцо устройства с помощью ble.writeWithoutResponse(..)
Что я не смог сделать (и это причина этого поста): -был уведомлен, когда нажата кнопка устройства.
ble.startNotification(device.id, "ffe0", "ffe1", success, fail)
результат - сбой ответа на функцию: «сбой установки уведомления для 0000ffe1-0000-1000-8000-00805f9b34fb»
Вот устройство характеристики, опубликованные при подключении:
{"name":"MLE-15","id":"FF:FF:F0:00:7D:A2","advertising":{},"rssi":-56,
"services":["1800","180f","1802","ffe0"],
"characteristics":[
{"service":"1800","characteristic":"2a00","properties":["Read","Notify"]},
{"service":"1800","characteristic":"2a01","properties":["Read"]},
{"service":"180f","characteristic":"2a19","properties":["Read","Notify"]},
{"service":"1802","characteristic":"2a06","properties":["WriteWithoutResponse","Write","Notify"]},
{"service":"ffe0","characteristic":"ffe1","properties":["Read","Notify"]}]}
Вот код:
ble.scan([], 5, scan_success, scan_fail);
function scan_success(device) {
ble.connect(device.id, connect_success, connect_fail);
}
function scan_fail() {
alert('error during scan');
}
function connect_success(device) {
console.log(JSON.stringify(device));
ble.startNotification(device.id, "ffe0", "ffe1", success, fail);
}
function connect_fail(device) {
alert('error during connect');
}
var success = function(buffer) {
// Decode the ArrayBuffer into a typed Array based on the data you expect
var data = new Uint8Array(buffer);
alert("device answers: " + data[0]);
}
var fail = function(buffer) {
alert(buffer);
}
Любая помощь приветствуется!