Page tree
Skip to end of metadata
Go to start of metadata

Ваш сенсор позволяет делать проверку подключения к заданному SSID (к вашей сети), и проверку качества связи в этой сети (загрузку файла, видео-ролика, ping, tracert). Вам необходимо настроить:

  • имя сети (SSID)
  • параметры подключения (шифрование, пароль, сертификат и т.п.)
  • имя беспроводного интерфейса, wlan0 или wlan1

Вы можете указать в настройках сенсора / группы сенсоров дополнительный параметр bssid, то есть идентификатор сети на точке доступа. В этом случае подключение сенсора будет производиться не к случайной (выбранной драйвером) точке доступа, а к заданной вами:

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

Вместе с тем зачастую существует необходимость выполнить проверку подключения, и качества связи, для всех (или большинства) найденных сенсором точек доступа. Фактически, вам необходимо в цикле выполнить цепочку проверок типа WifiConnect/WifiAuth/WifiQuality для каждой из найденных BSSID с учетом заданных критериев. При этом число таких цепочек заранее не определено, так как зависит от динамического критерия - числа BSSID. например, для двухдиапазонных точек было бы желательно проверять работу точки подключением к каждому из её радио-модулей.

Напомним, что в настройках задачи указывается список подряд выполняющихся инструкций, причем цепочка WifiConnect/WifiAuth/WifiQuality (подключение, портальная авторизация, проверка качества) должна встречаться в нем строго один раз. Сделать несколько последовательных цепочек с разными настройками можно, но толком это работать не будет (вы заранее не знаете число BSSID). 

Решение задачи проверки нескольких точек подряд состоит в последовательном применении следующих шагов:

  1. Создать инструкцию типа Service, в которой надо разместить код вызова библиотечной функции-настройщика цикла проверок, плюс необходимые пороговые критерии:


  2. В скрипте инструкции отредактировать, по желанию, настроечные параметры:
    import subprocess
    import sys
    sys.path.append(r'/root/qow')
    from wnam_helpers import config_loop
    # максимальное число точек доступа, которые проверять
    max_bssids=7
    # минимальный уровень сигнала, чтобы точку включить в список проверяемых
    min_rssi=-100
    # делать подключения и проверки в 2.4 и 5 ГГц, либо только на заданном интерфейсе
    both_bands=True
    # здесь можно явно указать BSSID тестируемых AP, через запятую или пробел
    bssids=''
    config = config_loop(max_bssids, min_rssi, both_bands, bssids)
    print(config)


  3. Добавить эту инструкцию в вашу Задачу, после инструкции сканирования WifiScan и инструкции подключения WifiConnect:


  4. Применить задачу к вашему сенсору


Задача с такой структурой, запускаемая на сенсоре, производит следующие действия (их можно посмотреть в лог-файле /var/log/wnam_qos.log или через alias-команды чтения логов tn или tf):


1. Задача типа WifiScan находит сети (в том числе и ваши, с заданным SSID):

2021-04-13 10:45:18,171 wnam_job >> INFO: Name: 1_Сканирование сетей_моисети
2021-04-13 10:45:18,173 wnam_job >> INFO: Sequence in Task: 3

При этом в файл /tmp/mynetworks будет записан список BSSID, с номером диапазона (0 или 1) и уровнем сигнала:

0 50:87:89:E3:5B:D1 -43
0 DC:AE:EB:1A:83:B8 -44
0 B8:69:F4:AF:B1:E9 -66
1 50:87:89:E3:5B:DE -35
1 DC:AE:EB:1A:83:BC -34
1 B8:69:F4:AF:B1:E8 -74

2. Задача типа Service по настройке цикла проведет фильтрацию и сортировку этого списка:

2021-04-13 10:45:35,943 wnam_job >> INFO: Name: 1X_Настройка цикла
2021-04-13 10:45:35,946 wnam_job >> INFO: Sequence in Task: 4
2021-04-13 10:45:41,957 wnam_helpers >> DEBUG: config_loop max_bssids=7, min_rssi=-100, both_bands=True, bssids=
2021-04-13 10:45:41,960 wnam_helpers >> DEBUG: scanned my_networks file has 6 BSSID entries: ['50:87:89:E3:5B:D1',
    'DC:AE:EB:1A:83:B8', 'B8:69:F4:AF:B1:E9', 'DC:AE:EB:1A:83:BC', '50:87:89:E3:5B:DE', 'B8:69:F4:AF:B1:E8']

При этом используются параметры, временно сохраняемые в файле /tmp/mynetworks.config:

{"max_bssids": 7, "min_rssi": -100, "both_bands": true, "bssids": []}

3. В результате сканирования в этом примере найдены шесть подходящих BSSID (три точки доступа вещают одну "нашу" сеть на каждом из диапазонов 2.4 и 5 ГГц).

4. Функция config_loop проводит динамическую перестройку инструкций прямо в текущей выполняющейся задаче таким образом, что две инструкции типа WifiConnect/WifiQuality превращаются в шесть пар таких же инструкций, причем в качестве входных параметров им передаются конкретные параметры bssid и interface:

2021-04-13 10:45:42,373 wnam_task >> DEBUG: adjust_jobs after: job id = 5fccdbd5b51ef601ca4c9262 name 00_Радио эфир type WifiSurvey
2021-04-13 10:45:42,375 wnam_task >> DEBUG: adjust_jobs after: job id = 5fe618758990130a7f556001 name 01_Сброс радио type Service
2021-04-13 10:45:42,377 wnam_task >> DEBUG: adjust_jobs after: job id = 60360580f949e23336be200c name 1_Сканирование сетей_моисети type WifiScan
2021-04-13 10:45:42,379 wnam_task >> DEBUG: adjust_jobs after: job id = 606df62d9aea79561e616437 name 1X_Настройка цикла type Service
2021-04-13 10:45:42,380 wnam_task >> DEBUG: adjust_jobs after: job id = 5fad4b01cbe1fd684a082919-1 name 2_Подключение к SSID type WifiConnect
2021-04-13 10:45:42,382 wnam_task >> DEBUG: adjust_jobs after: job id = 6030e68e625d98039a4330f5-1 name 4_Доступ в Интернет_ping_iperf_trace type WifiQuality
2021-04-13 10:45:42,385 wnam_task >> DEBUG: adjust_jobs after: job id = 5fad4b01cbe1fd684a082919-2 name 2_Подключение к SSID type WifiConnect
2021-04-13 10:45:42,387 wnam_task >> DEBUG: adjust_jobs after: job id = 6030e68e625d98039a4330f5-2 name 4_Доступ в Интернет_ping_iperf_trace type WifiQuality
2021-04-13 10:45:42,388 wnam_task >> DEBUG: adjust_jobs after: job id = 5fad4b01cbe1fd684a082919-3 name 2_Подключение к SSID type WifiConnect
2021-04-13 10:45:42,390 wnam_task >> DEBUG: adjust_jobs after: job id = 6030e68e625d98039a4330f5-3 name 4_Доступ в Интернет_ping_iperf_trace type WifiQuality
2021-04-13 10:45:42,392 wnam_task >> DEBUG: adjust_jobs after: job id = 5fad4b01cbe1fd684a082919-4 name 2_Подключение к SSID type WifiConnect
2021-04-13 10:45:42,394 wnam_task >> DEBUG: adjust_jobs after: job id = 6030e68e625d98039a4330f5-4 name 4_Доступ в Интернет_ping_iperf_trace type WifiQuality
2021-04-13 10:45:42,396 wnam_task >> DEBUG: adjust_jobs after: job id = 5fad4b01cbe1fd684a082919-5 name 2_Подключение к SSID type WifiConnect
2021-04-13 10:45:42,397 wnam_task >> DEBUG: adjust_jobs after: job id = 6030e68e625d98039a4330f5-5 name 4_Доступ в Интернет_ping_iperf_trace type WifiQuality
2021-04-13 10:45:42,399 wnam_task >> DEBUG: adjust_jobs after: job id = 5fad4b01cbe1fd684a082919-6 name 2_Подключение к SSID type WifiConnect
2021-04-13 10:45:42,401 wnam_task >> DEBUG: adjust_jobs after: job id = 6030e68e625d98039a4330f5-6 name 4_Доступ в Интернет_ping_iperf_trace type WifiQuality
2021-04-13 10:45:42,402 wnam_task >> DEBUG: adjust_jobs after: job id = 601af23655a7c8797b9a00ee name 50_Восстановление resolv.conf type Service
2021-04-13 10:45:42,404 wnam_task >> DEBUG: adjust_jobs after: job id = 5fce02703dd5434c878ae25d name 6_Состояние GSM сети type GsmScan
2021-04-13 10:45:42,406 wnam_task >> DEBUG: adjust_jobs after: job id = 602d4437bf562f50324644bf name 70_Фоновое_сканирование_спектра type Service

5. Сама сервисная инструкция завершается указанием числа созданных элементов цикла:

{
"id": "606df62d9aea79561e616437",
"measurements": {
"config": "6",
"success": true
},
"name": "1X_\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0446\u0438\u043a\u043b\u0430",
"start_time": 1618308035,
"stop_time": 1618308041,
"success": true
},

6. В дальнейшем выполнение задачи продолжается с новым, динамически расширенным расписанием.

В интерфейсе сервера WNAM QoW результат выполнения такого задания отображается на дашборде сенсора, причем видны все исполненные измерения в цикле, для каждого BSSID отдельно. Ошибка выполнения хотя бы одной инструкции устанавливает ошибочный статус всему измерению.

Также результаты измерения по каждой из инструкций видны в popup-окне в "отчетах", с указанием порядкового номера [в квадратных скобках]:

  

  • No labels