Съдържание:

IOT123 - ХИБ ЗА АСИМИЛИРАН СЕНЗОР: ICOS10 CORS УЕБКОМПОНЕНТИ: 8 стъпки
IOT123 - ХИБ ЗА АСИМИЛИРАН СЕНЗОР: ICOS10 CORS УЕБКОМПОНЕНТИ: 8 стъпки

Видео: IOT123 - ХИБ ЗА АСИМИЛИРАН СЕНЗОР: ICOS10 CORS УЕБКОМПОНЕНТИ: 8 стъпки

Видео: IOT123 - ХИБ ЗА АСИМИЛИРАН СЕНЗОР: ICOS10 CORS УЕБКОМПОНЕНТИ: 8 стъпки
Видео: IOT123 - BYKO LIVE RIDE 2024, Юли
Anonim
IOT123 - ЦЕНТЪР ЗА АСИМИЛИРАН СЕНЗОР: ICOS10 CORS WEBCOMPONENTS
IOT123 - ЦЕНТЪР ЗА АСИМИЛИРАН СЕНЗОР: ICOS10 CORS WEBCOMPONENTS
IOT123 - ЦЕНТЪР ЗА АСИМИЛИРАН СЕНЗОР: ICOS10 CORS WEBCOMPONENTS
IOT123 - ЦЕНТЪР ЗА АСИМИЛИРАН СЕНЗОР: ICOS10 CORS WEBCOMPONENTS

Подчинените устройства на ASSIMILATE SENSOR/ACTOR Slaed вграждат метаданни, които се използват за определяне на визуализации в Crouton. Тази конструкция е малко по -различна от предишните; няма промени в хардуера. Фърмуерът вече поддържа хостинг персонализирани (по -богати) редактори, които могат да бъдат интегрирани в най -новата версия на AssimilateCrouton. Повече внимание ще бъде отделено на обяснението на фърмуера и таблото за управление на MQTT в тази статия.

Едно от предимствата на обслужването на WebComponents от устройството, което те контролират, е, че по -усъвършенстваният контрол на устройството е ограничен до мрежата, към която устройството е свързано: вашата WiFi точка за достъп. Въпреки че след като използвате MQTT сървър с удостоверяване, има прилика на защита, в публичните мрежи, ако накрая напуснете браузъра си (уебсайт AssimilateCrouton), някой може да се включи и да контролира вашите устройства за автоматизация. Тази функция CORS WebComponent позволява публично да се показват само показания (температура, нива на осветеност, влага), а командните функции (включване/изключване, планиране) са достъпни само от мрежата на устройството.

На устройството всички функции на уеб сървъра с удостоверяване и хостинг в SPIFFS все още се поддържат, но специален акцент е направен върху поддръжката на CORS (Cross Origin Resource Sharing) за Polymer WebComponents (Crouton използва Polymer 1.4.0).

В AssimilateCrouton (вилицата на Crouton, използвана за Assimilate IOT Network) промените включват

  • поддръжка за карта на устройство (assim-device), която освен всичко друго показва и скрива, за потребител, отделни карти за устройство
  • info свойство на всички карти, което показва наздравица с полезна контекстуална информация за карта
  • поддръжка за уеб компоненти CORS, в този случай хоствани на уеб сървъра на устройството (ESP8266).

Стъпка 1: CROUTON

КРУТОН
КРУТОН
КРУТОН
КРУТОН

Crouton е табло, което ви позволява да визуализирате и контролирате вашите IOT устройства с минимална настройка. По същество това е най -лесното табло за настройка за всеки ентусиаст на хардуера на IOT, използващ само MQTT и JSON.

ASSIMILATE SLAVES (сензори и актьори) имат вградени метаданни и свойства, които капитанът използва за изграждане на пакета deviceInfo json, който Crouton използва за изграждане на таблото за управление. Посредникът между ASSIMILATE NODES и Crouton е MQTT брокер, който е удобен за websockets: Mosquito се използва за демонстрацията.

Тъй като ASSIMILATE MASTER иска свойства, той форматира стойностите на отговора в необходимия формат за актуализации на Crouton. Вилицата AssimilateCrouton добавя някои функции, които ви позволяват да децентрализирате бизнес правилата, които управляват вашето устройство, т.е. устройството IOT не се нуждае от никакви вградени бизнес правила, а само конвейер за MQTT/I2C комуникация с по -интелигентните (контролирани от ATTINY) подчинени актьори и сензори.

Стъпка 2: АСИМИЛИРАНЕ НА КРУТОНА

АСИМИЛИРАЙТЕ КРУТОН
АСИМИЛИРАЙТЕ КРУТОН

ПРОМЕНИ НА КРУТОНА

Промените от раздвоената версия включват:

  • ако крайна точка има определено свойство на път, WebComponent за картата ще направи HTMLImport за CORS ресурс (уеб сървърът на ESP8266 в тази компилация).
  • всички ресурси нагоре по веригата от (зависимости на) CORS WebComponent се препращат така, сякаш се обслужват от уебсайта на Crouton; когато не успеят да заредят манипулатор на изключения, пренарежда пътищата и се зарежда, ако от уебсайта.
  • горе вдясно се показва текущо местно време, полезно за проверка по график.

ПОЛИМЕРНИ ЗАВИСИМОСТИ И КОРИ

Листовете на дърво на зависимост от полимер могат да бъдат хоствани в CORS. Тъй като кореновите зависимости могат да се използват няколко пъти в приложение, те не могат да бъдат препращани от 2 местоположения (уебсайта и устройството), тъй като зареждащият модул на полимерни модули ги третира като 2 отделни ресурса и множество грешки при регистрацията бързо се сблъскват с приложение.

Поради тази причина WebComponent за карта (HTML файл в 1.4.0) и свързаният CSS файл са единствените файлове, хоствани на устройството. Другите зависимости са посочени така, сякаш WebComponent се хоства в папката "html" на уебсайта на създаване, което улеснява разработването на WebComponents от тази папка до готовност за качване в SPIFFS на ESP8266. AssimilateCrouton ще разработи как да получи правилните файлове.

РАЗПЛАЩАНЕ

Създателят на edfungus на оригиналния Crouton написа източника в Pug/Less и имаше NPM/Grunt инструментариум. Изведох Pug/Less като HTML/css и просто редактирах/разпространих рендерираните файлове. Това прекъсна веригата от инструменти NPM/Grunt. Поправянето на това е обхванато в раздела БЪДЕЩЕ.

Можете да тествате таблото за управление локално във вашето DEV поле:

  • От командния ред в основната папка
  • npm старт
  • Lite сървърът се стартира за https:// localhost: 10001

Разполагане на статичен уеб сървър:

  • копирайте всички папки с изключение на node_modules
  • копирайте index.html (и евентуално web.config)

БЪДЕЩЕ

Една от основните цели е надграждане до Polymer3 и работа от Polymer CLI. Добавянето на усъвършенствани редактори и рамка за разработчиците на IOT да разработят свои собствени е висок приоритет. В крайна сметка усъвършенствана автоматизирана система ще се управлява изцяло от отделни клиенти на MQTT като AssimilateCrouton.

Пример за пакета deviceInfo, използван за AssimilateCrouton:

{
"информация за устройството": {
"endpoint": {
"CC_device": {
"device_name": "ash_mezz_A3",
"card-type": "assim-device",
"ssid": "Corelines_2",
"ip_addr": "192.168.8.104",
"крайни точки": [
{
"title": "Grow Lights",
"card-type": "crouton-simple-toggle",
"endpoint": "switch"
},
{
"title": "Лампи за плантатори",
"card-type": "crouton-assim-weekview",
"endpoint": "CC_switch"
}
]
},
"CC_switch": {
"card-type": "assim-weekview",
"info": "Включете или изключете светлините в 15 -минутни времеви интервали",
"path": "https://192.168.8.104/cors",
"title": "Лампи за плантатори",
"interval_mins": 15,
"стойности": {
"стойност": ""
}
},
"превключвател": {
"title": "Grow Lights",
"card-type": "crouton-simple-toggle",
"info": "Включване или изключване на светлините ad hoc",
"етикети": {
"false": "OFF",
"true": "ON"
},
"икони": {
"false": "sun-o",
"true": "sun-o"
},
"стойности": {
"стойност": 0
}
}
},
"status": "добро",
"name": "ash_mezz_A3",
"description": "Офис в Ашмор, Мецанин, Зона А2",
"color": "#4D90FE"
}
}

вижте rawdeviceInfo.json, хоствано с ❤ от GitHub

Стъпка 3: МОНТАЖ НА УСТРОЙСТВОТО

МОНТАЖ НА УСТРОЙСТВОТО
МОНТАЖ НА УСТРОЙСТВОТО
МОНТАЖ НА УСТРОЙСТВОТО
МОНТАЖ НА УСТРОЙСТВОТО
МОНТАЖ НА УСТРОЙСТВОТО
МОНТАЖ НА УСТРОЙСТВОТО

Тъй като няма промени в хардуера, ето връзките към съответната информация:

  • Монтаж на корпуса
  • Материали и инструменти
  • Подготовка на MCU
  • Подготовка на жилището на MCU
  • Изграждане на Slaves Switch от ниска страна/RESET дъщерна дъска
  • Сглобяване на основните компоненти

Стъпка 4: ФЕРМУ

ФУРГУРА
ФУРГУРА
ФУРГУРА
ФУРГУРА
ФУРГУРА
ФУРГУРА
ФУРГУРА
ФУРГУРА

ОСНОВНИ ПРОМЕНИ ТАЗИ СГРАДА

За да може приложението AssimilateCrouton да може да използва CORS ресурси от устройството, заглавките на отговорите трябваше да бъдат конфигурирани по определен начин. Това беше внедрено в тази версия на фърмуера (static_server.ino => server_file_read ()).

Също така основната графика на зависимостта за Polymer трябва да е от един произход. Използвана е стратегия за добавяне на манипулатор на onerror (corsLinkOnError) към SPIFFS CORS файловете за презареждане на ресурсите от уебсайта AssimilateCrouton, когато те не са намерени на устройството.

Към файловата система SPIFFS са добавени 2 нови конвенции за персонализиране на крайните точки, създадени в deviceInfo - които AssimilateCrouton използва за създаване на карти на таблото за управление:

  • /config/user_card_base.json Определение на крайна точка с променящи се първоначално променливи:,,. Обикновено това е мястото, където ще бъде добавена картата за устройство за асимилация. Това не комуникира обратно с устройството.
  • /config/user_card_#.json Определение на крайна точка с първоначално разменени променливи по време на изпълнение:,,. Обикновено това е мястото, където богатите редактори, като например карта за асим-седмичен преглед, ще бъдат добавени, свързани към I2C подчинения (актьор/сензор), който се отнася до #.

СКИЧ/БИБЛИОТЕКИ

На този етап проектът е опакован като пример за библиотеката AssimilateBus Arduino. Това е основно, за да направи всички необходими файлове лесен достъп от Arduino IDE. Основните кодови артефакти са:

  • mqtt_crouton_esp8266_cors_webcomponents.ino - основната входна точка.
  • assimilate_bus.h/assimilate_bus.cpp - библиотеката, която обработва I2C комуникацията с подчинения сензор/актьори
  • VizJson.h/VizJson.cpp - библиотеката, която форматира/изгражда всеки JSON, публикуван чрез MQTT
  • config.h/config.cpp - библиотеката, която чете/кутии/записва конфигурационни файлове на SPIFFS
  • static_i2c_callbacks.ino - обратните обаждания на I2C за получено свойство и цикълът от подчинени заявки са пълни static_mqtt.ino - функциите MQTT
  • static_server.ino - функциите на уеб сървъра
  • static_utility.ino - помощни функции

Статичните INO функции бяха използвани (вместо библиотеки) по различни причини, но главно, за да могат функциите Webserver и MQTT да играят добре заедно.

РЕСУРСИТЕ НА SPIFFS

Подробни обяснения за файловете SPIFFS можете да намерите тук.

  • favicon.ico - ресурс, използван от Ace Editor
  • config

    • device.json - конфигурацията за устройството (Wifi, MQTT …)
    • slave_metas _#. json - генериран по време на изпълнение за всеки номер на подчинен адрес (#)
    • user_card _#. json - персонализирана крайна точка за интегриране в deviceInfo за всеки номер на подчинен адрес (#)
    • user_card_base.json - персонализирана крайна точка, която да бъде интегрирана в deviceInfo за устройството
    • user_meta _#. json - персонализираните метаданни заменят този на подчинените за всеки номер на адрес на подчинен (#)
    • user_props.json - персонализирани имена на свойства, които да отменят тези в метаданните на подчинените устройства
  • корс

    • card -webcomponent.css - таблица със стилове за различни персонализирани карти
    • card -webcomponent.html - уебкомпонент за различни персонализирани карти
  • редактор

    • assimilate -logo-p.webp" />
    • edit.htm.gz - gzip на HTML на Ace Editor
    • edit.htm.src - оригинален HTML на Ace Editor
    • favicon -32x32-p.webp" />

ИЗТЕГЛЯНЕ НА ФИРМУ

  • Хранилището на кодовете може да се намери тук (моментна снимка).
  • ZIP файл на библиотеката можете да намерите тук (моментна снимка).
  • Инструкции за „Импортиране на ZIP библиотека“тук.
  • След като библиотеката е инсталирана, можете да отворите примера „mqtt_crouton_esp8266_cors_webcomponents“.
  • Инструкции за настройка на Arduino за Wemos D1 Mini тук.
  • Зависимости: ArduinoJson, TimeLib, PubSubClient, NeoTimer (вижте прикачените файлове, ако нарушавате промените в хранилищата).

КАЗВАНЕ В SPIFFS

След като кодът е зареден в Arduino IDE, отворете device.json в папката data/config:

  • Променете стойността на wifi_ssid с вашия WiFi SSID.
  • Променете стойността на wifi_key с вашия WiFi ключ.
  • Променете стойността на mqtt_device_name с предпочитаната от вас идентификация на устройството (не е необходимо присъединяване).
  • Променете стойността на mqtt_device_description с предпочитаното от вас Описание на устройството (в Crouton).
  • Запазете device.json.
  • Качете файловете с данни в SPIFFS.

Основната входна точка за примера на AssimilateBus:

/*
*
*ОЧАКВАТ се ПРАВИЛА ЗА БИЗНЕСА ЗА УСТРОЙСТВОТО ДА БЪДАТ КОНТРОЛИРАНИ ЧРЕЗ MQTT - НЕ СЕ ПЕЧАТ В ТОЗИ ФИРМУ
*
* Освен настройка и цикъл в този файл
* важните движещи се части са
* on_bus_received и on_bus_complete в static_i2c_callbacks.ino
* и
* mqtt_publish и mqtt_callback в static_mqtt.ino
*
*/
#include "types.h"
#включва "VizJson.h"
#include "assimilate_bus.h"
#include "debug.h"
#include "config.h"
#включва

#включва

// задайте MQTT_MAX_PACKET_SIZE на ~ 3000 (или вашите нужди за deviceInfo json)

#включва
#включва
#включва
#включва
#включва
// --------------------------------- ДЕКЛАРАЦИИ НА ПАМЕТТА
// ------------------------------------------------ - определя
#defineDBG_OUTPUT_FLAG2 // 0, 1, 2 МИНИМУМ, ИЗПУСКАНЕ, ПЪЛНО
#define_mqtt_pub_topic "изходящи" // КОНВЕНЦИИ НА КРООН
#define_mqtt_sub_topic "входяща поща"
// ------------------------------------------------ - обекти от клас
Debug _debug (DBG_OUTPUT_FLAG);
AssimilateBus _assimilate_bus;
VizJson _viz_json;
Config _config_data;
WiFiClient _esp_client;
PubSubClient _client (_esp_client);
WiFiUDP Udp;
ESP8266WebServer _сервър (80);
Neotimer _timer_property_request = Neotimer (5000);
// ------------------------------------------------ - структури на данни / променлива
RuntimeDeviceData _runtime_device_data;
PropertyDto _dto_props [50]; // max 10 slave x max 5 свойства
// ------------------------------------------------ - контрол на потока
volatilebool _sent_device_info = невярно;
байт _dto_props_index = 0;
bool _fatal_error = false;
// --------------------------------- ДЕКЛАРАЦИИ НА ОБХВАТ НА ФУНКЦИЯ
// ------------------------------------------------ - static_i2c_callbacks.ino
voidon_bus_received (байт slave_address, байт prop_index, роля на роля, име на char [16], char стойност [16]);
voidon_bus_complete ();
// ------------------------------------------------ - static_mqtt.ino
voidmqtt_callback (char* тема, байт* полезен товар, дължина без знак);
voidmqtt_loop ();
int8_tmqtt_get_topic_index (char* тема);
voidmqtt_init (constchar* wifi_ssid, constchar* wifi_password, constchar* mqtt_broker, int mqtt_port);
voidmqtt_create_subscriptions ();
voidmqtt_publish (char *root_topic, char *deviceName, char *крайна точка, constchar *полезен товар);
boolmqtt_ensure_connect ();
voidmqtt_subscribe (char *root_topic, char *deviceName, char *крайна точка);
voidi2c_set_and_get (адрес на байт, код на байт, constchar *параметър);
// ------------------------------------------------ - static_server.ino
Низ server_content_type_get (Име на низ на файл);
boolserver_path_in_auth_exclusion (String път);
boolserver_auth_read (Пътна линия);
boolserver_file_read (Пътя на низ);
voidserver_file_upload ();
voidserver_file_delete ();
voidserver_file_create ();
voidserver_file_list ();
voidserver_init ();
voidtime_services_init (char *ntp_server_name, байт time_zone);
time_tget_ntp_time ();
voidsend_ntp_packet (IP адрес и адрес);
char *time_stamp_get ();
// ------------------------------------------------ - static_utility.ino
Низ spiffs_file_list_build (String път);
voidreport_deserialize_error ();
voidreport_spiffs_error ();
boolcheck_fatal_error ();
boolget_json_card_type (байт slave_address, байт prop_index, char *card_type);
boolget_struct_card_type (байт slave_address, байт prop_index, char *card_type);
boolget_json_is_series (байт slave_address, байт prop_index);
voidstr_replace (char *src, constchar *oldchars, char *newchars);
байт get_prop_dto_idx (байт slave_address, байт prop_index);
// --------------------------------- ОСНОВНО
voidsetup () {
DBG_OUTPUT_PORT.begin (115200);
SetupDeviceData device_data;
Serial.println (); Serial.println (); // марж за боклук на конзолата
забавяне (5000);
if (DBG_OUTPUT_FLAG == 2) DBG_OUTPUT_PORT.setDebugOutput (вярно);
_debug.out_fla (F ("настройка"), вярно, 2);
// получаваме необходимата конфигурация
if (SPIFFS.begin ()) {
_debug.out_str (spiffs_file_list_build ("/"), вярно, 2);
if (! _config_data.get_device_data (device_data, _runtime_device_data)) {
report_deserialize_error ();
връщане;
}
} else {
report_spiffs_error ();
връщане;
}
// използваме стойността на таймера, зададена в device.json
_timer_property_request.set (device_data.sensor_interval);
mqtt_init (device_data.wifi_ssid, device_data.wifi_key, device_data.mqtt_broker, device_data.mqtt_port);
time_services_init (device_data.ntp_server_name, device_data.time_zone);
server_init ();
// стартира събирането на метаданни
_assimilate_bus.get_metadata ();
_assimilate_bus.print_metadata_details ();
mqtt_ensure_connect ();
// се нуждае от свойство (имена) на сензора, за да завърши събирането на метаданни
_assimilate_bus.get_properties (on_bus_received, on_bus_complete);
_timer_property_request.reset (); // може да изчезне забележимо време до този момент, така че започнете отново
}
voidloop () {
if (! check_fatal_error ()) връщане;
mqtt_loop ();
_server.handleClient ();
if (_timer_property_request.repeat ()) {
_assimilate_bus.get_properties (on_bus_received, on_bus_complete);
}
}

вижте rawmqtt_crouton_esp8266_cors_webcomponents.ino хоствано с ❤ от GitHub

Стъпка 5: КАРТА ЗА УСТРОЙСТВО

КАРТА ЗА УСТРОЙСТВО
КАРТА ЗА УСТРОЙСТВО
КАРТА ЗА УСТРОЙСТВО
КАРТА ЗА УСТРОЙСТВО
КАРТА ЗА УСТРОЙСТВО
КАРТА ЗА УСТРОЙСТВО
КАРТА ЗА УСТРОЙСТВО
КАРТА ЗА УСТРОЙСТВО

Картата на устройството (тип карта: assim-device) се хоства на уебсайта и не е необходимо да се обслужва от устройството (CORS).

Неговата страница по подразбиране изброява:

  • Темите за MQTT за четене и писане на устройството
  • Точката за достъп, към която е свързано устройството
  • Връзка към редактора на файлове SPIFFS, хостван на устройството с помощта на ACE EDITOR
  • Икона на око, която разкрива страницата Показване/скриване на картата.

Страницата за показване/скриване на картата изброява:

  • Всяка карта като отделен елемент
  • Удебелен син шрифт при показване
  • Черен нормален шрифт, когато е скрит
  • Икона, изобразяваща вида на картата.

Картата може да бъде скрита, като щракнете върху бутона за скриване на картите или щракнете върху елемент със сив удебелен шрифт в списъка. Картите могат да бъдат показани, като щракнете върху елемент с нормален черен шрифт в списъка.

Слабо свързани с тази функция са информационните тостове. Ако някоя от крайните точки в deviceInfo има зададено свойство за информация, до бутона за скриване на картата ще се покаже бутон с информация. При щракване контекстната информация, определена в крайната точка, ще бъде „препечена“към прозореца.

Ако картата на устройството не е дефинирана, бутоните за скриване няма да се показват на картите. Това е така, защото веднъж скрити, няма начин да ги покажете отново.

Вижте ENDPOINT CUSTOMISATION за подробности как може да се добави картата на устройството за асимиране чрез SPIFFS файловете на ESP8266.

AssimilateCrouton WebComponent

железни сигнали>
div>
ПОКАЖЕТЕ СКРИВАНЕ НА ИКОНАТА
i> span>
ФОРМУЛА ЗА УСТРОЙСТВО
MQTT ТЕМИdiv>
/outbox/{{endPointJson.device_name}}/*div>
/inbox/{{endPointJson.device_name}}/*div>
WIFI SSIDdiv>
{{endPointJson.ssid}} div>
IP АДРЕС div>
{{endPointJson.ip_addr}} a> div>
div>
ПОКАЖЕТЕ СКРИВАНЕ НА СПИСЪКА
елемент>хартия-елемент>
шаблон>
paper-listbox>
div>
crouton-card>
шаблон>
dom-module>

вижте rawassim-device.html хоствано с ❤ от GitHub

Стъпка 6: КАРТА ЗА УСИЛЕНИЕ

КАРТА ЗА УСИЛЕНИЕ
КАРТА ЗА УСИЛЕНИЕ
КАРТА ЗА УСИЛЕНИЕ
КАРТА ЗА УСИЛЕНИЕ
КАРТА ЗА УСИЛЕНИЕ
КАРТА ЗА УСИЛЕНИЕ

Картата за седмичен преглед (тип карта: assim-weekview) се хоства на устройството (папка cors). Той се инжектира в пакета deviceInfo, публикуван за AssimilateCrouton, чрез добавяне на файл config/user_card _#. Json към SPIFFS (в този случай user_card_9.json).

ПРЕГЛЕД

Делничните дни са представени като списъци с времеви интервали. Детайлността на времевия интервал е зададена със свойството "interval_mins" в config/user_card _#. Json. Трябва да е част от час или кратно на час, напр. 10, 15, 20, 30, 60, 120, 360. Щракването върху времеви интервал гарантира, че за съответното устройство през това време се командва включено състояние. Ако времевият интервал е сега, команда се изпраща (публикува) незабавно за устройството. Обикновено състоянието се проверява/публикува всяка минута. Селекциите се записват в LocalStorage, така че часовете ще бъдат презаредени с опресняване на браузъра.

СЛУЧАИ НА УПОТРЕБА

В сегашното си състояние седмичният преглед е подходящ за устройства, които могат да използват превключвател за превключване, за да визуализират състоянието си, т.е. те са или включени или изключени и след като са настроени, остават в това състояние. Светлините, вентилаторите и бойлерите са добри кандидати.

ОГРАНИЧЕНИЯ/ОГРАНИЧЕНИЯ

  • Interval_mins трябва да бъде една от стойностите, споменати по -горе
  • Прегледът на седмицата не поддържа моментни действия, които също са насрочени, като например включване на крана за кратко (5 секунди) два пъти на ден.

БЪДЕЩЕ

  • Очаква се моментните действия да бъдат подкрепени.
  • Обмисля се синхронизирано съхранение между устройства, за избор на график.

Стъпка 7: Персонализиране на ENDPOINT

Както бе споменато във FIRMWARE, към файловата система SPIFFS са добавени 2 нови конвенции за персонализиране на крайните точки. JSON файловете са фрагменти, които се добавят към свойството endpoints в deviceInfo пакета, публикуван в брокера MQTT, който става дефиниция на таблото.

Ключовете на крайните точки се генерират във фърмуера:

  • CC_device (Персонализирана карта) за user_card_base.json
  • CC_SLAVE_ENDPOINT NAME за user_card _#. Json (# е подчинен адрес)

Както бе споменато по -горе, има променливи, които се заменят със стойности по време на изпълнение:

  • mqtt_device_name
  • wifi_ssid
  • local_ip

user_card_base.json

Пример:

user_card _#. json

Пример:

Стъпка 8: ВИДЕО

Препоръчано: