Получите RSSI от bluetooth-адаптера Raspberry3

Мне нужно знать, как я могу получить РЕАЛЬНЫЙ RSSI с неподключенного Bluetooth-устройства с помощью моего RPi3.

Я знаю, что есть программа с именем bluetoothctl, и я не знаю, как она работает, я ничего не могу найти о том, как она работает bluetootctl. Но когда я его использовал, я мог получить ВСЕ НАСТОЯЩИЕ RSSI ВСЕХ устройств Bluetooth, только со сканированием. (сканировать)

Я сделаю это.

1) bluetoothctl
2) сканировать (вы получите что-то вроде этого: "Device XX:XX:XX:XX:XX:XX RSSI: -48")

Это так просто, но проблема в том, что мне нужно работать с этими данными, я не могу получить эти данные для обработки позже. Поэтому мне нужен код на С++ (лучше), чтобы сделать это.

Я знаю hcitool, но вы должны быть на связи, и они не дадут вам данные, пока вы не окажетесь на расстоянии. Я не понимаю, как это работает bluetoothctl

Я пытаюсь сделать перенаправление вывода в журнал, но... я не могу этого сделать... потому что, когда вы включаете temrinal bluetoothctl, происходит следующее:


pi@raspberrypi:~ $ bluetoothctl

[НОВОЕ] Контроллер B8:27:EB:90:E8:79 raspberrypi [по умолчанию]

[Bluetooth]#


теперь вы можете использовать все команды bluetoothctl

Спасибо ;)


person pepinho    schedule 28.04.2016    source источник
comment
исходный код bluetoothctl находится в свободном доступе. Прочтите это, если хотите понять, как это делается. Подводя итог, можно сказать, что bluez экспортирует интерфейс DBUS. Вы можете использовать это для сканирования устройств и чтения свойств устройства.   -  person kaylum    schedule 29.04.2016


Ответы (3)


Посмотрите на источник, как сказал Кайлум.

В папке doc вы найдете документацию по hci и dbus.

Также можно взять исходник bluetoothctl (имеется в папке client) и сделать вокруг него обертку под свои нужды. Он использует помощник библиотеки dbus, разработанный в папке gdbus.

person Alexandre Guyon    schedule 29.04.2016

вы можете увидеть значение rssi с помощью команды hcidump [-a], но убедитесь, что Bluetooth включен в фоновом режиме, поэтому вы можете просто начать сканирование, как обычно делаете в Bluetoothctl, а затем включить сканирование, оставьте это в фоновом режиме и в новой командной строке используйте команду hcidump Это может вам помочь. См. также: http://www.linuxcommand.org/man_pages/hcidump8.html

person Aaron.0    schedule 26.04.2017

Вы можете использовать следующее из командной строки

sudo btmon |grep RSSI & sudo hcitool scan

Или, если вы хотите использовать python, вы можете использовать запрос с помощью rssi пример, найденный в модуле pybluez.

Другим вариантом может быть использование скелетного класса DeviceDiscoverer, найденного в этом пример, а затем адаптируйте его под свои нужды. Функция обнаружения устройства передается в rssi, который можно хранить и использовать в соответствии с требованиями.

person Varij Gosine    schedule 30.01.2018