Estoy tratando de construir una plataforma iot que tome los datos del sensor a través de un reloj inteligente y los pase a Raspberry pi (BLE Gateway) y los envíe al servidor web. Utilicé https://github.com/noble/noble JS, pude conectarme para mirar y puedo ver las características y los servicios, pero no puedo obtener los datos. Así es como escribí
const noble = require('@abandonware/noble') noble.on('stateChange', async (state) => { if (state === 'poweredOn') { await noble.startScanningAsync([], false); } else { noble.stopScanningAsync(); } }); noble.on('discover', async (peripheral) => { console.log(peripheral.id) if (peripheral.id === "xxxxxxxxxx") peripheral.connectAsync(() => { peripheral.discoverServices(['fff0'], async (e, services) => { services[0].discoverCharacteristics(['fff7'], async (e, characteristics) => { const chara = characteristics[0] chara.once('read', (data) => { console.log(data); }) chara.once('notify', async function (isNotification) { console.log('Notification', isNotification); }) chara.readAsync(async (error, data) => { console.log(data); }) }) }) }) })Me comuniqué con el fabricante del reloj y me dijeron que tengo que pasar los datos de 16 bytes, por lo que, por ejemplo, para obtener la batería, necesito pasar
0x13 AA 00 00 00 00 00 00 00 00 00 00 00 00 00 00 CRCPero nunca me dijeron cómo pasar o qué idioma usar. Me dijeron que pasara por el protocolo BLE, pero esto es un poco confuso. Alguien tiene alguna idea, ¿cómo se puede hacer esto? ¿Necesito usar python para pasar el comando de 16 bytes y obtener una respuesta? Gracias