Структура schema.json и schema_example.json
schema_example.json
Какое функциональное назначание у schema_example.json ?
Данный файл - это контракт между разработчиком Unit и Pepeunit:
- Разработчик гарантирует, что он реализует в функционале Unit, работу указанных в schema_example.json стандартных топиков Pepeunit:
input_base_topicиoutput_base_topic - Разработчик гарантирует работу
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",
"schema_update/pepeunit",
"env_update/pepeunit"
],
"output_base_topic": [
"state/pepeunit"
],
"input_topic": [
"set_heater_duty/pepeunit"
],
"output_topic": [
"current_temperature/pepeunit",
"current_pressure/pepeunit",
"current_heater_duty/pepeunit",
"current_humidity/pepeunit"
]
}Всего в schema_example.json есть 4 типа топиков:
input_base_topic- топики стандартных MQTT команд, которые Unit может выполнитьoutput_base_topic- топики стандартной публикации данных, в которые Unit может публиковать данныеinput_topic- топикиInputUnitNode = набор UnitNode на которые Unit будет подписанoutput_topic-OutputUnitNode = набор UnitNode в которые Unit будет публиковать данные
Пользовательский опыт
При создании Unit или изменении его версии, Pepeunit автоматически создаёт и удаляет недостающие Input и Output UnitNode в соответствии с schema_example.json .
schema.json
Какое функциональное назначание у schema.json?
Данный файл - это контракт между конкретным экземпляром Unit и Pepeunit:
- Unit гарантирует, что он подпишется на все стандартные топики указанные в
input_base_topicи все UnitNode указанные вinput_topic - Unit гарантирует, что он будет публиковать данные в стандартные топики из
output_base_topicи в UnitNode указанные вoutput_topic - Pepeunit гарантирует, что будет отправлять корректные форматы данных в
input_base_topicи то что подпишется на все топики вoutput_base_topic - Pepeunit гарантирует, что будет производить авторизацию для публикации и подписки на все без исключения топики адресованные на инстанс EMQX MQTT Broker используемый Backend
- Pepeunit гарантирует, что будет подписан на все топики соответствующие паттернам:
unit.example.com/+/+/+/pepeunitиunit.example.com/+/pepeunit
Структура
json
{
"input_base_topic": {
"update/pepeunit": [
"example.com/input_base_topic/5e1a4151-515e-4926-8b8a-5e821713e25e/update/pepeunit"
],
"schema_update/pepeunit": [
"example.com/input_base_topic/5e1a4151-515e-4926-8b8a-5e821713e25e/schema_update/pepeunit"
],
"env_update/pepeunit": [
"example.com/input_base_topic/5e1a4151-515e-4926-8b8a-5e821713e25e/env_update/pepeunit"
]
},
"output_base_topic": {
"state/pepeunit": [
"example.com/output_base_topic/5e1a4151-515e-4926-8b8a-5e821713e25e/state/pepeunit"
]
},
"input_topic": {
"input/pepeunit": [
"example.com/dc2d6f5e-90b3-4cdb-91a4-5ae12db1887f/pepeunit",
"example.com/f06bcaa8-bb00-45ea-aba8-0fc0eba41e08"
]
},
"output_topic": {
"output/pepeunit": [
"example.com/4114a3f8-65c1-4d42-8d1d-481785d0dcca/pepeunit"
]
}
}Топики можно разделить на две категории, стандартные и соответствующие UnitNode:
input_base_topicиoutput_base_topic- стандартныеinput_topicиoutput_topic- соответствующие UnitNode
Стандарнтые топики:
- Всегда состоят из
5основных элементов - Каждому наименованию топика в schema_example.json соответствует только один топик из EMQX MQTT Broker:
Структура стандарнтных топиков
txt
Доменное имя инстанса / тип топика / Unit.uuid / назначение / pepeunitUnitNode топики:
- Могут состоять из
2или3элементов - Каждому
output_topicиз schema_example.json соответствует только один топик из EMQX MQTT Broker - Каждому
input_topicиз schema_example.json может соответствовать несколько топиков из EMQX MQTT Broker. Они подставляются на основании созданых связейOutput->Input
Структура UnitNode топиков
txt
Доменное имя инстанса / UnitNode.uuid
Доменное имя инстанса / UnitNode.uuid / pepeunit