GNU/Linux >> Znalost Linux >  >> Linux

Bluetooth Low Energy:poslouchání oznámení/indikací v linuxu

Vypadá to, že starší verze Bluez (hcitool &gatttool) neumožňuje zapisovat do zařízení Bluetooth Low Energy. Nakonec jsem nainstaloval novější verzi (5.17 v době psaní tohoto článku), abych povolil oznámení atd.

Chcete-li získat seznam všech vašich úchytů, můžete spustit následující:

char-desc

Poté můžete číst z popisovače:

char-read-hnd 0x000e

(výše uvedená rukojeť je pro můj nrf51822 stav baterie)

Kde je úchyt jedna ze seznamu, který jste získali z char-desc.

Stejně jako Tim řekl výše, můžete napsat na rukojeť související s oznámeními, abyste získali indikace nebo oznámení. (v mém případě mé zařízení mělo pouze oznámení)

char-write-req 0x000f 0100

(výše uvedený úchyt je pro mé upozornění na úroveň baterie nrf51822)

V mém případě by oznámení o baterii nemělo nic odesílat, dokud se úroveň baterie nezmění.

Napsal jsem docela dlouhý blogový příspěvek o nastavení s Bluez. Najdete ho zde:Začínáme s Bluetooth Low Energy Neváhejte a vyzkoušejte to!


Zkuste toto...

Spusťte gatttool -b <MAC Address> --interactive jako jsi to dělal předtím. Zobrazí se výzva a poté zadáte connect . Měli byste vidět CON ve výzvě oznamující, že jste se připojili k zařízení. Poté zadejte char-read-uuid 2902 . Měli byste získat seznam všech atributů CCC (Client Characteristic Configuration) na zařízení. Můžete je zkusit nastavit všechny na 0100, abyste dostávali upozornění, 0200 pro indikace, 0300 pro oba nebo 0000 pro vše vypnuté. Zadejte help zobrazit všechny příkazy a jejich argumenty.

UPRAVIT:

Použití --listen argument vyžaduje, abyste jej spojili s jinými příkazy, abyste zapnuli oznámení a/nebo indikace. Zde je příklad, který funguje v Bluez 4.101:

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

Je zřejmé, že musíte změnit rukojeť na rukojeť CCC, pro kterou chcete zapnout oznámení. Stále však považuji za jednodušší použít interaktivní režim.


Konečná odpověď pro čtení srdeční frekvence na 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

Chcete-li zachovat hodnotu CCC, musíte obě zařízení spárovat. jakmile jsou spárovány, nemusíte CCC znovu nastavovat. při příštím opětovném připojení najde nastavení, které se uloží do FLASH klíčenky. zkuste nakonfigurovat po spárování přes SMP.


Linux
  1. Linux – Hlasitost náhlavní soupravy Bluetooth je příliš nízká (pouze v oblouku)?

  2. Java (J2SE) Bluetooth Low Energy (BLE)

  3. Bluetooth Low Energy v C - pomocí Bluez vytvořit server GATT

  1. Odstraňování problémů s nedostatkem místa na disku pro cloudový server Linux

  2. Příkazový řádek Linuxu, jak přijmout párování pro zařízení bluetooth bez pinu

  3. Kde se nachází bluetooth/bluetooth.h v Linuxu?

  1. Příkazy FreeDOS pro fanoušky Linuxu

  2. 4 linuxové distribuce pro hraní her

  3. Nagios:Zakažte upozornění z příkazového řádku v systému Windows/Linux