GNU/Linux >> Linux Esercitazione >  >> Linux

Bluetooth Low Energy:ascolto di notifiche/indicazioni in Linux

Sembra che la versione precedente di Bluez (hcitool e gatttool) non ti consenta di scrivere su dispositivi Bluetooth Low Energy. Ho finito per installare una versione più recente (5.17 al momento della stesura di questo documento) per abilitare le notifiche, ecc.

Per ottenere un elenco di tutti i tuoi handle puoi eseguire quanto segue:

char-desc

Puoi quindi leggere da un handle:

char-read-hnd 0x000e

(la maniglia sopra è per il mio livello di batteria nrf51822)

Dove l'handle è uno della lista che hai ottenuto da char-desc.

Proprio come ha detto Tim sopra, puoi scrivere all'handle relativo alle notifiche per ottenere indicazioni o notifiche. (nel mio caso il mio dispositivo aveva solo notifiche)

char-write-req 0x000f 0100

(l'handle sopra è per la mia notifica del livello della batteria nrf51822)

Nel mio caso la notifica della batteria non dovrebbe inviare nulla finché il livello della batteria non è cambiato.

Ho scritto un post sul blog piuttosto lungo su come ottenere la configurazione con Bluez. Puoi trovarlo qui:Inizia con Bluetooth Low Energy Sentiti libero di provarlo!


Prova questo...

Esegui gatttool -b <MAC Address> --interactive come facevi prima. Riceverai un prompt e quindi digiti connect . Dovresti vedere un CON nel prompt che indica che sei connesso al dispositivo. Quindi digita char-read-uuid 2902 . Dovresti ottenere un elenco di tutti gli attributi CCC (Client Characteristic Configuration) sul dispositivo. Puoi provare a impostarli tutti su 0100 per ricevere notifiche, 0200 per indicazioni, 0300 per entrambi o 0000 per tutto disattivato. Digita help per vedere tutti i comandi e i loro argomenti.

MODIFICA:

L'uso del --listen L'argomento richiede di accoppiarlo con altri comandi per attivare le notifiche e/o le indicazioni. Quindi ecco un esempio che funziona in Bluez 4.101:

gatttool -b <MAC Address> --char-write-req --handle=0x0031 --value=0100 --listen

Ovviamente devi cambiare l'handle con l'handle del CCC per il quale vuoi attivare le notifiche. Tuttavia, trovo ancora molto più semplice utilizzare solo la modalità interattiva.


Risposta finale per la lettura della frequenza cardiaca su Mio Alpha :

gatttool -b xx:xx:xx:xx:xx:xx -t random --char-write-req -a 0x0025 -n 0100 --listen

Characteristic value was written successfully
Notification handle = 0x0024 value: 10 4b 33 03 
Notification handle = 0x0024 value: 10 4b 33 03 
Notification handle = 0x0024 value: 10 4b 33 03 
Notification handle = 0x0024 value: 10 4a 3e 03 
Notification handle = 0x0024 value: 10 4c 28 03 28 03 
Notification handle = 0x0024 value: 10 4c 28 03 
Notification handle = 0x0024 value: 10 4b 33 03 
Notification handle = 0x0024 value: 10 4a 3e 03 3e 03

per mantenere il valore CCC è necessario accoppiare i due dispositivi. una volta accoppiati non è necessario reimpostare il CCC. alla successiva riconnessione ritroverà l'impostazione , che verrà salvata nella FLASH del portachiavi. provare a configurare dopo l'associazione tramite SMP.


Linux
  1. Riga di comando di Linux come accettare l'associazione per il dispositivo Bluetooth senza pin

  2. Dove si trova bluetooth/bluetooth.h in Linux?

  3. Java (J2SE) Bluetooth a basso consumo energetico (BLE)

  4. Bluetooth Low Energy in C - utilizzo di Bluez per creare un server GATT

  5. Nagios:disabilita le notifiche dalla riga di comando su Windows/Linux

Come controllare le porte di ascolto in Linux (porte in uso)

Le migliori distribuzioni per il gioco su Linux

25 libri gratuiti per imparare Linux gratuitamente

Trasforma il tuo PC Linux in altoparlanti Bluetooth per il tuo telefono

Sistema operativo Zorin per principianti Linux

I 10 migliori strumenti di notifica della posta per il sistema Linux