Команды от сервиса/1с
Процесс обработки команд
Механизм получения команд и отчета о выполнении команд
Шедулер агента по cron расписанию из параметра CFG_AGENT_CHECK_CRON запускает задачу запроса к сервису/1c для получения новых задач и отчета о выполнении более старых задач.
Есть возможность запуска задачи запроса к сервису/1c вне расписания. Для этого нужно сделать POST запрос (далее запрос-триггер) к агенту по адресу AGENT_HOST:CFG_API_PORT/agent/commands_check
- AGENT_HOST - ip адрес или доменное имя на котором запущен агент
- CFG_API_PORT - порт на котором запущен агент. значение параметра конфига
При получении запроса-триггера агент проверит дату последнего запроса к сервису. Если с момента прошлого запроса прошло более CFG_AGENT_CHECK_UNCHEDULED_DELAY секунд, то запрос к сервису выполнится сразу. Иначе запрос к сервису будет выполнен, когда после последнего запроса к сервису пройдет CFG_AGENT_CHECK_UNCHEDULED_DELAY секунд.
- CFG_AGENT_CHECK_UNCHEDULED_DELAY - параметр конфига задающий задержку между внеочередными запросами к сервиса. положительное целое число
Запрос к сервису/1с
Агент получает команды от сервиса/1с и отчитывается о выполнении команд путем POST запроса по адресу CFG_COLLECTOR_SERVICE_BASE/agent/check (CFG_COLLECTOR_SERVICE_BASE берется из конфига агента)
В данных запроса в поле executed_commands передаются результаты выполнения команд агентом.
В ответе на запрос агент получает список актуальных команд, которые он должен выполнить и отчитаться.
Данные запроса
{
"health": {
"last_report_at": LAST_REPORT_AT,
"status": "STATUS",
"activity": "ACTIVITY",
"up_time": UPTIME
},
"executed_commands": [
...,
{
"command_id": "COMMAND_ID",
"device_id": [..., "DEVICE_ID", ...],
"command": "COMMAND",
"result": RESULT
},
...
]
}
- LAST_REPORT_AT - время последнего отчета о статусе агента (поле пока не используется)
- STATUS - Усредненный статус по всем устройствам агента
- ok - TODO
- warning - TODO
- error - TODO
- ACTIVITY - Последняя активность жизненного цикла агента (поле пока не используется)
- UPTIME - время работы агента в секундах
- COMMAND_ID - id команды
- DEVICE_ID - id устройства на котором должна была выполняться команда
- COMMAND - строка с командой
- RESULT - словарь с результатами выполнения команды (зависит от команды)
Ожидаемый ответ
{
"commands":[
...,
{
"command_id": "COMMAND_ID",
"device_id": [..., "DEVICE_ID", ...],
"command": "COMMAND",
"params": PARAMS
},
...
]
}
- COMMAND_ID - id команды
- DEVICE_ID - id устройства на котором должна выполниться команда
- COMMAND - строка с командой
- PARAMS - словарь с параметрами команды (зависит от команды)
Механизм выполнения команды
После получения списка команд агент добавляет их в очередь команд и начинает их выполнение.
Команды выполняются асинхронно. Для каждого устройства внутри команды выполнение также асинхронно.
После завершения выполнения команды агент делает внеочередной запрос agent/check для отчета о выполнении команды.
Список команд
screenshot
получение скриншота с устройства.
params
{
"host": "FTP_HOST",
"user": "FTP_USERNAME",
"password": "FTP_PASSWORD",
"path": "FTP_PATH",
"multisensor": "MULTISENSOR_FLAG"
}
- FTP_HOST - адрес FTP сервера для загрузки скриншота. Обязательный параметр
- FTP_USERNAME - имя пользователя на FTP сервере. Обязательный параметр
- FTP_PASSWORD - пароль пользователя на FTP сервере. Обязательный параметр
- FTP_PATH - полный путь сохранения скриншота на FTP сервере. ({{datetime}}.png по умолчанию)
- {{datetime}} - заменяется на текущую дату на агента в формате '%Y%m%d%H%M%S'
- {{device_id}} - заменяется на id устройства к которому адресована команда
- {{device_host}} - заменяется на IP адрес устройства к которому адресована команда
- {{device_serial}} - заменяется на серийный номер устройства к которому адресована команда
- {{device_mac}} - заменяется на MAC адрес устройства к которому адресована команда
- {{command_id}} - заменяется на id команды
- {{agent_id}} - заменяется на id агента
- MULTISENSOR_FLAG - флаг скриншота мультисенсора
- 0 - обычный скриншот
- 1 - скриншот мультисенсора (делается при поддержке устройством)
success payload
{
"screenshot_path": "REMOTE_PATH"
}
- REMOTE_FILE - полный путь скриншота на FTP сервере
upload_data
выгрузка исторических данных с датчика
params
{
"from": "FROM",
"to": "TO"
}
- FROM - время начала исторических данных для выгрузки в формате unixtime * 1000
- TO - время окончания исторических данных для выгрузки в формате unixtime * 1000
success payload
{}
reboot
перезагрузка устройства
params
{}
success payload
{}
get_config
Запрос конфига устройства
params
{}
success payload
DEVICE_CONFIG
- DEVICE_CONFIG - конфиг устройства
set_config
Запрос конфига устройства
params
{
"DEVICE_ID": DEVICE_CONFIG
}
- DEVICE_ID - ID устройства
- DEVICE_CONFIG - конфиг устройства
success payload
DEVICE_CONFIG
- DEVICE_CONFIG - конфиг устройства
reset_auth
установка логина и пароля для авторизации на устройстве
params
{
"user": "USERNAME",
"pass": "PASSWORD"
}
- USERNAME - новое имя пользователя (используется только на brickstream и vivotek)
- PASSWORD - новый пароль
success payload
{
"new_user": "USERNAME",
"new_pass": "PASSWORD"
}
- USERNAME - новое имя пользователя
- PASSWORD - новый пароль
executor_flash
обновление прошивки на устройстве
params
{
"file_name": FILENAME,
"image": IMAGE,
"timeout": TIMEOUT
}
- FILENAME - имя файла прошивки
- IMAGE - содержимое файла (HEX)
- TIMEOUT - таймаут
success payload
{
"firmware": "FIRMWARE"
}
- FIRMWARE - версия прошивки. возвращается только из brickstream и xovis
video_record
установка расписания записи видео. работает
params
{
"from": "FROM",
"to": "TO",
"sd_card_format": "FORMAT_FLAG",
"quality": "QUALITY"
}
- FROM - время начала записи в формате unixtime * 1000
- TO - время окончания записи в формате unixtime * 1000
- FORMAT_FLAG - флаг форматирования CD карты на устройстве. Используется только для brickstream и hikvision
- 0 - не форматировать
- 1 - форматировать
- QUALITY - уровень качества видео (1 - 100). Используется только для hikvision и vivotek
success payload
{}
No Comments