Sto facendo un po' di esperimenti con il supporto bluetooth per browser in relazione ad dispositivo ITag (non quello di Apple...la versione cinese)
ITag Anti Lost smart bluetooth tracker
Il dispositivo espone alcuni servizi .. a me interessa il Custom Service che corrisponde ad una notifica legata alla pressione del pulsante
da questo link si osserva che l'UUID del servizio e della caratteristica non e' costante tra i vari dispositivi che sono in vendita
#define SERVICE_UUID1 "0000ffe0-0000-1000-8000-00805f9b34fb" | |
#define SERVICE_UUID2 "0000fff0-0000-1000-8000-00805f9b34fb" | |
#define CHAR_UUID1 "0000ffe1-0000-1000-8000-00805f9b34fb" | |
#define CHAR_UUID2 "0000fff1-0000-1000-8000-00805f9b34fb" |
Per accendere si preme il pulsante per 3 secondi e si sente un doppio beep, per spengere sempre 3 secondi di pulsante con lungo segnale acustico. Per alcune impostazione, come la disattivazione della suoneria si puo' usare la app Kindelf per Android ed IOS
Per prima cosa c'e' da dire che non e' una passeggiata ed il supporto delle API al momento e' molto limitato ...praticamente solo Chrome
In ogni caso anche per Chrome si deve abilitare esplicitamente le API tramite
chrome://flags/#enable-experimental-web-platform-features
nonostante avere abilitato la flag non ho trovato il sistema per rendere affidabile la comunicazione tra il pulsante e il computer...inoltre c'e' da segnalare che Chrome su IOS non ha la possibilita' di abilitare questo flag (non e' presente nella lista)
Utilizzando chrome://bluetooth-internals/#adapter si puo' verificare che non tutte le funzionalita' sono ancora implementate (se si apre il widget di ricerca del sistema operativo per fare una scansione il discovering da browser diventa rosso)
questa schermata e' stata fatta su un Lenovo T470 con RHEL
Per i test ho trovato questa applicazione in ReactJS
Per installarla si inizia con
git clone https://github.com/rdeprey/web-bluetooth-starter
npm install -g create-react-app
npm install --global yarn
npm install (per scaricare le librerie collegate)
npm start (per lanciare il programma)per creare una versione da inserire in produzione si puo' digitare npm run build oppure yarn build (verra' creata una directory build in cui sono contenuti i file da mettere sul server di produzione)
Una volta avviato il programma si riesce ad ottenere la prima notifica di pressione del pulsante e subito dopo viene generato l'errore
index.js:1 Uncaught Error: The error you provided does not contain a stack trace.
at M (index.js:1:1)
at ee (index.js:1:1)
at index.js:1:1
at index.js:1:1
at l (index.js:1:1)
M @ index.js:1
ee @ index.js:1
(anonymous) @ index.js:1
(anonymous) @ index.js:1
l @ index.js:1
localhost/:1 Uncaught (in promise) DOMException: GATT Error: Not supported