Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Вместе с тем зачастую существует необходимость выполнить проверку подключения, и качества связи, для всех (или большинства) найденных сенсором точке точек доступа. Фактически, вам необходимо в цикле выполнить цепочку проверок типа 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 по настройке цикла проведет фильтрацию и сортировку этого списка:

...

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

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

...

{
"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
},

...

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