Skip to main content

Команды от сервиса/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

set_config

Запрос конфига устройства

params
{
	"DEVICE_ID": DEVICE_CONFIG
}
success payload
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
{}