schema_example.json
Какое функциональное назначение у schema_example.json?
Данный файл - это контракт между Разработчиком Unit и Pepeunit:
- Разработчик Unit гарантирует, что он реализует в функционале Unit, работу указанных в schema_example.json стандартных топиков Pepeunit:
input_base_topicиoutput_base_topic - Разработчик Unit гарантирует работу
input_topicиoutput_topicв соответствии описанием, которое он составил в Readme - Pepeunit гарантирует корректное взаимодействие со стандартными топиками
input_base_topicиoutput_base_topic - Pepeunit гарантирует, что будет поддерживать актуальный набор UnitNode в соответствии с
input_topicиoutput_topic, указанных разработчиком в schema_example.json, для каждой версии Unit.
Структура
json
{
"input_base_topic": [
"update/pepeunit",
"env_update/pepeunit",
"schema_update/pepeunit",
"log_sync/pepeunit"
],
"output_base_topic": [
"state/pepeunit",
"log/pepeunit"
],
"input_topic": [
"set_fan_state/pepeunit"
],
"output_topic": [
"current_fan_speed_percentage/pepeunit",
"current_temp/pepeunit"
]
}Всего в schema_example.json есть 4 типа топиков:
| Топик | Описание | Подробности |
|---|---|---|
input_base_topic | Топики стандартных MQTT команд, которые Unit может выполнить | Стандартные MQTT команды |
output_base_topic | Топики стандартной публикации данных, в которые Unit может публиковать данные | Стандартные MQTT топики состояния |
input_topic | Input топики Разработчика Unit. Pepeunit использует их как шаблон для создания Input UnitNode | Топики разработчика |
output_topic | Output топики Разработчика Unit. Pepeunit использует их как шаблон для создания Output UnitNode | Топики разработчика |
INFO
При использовании клиентских библиотек Micropython, Golang и Python, можно указывать все топики из input_base_topic и output_base_topic, они будут корректно работать.
Если вы сами реализуете взаимодействие с Pepeunit без библиотек, то можно оставить только те топики, которые нужны для реализации Unit.
WARNING
При создании Unit или изменении его версии, Pepeunit автоматически создаёт и удаляет недостающие Input и Output UnitNode в соответствии с schema_example.json.