Versions Compared

Key

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

...

HTTP/1.1 200
Server: nginx/1.14.2
Date: Wed, 12 Jan 2022 12:20:59 GMT
Content-Type: application/json
Transfer-Encoding: chunked
Connection: keep-alive
Set-Cookie: JSESSIONID=706F8360029679006C5548E26C0E1A33; Path=/; HttpOnly
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
Access-Control-Allow-Credentials: true
Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS
Access-Control-Allow-Headers: Accept,Authorization,Cache-Control,Content-Type,DNT,If-Modified-Since,Keep-Alive,Origin,User-Agent,X-Requested-With,X-API-Key

{
    "id": "611a211ff1290747553498f4",
    "mac": "94:83:C4:09:04:DC",
    "location": "FNM_B_r220",
    "name": "QoW-1",
    "testingAccessPointIds": [
        "614a0c47b6fb545d0e1ea1b0"
    ],
    "groupId": "611a213bf1290747553498f9"
}


Получение вашей информационной системой информации о статусе "здоровья" заданных точек доступа, по точке доступа, группе точек доступа, и сенсору (отвечающему за некоторые точки доступа), а также по иным параметрам, может производиться в двух режимах:

  • синхронное получение результатов последних проверок
  • асинхронный запрос проведения проверки, и получения её результатов в будущем на callback-эндпоинт

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

Второй вариант применим, если вы хотите выполнить измерение "сейчас", для заданного объекта или подмножества объектов (контролируемых "ваших" точек доступа). У вас есть возможность указать другой (чем в обычном расписании сенсора) идентификатор задачи - проверка будет проводиться с её использованием. На время проведения проверки задачей такого типа штатное выполнения других задач сенсором по расписанию приостанавливается.

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

Внимание! Возвращается сокращенная информация о здоровье: успешность и текстовый статус инструкций подключения к точке доступа, портальной авторизации, проверке качества связи, суммарная информация по метрикам. Полная информация о результате измерения (как она хранится на сервере) в данном API не предоставляется. 

Для демонстрации возможностей API сервера WNAM QoW Server на Python/Flask создан прототип внешней информационной системы, имеющий Web UI, поддерживающий REST и доступный в исходных кодах по запросу. Далее приведены скриншоты его работы со стендовым сервером WNAM QoW.


По нажатию на кнопки получения списков отображаются запрошенные сведения, например идентификаторы, требуемые для последующих запросов статуса здоровья:

Image Added

 

При нажатии на кнопку запроса последнего выполненного измерения для заданной точки доступа показывается информация по её "здоровью":

Image Added


Если указать URL callback-метода (этот эндпоинт также входит в состав примера), можно попросить сервер выполнить задачу "вне очереди". При этом сразу возвращается информация о (не)успешности запуска такого задания:

Image Added

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

14:25:31.207 DEBUG [c.n.q.s.OutOfOrderMeasurementService:35] - addRequest awaiting from 1 sensors in 300 seconds, OOO task key is f90e1cdd-d3a9-4e49-9ef3-2575c5720e3f

В свою очередь, сенсоры по MQTT получают сообщение о необходимости внеочередного запуска задачи:

2022-01-12 14:25:31,258 [wnam_async_client.py:387] >> INFO: OOO RUN TASK! {'queue_schedules': {}, 'tasks_to_run': [], '_Scheduler__sensor': <__main__.Sensor object at 0x19e0b10>, ....

2022-01-12 14:25:31,266 [wnam_async_client.py:389] >> DEBUG: OOO RUNNER PROCESS PID 15557
2022-01-12 14:25:31,275 [wnam_task.py:148] >> DEBUG: Task Enabled
2022-01-12 14:25:31,277 [wnam_task.py:150] >> DEBUG: TASK 5f9c6800dfb03e75993a5d38
2022-01-12 14:25:31,293 [wnam_task.py:245] >> DEBUG: Out-of-order taks key is f90e1cdd-d3a9-4e49-9ef3-2575c5720e3f

Задача выполняется положенное время, результат отправляется на сервер.

При этом при нажатии на кнопку "показать последний полученный результат" отображается содержимое буфера callback-эндпоинта, поначалу пустое. Со временем на сервер поступят данные от тестирующего сенсора:

14:30:26.914 DEBUG [c.n.q.s.OutOfOrderMeasurementService:46] - sendMeasurement received from sensor QoW-1, left 0/1 sensors, 295/300 seconds
14:30:27.015 DEBUG [c.n.q.s.OutOfOrderMeasurementService:67] - submitCallback returned code 200 OK, msg='{"success": true, "length": 20}'

И после этого в окне с информацией об объекте появятся полученные данные:

Image Added