Структура 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
- топикиInput
UnitNode = набор UnitNode на которые Unit будет подписанoutput_topic
-Output
UnitNode = набор 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 / назначение / pepeunit
UnitNode топики:
- Могут состоять из
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