GNU/Linux >> Belajar Linux >  >> Linux

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

Saya mendapatkan contoh server GATT yang berjalan untuk BlueZ 5.31 (terbaru pada posting ini):

Lingkungan saya:
Gelandangan
Kotak Virtual
Ubuntu Trusty Tahr sebagai OS tamu (v. 14.04 OS 32-bit)
Diperbarui ke kernel linux 3.19
Paket yang diinstal:
* libglib2.0-dev
* libdbus-1-dev
* libudev-dev
* libical-dev
* libreadline-dev

Mengunduh BlueZ 5.31 dari sini:https://www.kernel.org/pub/linux/bluetooth/bluez-5.31.tar.xz
Instalasi kernel yang diperbarui (v.3.19):
pembaruan sudo apt-get
sudo apt-get install --install-recommends linux-generic-lts-vivid

Reboot diperlukan. Saya menggunakan Vagrant dan kehilangan akses folder bersama. Jika ini terjadi pada Anda, tunggu gelandangan melaporkan kesalahan dan tetap masuk ke VM (gelandangan ssh). Di VM, keluarkan perintah ini untuk memperbaiki masalah folder bersama:
pengaturan sudo /etc/init.d/vboxadd

Saya akan reboot lagi (mungkin tidak perlu), untuk memeriksa apakah folder bersama sudah aktif kembali.
Setelah kembali ke VM, lanjutkan instalasi BlueZ 5.31:
cd ~
sudo apt-get install libglib2.0-dev libdbus-1-dev libudev-dev libical-dev libreadline-dev
wget https://www.kernel.org/pub/linux/bluetooth/bluez-5.31.tar.xz
tar xvf bluez-5.31.tar.xz
cd bluez-5.31
./configure --prefix=/usr --mandir=/usr/share/man --sysconfdir=/etc --localstatedir=/var --disable-systemd --enable-experimental --enable-maintainer-mode
membuat
sudo buat instal
sudo cp attrib/gatttool /usr/bin

Instalasi selesai. Periksa sebagai berikut:
hciconfig
Anda harus mendapatkan respons tindak (atau yang serupa):
hci0:Jenis:BR/EDR Bus:USB
Alamat BD:00:1A:7D:DA:71:0C ACL MTU:310:10 SCO MTU:64:8
TURUN
RX byte:15528 acl:126 sco:0 peristiwa:683 kesalahan:0
TX byte:6459 acl:146 sco:0 perintah:234 kesalahan:0

Konfigurasikan adaptor Bluetooth, mulai beriklan, mulai contoh server GATT (layanan detak jantung) dengan verbose aktif (adaptor saya adalah hci0):
cd direktori BlueZ 5.31
alat sudo/btmgmt -i hci0 matikan
sudo tools/btmgmt -i hci0 le on
alat sudo/btmgmt -i hci0 dapat dihubungkan
sudo tools/btmgmt -i hci0 name "beberapa nama ramah "
sudo tools/btmgmt -i hci0 beriklan aktif
alat sudo/btmgmt -i hci0 hidupkan
tools/btgatt-server -i hci0 -s rendah -t publik -r -v

Buka perangkat lain (saya telah menggunakan iPod, Android -- tablet Samsung Galaxy 5S dan Nexus -- dan PC lain yang menjalankan BlueZ) dan sambungkan ke layanan. Inilah cara saya melakukannya di PC lain yang menjalankan BlueZ:
gatttool -b Alamat MAC server GATT -SAYA
Menghubung
utama
karakteristik

Anda dapat mengeluarkan perintah lain untuk membaca dan menulis ke server GATT.

Saya juga telah membuat server GATT khusus (permintaan asli Anda) dengan menyalin dan mengedit file ini:tools/btgatt-server.c . Anda dapat mengedit file Makefile.tools untuk memasukkan server khusus Anda ke dalam build. Anda harus menjalankan automake, make, dan sudo make install untuk menjalankannya.


1) buka folder Bluez

2) sudo ./configure --prefix=/usr --mandir=/usr/share/man --sysconfdir=/etc --localstatedir=/var --disable-systemd --enable-experimental --enable-maintainer- modus

3) sudo buat semua

4) Iklankan paket yang dapat dihubungkan

aktifkan bluetooth

sudo hciconfig hci0 ke atas

menyetel data iklan:"hello world"

sudo hcitool -i hci0 cmd 0x08 0x0008 48 45 4c 4c 4f 57 4f 52 4c 44

mulai beriklan sebagai yang dapat dihubungkan

sudo hciconfig hci0 leadv 0

5) layanan sudo bluetooth berhenti

6) sudo src/bluetoothd -d -n

7) Dari PC lain, ketik (Change MAC id gatt server mac)

gatttool -b gatt_server_mac --interaktif

langkah 6 adalah jika Anda ingin mengkompilasi plugins/gatt-example.c

jika Anda ingin mengkompilasi server.c dari profil/waktu atau profil/peringatan (ganti dengan peringatan di tempat waktu) atau file lain di folder profil ganti langkah 6

sudo src/bluetoothd --plugin=waktu -n


Saya mendapatkan pertanyaan ini beberapa kali dalam pencarian saya untuk server GATT mandiri untuk C. Jawabannya di sini memerlukan pembangunan server GATT Anda dengan tumpukan BlueZ. BlueZ menambahkan dukungan D-Bus untuk mengizinkan server GATT mandiri dan bahkan menyertakan contoh server GATT mandiri untuk Python, tetapi tidak untuk C.

Masih membutuhkan server, saya mulai mengerjakan salah satunya dengan tujuan untuk merilis sampel, tetapi implementasi minimum pun masih lebih banyak kode daripada yang membuat saya nyaman memanggil sampel .

Implementasi awal dilakukan sekarang dan telah dirilis di bawah LGPL (edit:lisensi diubah dari GPL-3 ke LGPL):

https://github.com/nettlep/gobbledegook

Jika itu membantu seseorang, keren. Jika itu membantu seseorang yang telah merilis kode yang telah membantu saya, lebih baik lagi.


Linux
  1. Pitchfork:Buat server

  2. Bagaimana cara menginstal Pdftk di server saya?

  3. Bluetooth Low Energy:mendengarkan notifikasi/indikasi di linux

  1. BlueZ:Cara menyiapkan server GATT dari baris perintah

  2. Perpustakaan Bluetooth untuk BlueZ (Windows)

  3. Java (J2SE) Bluetooth Hemat Energi (BLE)

  1. Bagaimana Cara Ssh Ke Server Menggunakan Server Lain??

  2. Gunakan petunjuk penjadwal untuk membuat server

  3. Menggunakan log server