...
Запуск теста приводит к отправке на каждый сенсор MQTT-команды типа "FASTTEST" с следующими параметрами:
qos/XX:XX:XX:XX:XX:XX/cmd {"type":"FASTTEST","sid":"random-sid-value","connect": {"ssid":"network-name", "security":"psk", "password":"12345678", "bssid":"XX:XX:XX:XX:XX:XX", "band":0},"measure": {"duration:" 30, "cmd": "iperf3 -4 -c 1.2.3.4:4444 100M -u -J -R"}}
Сенсор должен подключиться к заданной сети, запустить получение IP адреса, и затем выполнить команду, указанную в cmd. Максимальное её время выполнения задается в duration, при превышении этого времени запускаемый процесс должен быть убит.
В ответ сенсор должен собрать stdout тестирующей утилиты iperf (или что было указано в командной строке)""}В ответ сенсор должен запустить подключение к сети, если оно успешно запустить тест, и вернуть его результаты на сервер в следующем формате:
qos/XX:XX:XX:XX:XX:XX/data {"type":"FASTTEST","sid":"req-sid-value","connect": {"status
...
": true, "duration": 12345, "ip":"
...
5.
...
6.
...
7.
...
8"},"measure":{"status
...
": true, "duration": 12345, "result":{iperf-json-object}}
Где { iperf-json-object } - объект, полученный в результате выполнения команды iperf.
Если подключение к сети не успешно, то запуск iperf не производится, и возвращается ответ вида:
qos/XX:XX:XX:XX:XX:XX/data {"type":"FASTTEST","sid":"req-sid-value",
"connect": {"status": false, "duration": 12345, "error":"словесное описание причины ошибки"}
...
,
"measure":{"status": false, "duration": 0, "result":{}
}