GNU/Linux >> Belajar Linux >  >> Linux

Bluetooth Low Energy:mendengarkan notifikasi/indikasi di linux

Sepertinya Bluez versi lama (hcitool &gatttool) tidak memungkinkan Anda menulis ke perangkat Bluetooth Hemat Energi. Saya akhirnya menginstal versi yang lebih baru (5.17 saat tulisan ini dibuat) untuk mengaktifkan notifikasi, dll.

Untuk mendapatkan daftar semua pegangan Anda, Anda dapat menjalankan yang berikut:

char-desc

Anda kemudian dapat membaca dari pegangan:

char-read-hnd 0x000e

(pegangan di atas adalah untuk level baterai nrf51822 saya)

Di mana pegangannya adalah salah satu dari daftar yang Anda dapatkan dari char-desc.

Seperti yang dikatakan Tim di atas, Anda dapat menulis ke pegangan terkait notifikasi untuk mendapatkan indikasi atau notifikasi. (dalam kasus saya, perangkat saya hanya memiliki notifikasi)

char-write-req 0x000f 0100

(pegangan di atas adalah untuk notifikasi level baterai nrf51822 saya)

Dalam kasus saya, pemberitahuan baterai seharusnya tidak mengirim apa pun hingga level baterai berubah.

Saya menulis posting blog yang cukup panjang untuk mendapatkan penyiapan dengan Bluez. Anda dapat menemukannya di sini:Memulai dengan Bluetooth Hemat Energi Jangan ragu untuk mencobanya!


Coba ini...

Jalankan gatttool -b <MAC Address> --interactive seperti yang Anda lakukan sebelumnya. Anda akan mendapatkan prompt dan kemudian Anda mengetik connect . Anda akan melihat CON di prompt yang menunjukkan bahwa Anda telah terhubung ke perangkat. Kemudian ketik char-read-uuid 2902 . Anda harus mendapatkan daftar semua atribut CCC (Konfigurasi Karakteristik Klien) di perangkat. Anda dapat mencoba menyetel semuanya ke 0100 untuk mendapatkan notifikasi, 0200 untuk indikasi, 0300 untuk keduanya, atau 0000 untuk semuanya mati. Ketik help untuk melihat semua perintah dan argumennya.

EDIT:

Penggunaan --listen argumen mengharuskan Anda memasangkannya dengan perintah lain untuk mengaktifkan notifikasi dan/atau indikasi. Jadi, inilah contoh yang berfungsi di Bluez 4.101:

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

Jelas Anda perlu mengubah pegangan ke pegangan CCC yang ingin Anda nyalakan notifikasi. Namun, saya masih merasa lebih mudah menggunakan mode interaktif saja.


Jawaban terakhir untuk membaca detak jantung di 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

untuk mempertahankan nilai CCC Anda perlu memasangkan kedua perangkat. setelah dipasangkan, Anda tidak perlu menyetel CCC lagi. pada penyambungan kembali berikutnya akan menemukan pengaturan, yang akan disimpan dalam FLASH Key fob. coba konfigurasikan setelah memasangkan melalui SMP.


Linux
  1. Java (J2SE) Bluetooth Hemat Energi (BLE)

  2. Bluetooth Hemat Energi di C - menggunakan Bluez untuk membuat server GATT

  3. Nagios:Nonaktifkan notifikasi dari baris perintah di Windows/Linux

  1. Linux – Volume Headset Bluetooth Terlalu Rendah (Hanya Di Arch)?

  2. Memecahkan masalah ruang disk yang rendah untuk server cloud Linux

  3. Baris perintah Linux howto menerima pasangan untuk perangkat bluetooth tanpa pin

  1. Perintah FreeDOS untuk penggemar Linux

  2. 4 distribusi Linux untuk bermain game

  3. Di mana letak bluetooth/bluetooth.h di Linux?