View on GitHub

C02

SDK для работы с контроллером PERCo-C02

Обновление встроенного ПО

Файл прошивки передаётся в контроллер следующими кадрами. В первом кадре from д.б. равно 0. В последнем to д.б. равно size.

Загрузка

{
        "set" : "binary",
        "binary" : {
		"file" : "firmware",
		"size" : 5757200,
		"from" : 0,
		"to" : 511,
		"part" : "IyBNYWluIGZpbGUgZm9yIE5YUCBMUEMxeHh4L0xQQzQweHggc2VyaWVzIENvcnRleC1NMC8wKy8zLzRGIHBhcnRzCiMKIyAhISEhISEKIwojIFRoaXMgZmlsZSBzaG91bGQgbm90IGJlIGluY2x1ZGVkIGRpcmVjdGx5LCByYXRoZXIgYnkgdGhlIGxwYzExeHguY2ZnLAojIGxwYzEzeHguY2ZnLCBscGMxN3h4LmNmZywgZXRjLiB3aGljaCBzZXQgdGhlIG5lZWRlZCB2YXJpYWJsZXMgdG8gdGhlCiMgYXBwcm9wcmlhdGUgdmFsdWVzLgojCiMgISEhISEhCgojIExQQzh4eCBjaGlwcyBzdXBwb3J0IG9ubHkgU1dEIHRyYW5zcG9ydC4KIyBMUEMxMXh4IGNoaXBzIHN1cHBvcnQgb25seSBTV0QgdHJhbnNwb3J0LgojIExQQzEyeHggY2hpcHMgc3VwcG9ydCBvbmx5IFNXRCB0cmFuc3BvcnQuCiMgTFBDMTFVeHggY2hpcHMgc3VwcG9ydCBvbmx5IFNXRCB0cmFuc3BvcnRzLgojIExQQzEzeHggY2hpcHMgc3VwcG9ydCBvbmx5IFNXRCB0cmFuc3BvcnRzLgojIExQQzE3eHggY2hpcHMgc3VwcG9ydCBib3RoIEpUQQ"
	}
}

Ответ (результат выполнения set)

{
	"answer" : { "binary": "ok" },
	"binary" : {
		"file" : "firmware",
		"size" : 5757200,
		"from" : 0,
		"to" : 511,
		"part" : "IyBNYWluIGZpbGUgZm9yIE5YUCBMUEMxeHh4L0xQQzQweHggc2VyaWVzIENvcnRleC1NMC8wKy8zLzRGIHBhcnRzCiMKIyAhISEhISEKIwojIFRoaXMgZmlsZSBzaG91bGQgbm90IGJlIGluY2x1ZGVkIGRpcmVjdGx5LCByYXRoZXIgYnkgdGhlIGxwYzExeHguY2ZnLAojIGxwYzEzeHguY2ZnLCBscGMxN3h4LmNmZywgZXRjLiB3aGljaCBzZXQgdGhlIG5lZWRlZCB2YXJpYWJsZXMgdG8gdGhlCiMgYXBwcm9wcmlhdGUgdmFsdWVzLgojCiMgISEhISEhCgojIExQQzh4eCBjaGlwcyBzdXBwb3J0IG9ubHkgU1dEIHRyYW5zcG9ydC4KIyBMUEMxMXh4IGNoaXBzIHN1cHBvcnQgb25seSBTV0QgdHJhbnNwb3J0LgojIExQQzEyeHggY2hpcHMgc3VwcG9ydCBvbmx5IFNXRCB0cmFuc3BvcnQuCiMgTFBDMTFVeHggY2hpcHMgc3VwcG9ydCBvbmx5IFNXRCB0cmFuc3BvcnRzLgojIExQQzEzeHggY2hpcHMgc3VwcG9ydCBvbmx5IFNXRCB0cmFuc3BvcnRzLgojIExQQzE3eHggY2hpcHMgc3VwcG9ydCBib3RoIEpUQQ"
	}
}

После ответа на последний кадр загрузки необходимо перезагрузить контроллер командой:

Команда

{
        "control" : "reboot",
        "reboot" : {}
}

Ответ (результат выполнения control)

{
	"result" : { "reboot": "ok" },
	"reboot" : {}
}

После передачи ответа контроллер перезагрузится, и начнётся процесс перепрошивки. Процесс перепрошивки может занимать длительное время (типично - несколько минут), в течение его контроллер может несколько раз перезагружаться. После перепрошивки восстановится связь с софтом (WEB UI).

Обновление HTTPS сертификата

Сертификат передаётся в контроллер аналогично прошивке. Перезагрузка не требуется.

Логирование

Запрос архива лога контроллера осуществляется следующей командой get : data_file (см. ниже). В ответ на неё контроллер передаст архив *.tar.gz с логами, разбитый на отдельные кадры. В первом кадре first:true, в последнем last:true. Файл архив при передаче кодируется base64.

Запрос

{
        "get" : "data_file",
        "data_file" : {"file":"log"}
}

Ответ (результат выполнения set)

{
	"answer" : { "data_file": "ok" },
	"data_file" : {
		"file" : "log",
		"size": 16848,
		"first":true,
		"last":false,
		"part" : "IyBNYWluIGZpbGUgZm9yIE5YUCBMUEMxeHh4L0xQQzQweHggc2VyaWVzIENvcnRleC1NMC8wKy8zLzRGIHBhcnRzCiMKIyAhISEhISEKIwojIFRoaXMgZmlsZSBzaG91bGQgbm90IGJlIGluY2x1ZGVkIGRpcmVjdGx5LCByYXRoZXIgYnkgdGhlIGxwYzExeHguY2ZnLAojIGxwYzEzeHguY2ZnLCBscGMxN3h4LmNmZywgZXRjLiB3aGljaCBzZXQgdGhlIG5lZWRlZCB2YXJpYWJsZXMgdG8gdGhlCiMgYXBwcm9wcmlhdGUgdmFsdWVzLgojCiMgISEhISEhCgojIExQQzh4eCBjaGlwcyBzdXBwb3J0IG9ubHkgU1dEIHRyYW5zcG9ydC4KIyBMUEMxMXh4IGNoaXBzIHN1cHBvcnQgb25seSBTV0QgdHJhbnNwb3J0LgojIExQQzEyeHggY2hpcHMgc3VwcG9ydCBvbmx5IFNXRCB0cmFuc3BvcnQuCiMgTFBDMTFVeHggY2hpcHMgc3VwcG9ydCBvbmx5IFNXRCB0cmFuc3BvcnRzLgojIExQQzEzeHggY2hpcHMgc3VwcG9ydCBvbmx5IFNXRCB0cmFuc3BvcnRzLgojIExQQzE3eHggY2hpcHMgc3VwcG9ydCBib3RoIEpUQQ"
	}
}

Изменение “серъёзности” (уровня) логирования осуществляется следующей командой. Серъёзность (уровень) логирования меняется до поступления следующей команды или до перезагрузки контроллера, после перезагрузки уровень логирования базовый - только ошибки.

Установка

{
        "control" : "log",
        "log" : {"severity_level" : 0}
}

Ответ

{
        "result" : { "log": "ok" },
        "log" : {"severity_level" : 0}
}

Резервирование БД

Журнал событий не резервируется. Только общие установки контроллера (сеть, временная зона, удалённые сервера, пароль и т.п.) и параметры ИУ. Используется для возможности восстановления БД контроллера из резервной копии при повреждении файла БД после старта контроллера. Рекомендуется производить после важных изменений конфигурации.

Команда

{
        "control":"sql",
        "sql":{"action":"replication"}
}

Ответ

{
        "result" : { "sql": "ok","control":"own" },
        "sql" : {"action" : "replication"}
}

file — Тип загружаемого файла:

`firmware` — прошивка
`ssl`  — HTTPS сертификат

size — Размер файла.

from — Позиция в файле 1-го байта передаваемых данных.

to — Позиция в файле последнего байта передаваемых данных.

part — Передаваемые данные (часть файла от from до to), строка в base64.

Загружаемый файл представляет собой бинарные данные (в общем случае). Каждая часть файла перед передачей кодируется в base64, и помещается в поле part. Поля size, from и to относятся к бинарным данным (не стооке)! Т.е. размер передаваемых в кадре бинарных данных to - from будет на 1/4 меньше размера строки part.

first / last — признак первого / последнего кадра выгружаемого файла соответственно:

`true` — да
`false` — нет

severity_level — определяет уровень «строгости» логирования может быть строкой либо целым числом в диапазоне 0 — 5. Чем меньше значение, тем меньше «строгосиь», и тем больше информации в журнале. Строковые значения:

`debug` (`0`)
`normal` (`1`)
`info` (`2`)
`warning` (`3`
`error` (`4`)
`critical` (`5`)

Ошибки “error”:

`action unresolved` - не распознаное действие в команде
`Required: action` - отсутствует поле `action`
`Incorrect size of base64` - не корректно раскодирован из base64, либо не правильные параметры запроса (`to`? `from`?)
`Write error` - ошибка записи файла на устройство
`Incorrect Binary size` - слишком большой размер передаваемого файла
`Incorrect Binary` - не корректный файл (ошибка формата или содержания)
`Can not create file` - не возможно создать файл на устройстве
`to not less than size` - не правильные параметры запроса (`to`? `size`?)
`file open error` - ошибка открытия файла
`memory allocation error` - внутренняя ошибка аллокации памяти для процесса передачи файла
`file type unrecognized` - не правильные параметры запроса (`file`?)
`file type error - no path for archives` - внутренняя ошибка