измерение RSSI в среде python
возникла потребность мерить RSSI сигнал доступных точек WiFi python 3.* операционная система Ubuntu какую библиотеку можете посоветовать? в библиотеке WiFi не нашёл метода для отображения сигнала, а в библиотеке RSSI при вызове метода. getAPinfo() возникает проблема не совпадения типов
вот такую выдаёт ошибку
import rssi
interface='wlx50465daf79c1'
rssi_scanner = rssi.RSSI_Scan(interface)
rssi_scanner.getAPinfo(sudo=True)
Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/home/sampo/.local/lib/python3.6/site-packages/rssi/__init__.py", line 305, in getAPinfo all_access_points = self.formatCells(raw_scan_output) File "/home/sampo/.local/lib/python3.6/site-packages/rssi/__init__.py", line 203, in formatCells raw_cells = raw_cell_string.split('Cell') # Divide raw string into raw cells <rssi.RSSI_Scan object at 0x7f965a721710>
Ответы (1 шт):
NetworkManager.py - немного исправленная под новый NM версия библиотеки NetworkManager с чьего-то гитхаба. Сохрани этот файл - положи в проект.
import NetworkManager
import dbus.exceptions
import dbus
def scan():
list = []
for dev in filter(
lambda w: w.DeviceType == NetworkManager.NM_DEVICE_TYPE_WIFI,
NetworkManager.Device.all()
):
dev.RequestScan({})
for dev in filter(
lambda w: w.DeviceType == NetworkManager.NM_DEVICE_TYPE_WIFI,
NetworkManager.Device.all()
):
for ap in filter(
lambda a: a.RsnFlags & NetworkManager.NM_802_11_AP_SEC_KEY_MGMT_PSK,
dev.AccessPoints
):
list.append({
'ssid':ap.Ssid,
'strength':ap.Strength,
'device': str(dev.object_path),
'ap': str(ap.object_path)
})
return list
Вот эта функция вернет список сетей с уровнем сигнала strength в процентах.
Но если хочется в dB то самый простой способ разобрать вывод iwlist scan | grep -e Quality= -e ESSID
Библиотека rssi это и делает. В новой версии этой библиотеки эта ошибка исправленна. Обновите из гита
python3 -m pip install --upgrade git+https://github.com/jvillagomez/rssi_module.git