Стандартные MQTT команды Pepeunit
WARNING
Команды которые поддерживает Unit должны быть отражены в schema_example.json в разделе input_base_topic
.
Unit должен быть подписан на эти топики, при получении сообщения Unit должны следовать единому паттерну поведения описанному в данном разделе.
Всего в Pepeunit есть три команды - топика:
UPDATE
-update/pepeunit
SCHEMA_UPDATE
-schema_update/pepeunit
ENV_UPDATE
-env_update/pepeunit
UPDATE - update/pepeunit
Когда вызывается данная команда?
Данная команда отправляет Unit запрос на обновление, Unit в ответ должен выполнить опредлённый алгоритм действий, приводящий к изменению текущей версии программного кода, на новый.
Формат сообщения в топик update/pepeunit
DANGER
Формат сообщения для Компилируемых и Интерпритируемых Repo отличается:
{
"COMMAND": "Update",
"NEW_COMMIT_VERSION": "ad1ddee1e559153f6ea4ae33790f5980e32d61cf",
"COMPILED_FIRMWARE_LINK": "https://git.pepemoss.com/api/v4/projects/281/packages/generic/release/0.0.2/picker-linux-amd64"
}
{
"COMMAND": "Update",
"NEW_COMMIT_VERSION": "ad1ddee1e559153f6ea4ae33790f5980e32d61cf"
}
Алгоритм действий Unit
DANGER
Алгоритм Unit различается для Компилируемых и Интерпритируемых Repo
- Сверить версию
NEW_COMMIT_VERSION
с текущей версиейCOMMIT_VERSION
из env.json, если совпали обновление прерывается, если не совпали Unit начинает процесс обновления - Вычислить
uuid
Unit на основеjwt
токенаPEPEUNIT_TOKEN
из env.json - Скачать архив
tgz
,tar
илиzip
с env.json и schema.json при помощи REST. ПеременныеHTTP_TYPE
иPEPEUNIT_URL
доступны внутри env.json:HTTP_TYPE://PEPEUNIT_URL/pepeunit/api/v1/units/firmware/tgz/{Unit.uuid}?wbits=9&level=9
- Доступные
wbits
-(от -15 до -8) (от 9 до 16) (от 25 до 32)
- Доступные
level
-(от -1 до 10)
- Доступные
HTTP_TYPE://PEPEUNIT_URL/pepeunit/api/v1/units/firmware/tar/{Unit.uuid}
HTTP_TYPE://PEPEUNIT_URL/pepeunit/api/v1/units/firmware/zip/{Unit.uuid}
- Распаковать из архива файлы env.json и schema.json
- Скачать новую скомпилированную часть по ссылке из
COMPILED_FIRMWARE_LINK
- подробнее о предварительной компиляции - Запустить новую скомпилированную часть c прекращением работы старой
- Сверить версию
NEW_COMMIT_VERSION
с текущей версиейCOMMIT_VERSION
из env.json, если совпали обновление прерывается, если не совпали Unit начинает процесс обновления - Вычислить
uuid
Unit на основеjwt
токенаPEPEUNIT_TOKEN
из env.json - Скачать архив
tgz
,tar
илиzip
с обновлением при помощи REST. ПеременныеHTTP_TYPE
иPEPEUNIT_URL
доступны внутри env.json:HTTP_TYPE://PEPEUNIT_URL/pepeunit/api/v1/units/firmware/tgz/{Unit.uuid}?wbits=9&level=9
- Доступные
wbits
-(от -15 до -8) (от 9 до 16) (от 25 до 32)
- Доступные
level
-(от -1 до 10)
- Доступные
HTTP_TYPE://PEPEUNIT_URL/pepeunit/api/v1/units/firmware/tar/{Unit.uuid}
HTTP_TYPE://PEPEUNIT_URL/pepeunit/api/v1/units/firmware/zip/{Unit.uuid}
- Распаковать из архива все файлы в отдельную дирректорию или область памяти
- Заменить текущую версию программы на файлы из новой дирректории или области памяти
- Перезапустить Unit
SCHEMA_UPDATE - schema_update/pepeunit
Когда вызывается данная команда?
Данная команда отправляет Unit запрос на обновление schema.json, Unit в ответ должен выполнить опредлённый алгоритм действий, приводящий к изменению текущей версии schema.json, на новую.
Формат сообщения в топик schema_update/pepeunit
{
"COMMAND": "SchemaUpdate"
}
Алгоритм действий
- Скачать новую версию файла schema.json через REST. Переменные
HTTP_TYPE
иPEPEUNIT_URL
доступны внутри env.json:HTTP_TYPE://PEPEUNIT_URL/pepeunit/api/v1/units/get_current_schema/{Unit.uuid}
- Установить новое состояние для schema.json у Unit
ENV_UPDATE - env_update/pepeunit
Когда вызывается данная команда?
Данная команда отправляет Unit запрос на обновление env.json, Unit в ответ должен выполнить опредлённый алгоритм действий, приводящий к изменению текущей версии env.json, на новую.
Формат сообщения в топик env_update/pepeunit
{
"COMMAND": "EnvUpdate"
}