Как мы получаем значения RSSI от маяков Bluetooth (estimote, чтобы быть конкретными) в Linux?

Я должен получить расстояния от нескольких маяков Bluetooth для триангуляции так, чтобы я мог сделать внутреннее расположение. Я попытался предоставить как можно больше соответствующей подробной информации. Этот проект для RPi, но я в настоящее время пытаюсь протестировать его через свой ноутбук сначала. Я попробовал большую часть того, что я могу найти в Интернете об этом:

Лучшим способом я мог найти для получения, значения rssi был hcitool rssi <address of beacon>

Отсюда https://stackoverflow.com/questions/24417017/bluetooth-le-signal-strength-linux

Для тестирования этого я пытался получить его для своего мобильного телефона сначала. Это показало"Not Connected". Я думал, что должен соединиться сначала, таким образом, я попробовал много способов подключить мой мобильный телефон:

a) hcittol cc <address of mobile>

b) gatttool -b <address of mobile> -t random --interactive

c) rfcomm connect 0 <address of mobile> 10

В каждом случае, когда я нажал пару в своем мобильном телефоне, завершенное соединение.

Затем я соединил свой мобильный телефон обычный путь из меню Bluetooth и затем попробовал hcitool rssi <Address of mobile> который затем наконец возвратил значение -8.

Теперь, когда у меня был он для моего мобильного телефона, я теперь переместился в маяки.

Затем я попробовал то же за свои маяки. На этот раз я должен был сначала сделать hcitool lescan для получения адресов доступных маяков затем соединяются с одним из маяков с помощью команды hcitool lecc <address of beacon> который возвратил ошибку Could not create connection: Connection timed out Таким образом, затем я снова пытался соединиться с другими двумя путями:

rfcomm connect 0 <address of beacon> 10 который возвратил ошибку Can't connect RFCOMM socket: Host is down когда я могу быть уверен, что hci0 произошел.

Затем я попробовал sudo gatttool -b F1:15:A7:E3:17:63 --interactive после которого открытого интерактивного режима и я дал команду connect. Это дало различные ошибки после Attempting to connect to <address of beacon>, главным образом connect error : Connection timed out и Error: connect error: Connection refused (111)

Затем я читал, я должен использовать -t random от https://stackoverflow.com/questions/22213793/bluetooth-le-on-raspbian, https://ubuntuforums.org/showthread.php? t=2204808 и друг друг источник, который я не могу найти прямо сейчас.

Таким образом, я вошел sudo gatttool -b F1:15:A7:E3:17:63 -t random --interactive в, котором когда я дал connect команда, я получил ошибку Error: connect error: Device or resource busy (16) и также иногда Error: connect error: Input/Output Error

затем я считал, что, возможно, должен перезапустить свой hci0 hciconfig hci0 down и затем hciconfig hci0 up который добился цели, маяк теперь подключился.

Но затем, это быстро было разъединено после высказывания 'Бойкого ПРЕДУПРЕЖДЕНИЯ **: Недопустимый дескриптор файла.

'Я читал здесь https://raspberrypi.stackexchange.com/questions/53982/how-to-fix-gatttools-glib-warning-invalid-file-descriptor, что это из-за плохих соединений. Я пытался сохранить маяки ближе, но это сделало то же.

Таким образом, я пытался так или иначе, по крайней мере, получают одно значение rssi во время короткой продолжительности, это соединено. Но, даже когда это было таким образом соединено, я сделал hcitool rssi <address of beacon> ошибка прибыла как это:

hcitool rssi F1:15:A7:E3:17:63
Get connection info failed: No such file or directory

Которого я еще не нашел надлежащее решение.

Я попробовал другой способ считать значение rssi, которое дало следующее:

hcidump -R
HCI sniffer - Bluetooth packet analyzer ver 5.37
device: hci0 snap_len: 1500 filter: 0xffffffffffffffff
> 04 0E 04 01 0B 20 00 
> 04 0E 04 01 0C 20 00 
> 04 0E 04 01 0C 20 00 
> 04 0F 04 00 01 0D 20 
> 04 0F 04 00 01 16 20 
> 04 0F 04 00 01 13 20 

Это было, прежде чем это было разъединено. Я читал здесь https://stackoverflow.com/questions/37073114/obtain-rssi-with-hcidump, который сказал для чтения 14-го байта. начиная со всех они, казалось, были шестнадцатеричными числами, это будет означать, что каждое число составляет 1 байт. Но этот путь, у меня только есть 7 чисел на строку, как я могу считать 14-й байт?

Получение расстояния от маяков беспокоило меня много и израсходовало много моего времени. Выручите меня по этой проблеме. Если бы можно помочь мне найти, что ресурс помогает мне сделать так, я ценил бы справку.

3
задан 23 May 2017 в 15:39

2 ответа

Возможно, что Ваши маяки активно отказываются от Вашего соединения, чтобы экономить на питании, но просто считать мощность сигнала Вы не должны должны быть соединяться, поскольку они должны быть широковещательными та информация так или иначе.

я не мог заставить hcidump давать мне информацию, которую я искал так вместо этого, я использовал btmon и имел большой успех, получая RSSI от моих маяков BLE:

btmon &
hcitool lescan --duplicates
1
ответ дан 1 December 2019 в 15:51

Я протестировалsudo btmgmt find и получил значения RSSI.

Отредактированный вывод:

hci0 dev_found: xx:xx:xx:xx:xx:xx type BR/EDR rssi -86 flags 0x0003
eir_len 5

(xx заменяются мной),

Протестированный на скрипучем нуле w

Возможно, это - то, что Вы ищете.

3
ответ дан 1 December 2019 в 15:51

Другие вопросы по тегам:

Похожие вопросы: