RSSI мониторинг в Python (PyBluez) - PullRequest
0 голосов
/ 01 мая 2020

В рамках более крупной программы я пытаюсь отслеживать значение RSSI устройства (к которому я подключен) несколько раз в секунду. Я использую PyBluez с Python3 на Raspberry Pi с Raspbian Buster. Поскольку мне нужно было бы получать считывание rssi по крайней мере раз в секунду, обычное обнаружение устройств не работает, поскольку оно сканирует в течение нескольких секунд и для всех доступных устройств. Это: https://github.com/FrederikBolding/bluetooth-proximity/blob/master/bt_proximity/bt_rssi.py имеет несколько многообещающих примеров, но, к сожалению, возникает несколько проблем. Кажется, что сам тестовый код получает некоторые ошибки кодирования, и я не достаточно знаком с ним, чтобы решить его самостоятельно.

Существует ли несколько более простой способ измерения rssi подключенного устройства? У PyBluez нет ничего подобного? (к сожалению, документация отвратительна ...) Честно говоря, на данный момент почти все, что на самом деле работает, было бы хорошо.

Ps. Приведенный выше тестовый сценарий выполняется некоторое время (с некоторыми обходными путями…), но дает показание 0, если два устройства не находятся на расстоянии нескольких сантиметров. Я знаю, что RSSI довольно неточен, но было бы неплохо хотя бы получить некоторые полезные показания.

Заранее спасибо!

РЕДАКТИРОВАТЬ:

Ошибка кодирования:

Traceback (most recent call last):
  File "/usr/lib/python3.7/threading.py", line 917, in _bootstrap_inner
    self.run()
  File "/usr/lib/python3.7/threading.py", line 865, in run
    self._target(*self._args, **self._kwargs)
  File "/home/pi/KEX/PKE_key_0.5/bt_rssi.py", line 101, in bluetooth_listen
    rssi = b.request_rssi()
  File "/home/pi/KEX/PKE_key_0.5/bt_rssi.py", line 63, in request_rssi
    bt.OCF_READ_RSSI, bt.EVT_CMD_COMPLETE, 4, self.cmd_pkt)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position 3: invalid start byte
...