Բովանդակություն:

IOT123 - ԱՍԻՄԻԼԱՏ Սենսորային հանգույց. ICOS10 CORS ՎԵԲՔՈՄՓՈՆԵՆԹՆԵՐ. 8 քայլ
IOT123 - ԱՍԻՄԻԼԱՏ Սենսորային հանգույց. ICOS10 CORS ՎԵԲՔՈՄՓՈՆԵՆԹՆԵՐ. 8 քայլ

Video: IOT123 - ԱՍԻՄԻԼԱՏ Սենսորային հանգույց. ICOS10 CORS ՎԵԲՔՈՄՓՈՆԵՆԹՆԵՐ. 8 քայլ

Video: IOT123 - ԱՍԻՄԻԼԱՏ Սենսորային հանգույց. ICOS10 CORS ՎԵԲՔՈՄՓՈՆԵՆԹՆԵՐ. 8 քայլ
Video: IOT123 - BYKO LIVE RIDE 2024, Հուլիսի
Anonim
IOT123 - ASSIMILATE SENSOR HUB: ICOS10 CORS WEBCOMPONENTS
IOT123 - ASSIMILATE SENSOR HUB: ICOS10 CORS WEBCOMPONENTS
IOT123 - ASSIMILATE SENSOR HUB: ICOS10 CORS WEBCOMPONENTS
IOT123 - ASSIMILATE SENSOR HUB: ICOS10 CORS WEBCOMPONENTS

ASSIMILATE SENSOR/ACTOR Slaves- ը տեղադրում է մետատվյալներ, որոնք օգտագործվում են 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 ցանցի համար) փոփոխությունները ներառում են

  • աջակցություն Սարքի քարտին (ասիմ-սարք), որն ի թիվս այլ բաների ցույց է տալիս և թաքցնում է օգտագործողի համար սարքի առանձին քարտերը
  • info քարտի բոլոր տեղեկությունների հատկությունը, որը ցույց է տալիս քարտի համար օգտակար համատեքստային տեղեկատվության կենաց
  • աջակցություն CORS վեբ բաղադրիչներին, այս դեպքում ՝ սարքի վեբ սերվերի վրա (ESP8266):

Քայլ 1: CROUTON

ԿՐՈTONՏՈՆ
ԿՐՈTONՏՈՆ
ԿՐՈTONՏՈՆ
ԿՐՈTONՏՈՆ

Croutonis- ի կառավարման վահանակ, որը թույլ է տալիս պատկերացնել և վերահսկել ձեր IOT սարքերը նվազագույն կարգավորմամբ: Ըստ էության, դա ամենահեշտ վահանակն է, որը կարող է տեղադրվել ցանկացած IOT սարքավորման սիրահարների համար ՝ օգտագործելով միայն MQTT և JSON:

ASSIMILATE SLAVES- ը (սենսորներ և դերասաններ) ներկառուցված մետատվյալներ և հատկություններ ունեն, որոնք վարպետն օգտագործում է սարքի կառուցման համար Info json փաթեթ, որը Crouton- ն օգտագործում է կառավարման վահանակի կառուցման համար: ASSIMILATE NODES- ի և Crouton- ի միջև միջնորդը MQTT բրոքեր է, որը ցանցերի համար հարմար է. Mosquito- ն օգտագործվում է ցուցադրման համար:

Քանի որ ASSIMILATE MASTER- ը պահանջում է հատկություններ, այն ձևակերպում է պատասխան արժեքները Crouton- ի թարմացումների համար անհրաժեշտ ձևաչափով: The AssimilateCrouton պատառաքաղը ավելացնում է որոշ առանձնահատկություններ, որոնք հնարավորություն են տալիս ապակենտրոնացնել ձեր սարքը գործարկող բիզնես կանոնները, այսինքն ՝ IOT սարքը կարիք չունի ներդրված բիզնես կանոնների, դա պարզապես խողովակ է MQTT/I2C հաղորդակցության համար ավելի խելացի (ATTINY վերահսկվող) ստրուկ դերասաններին և տվիչներին:.

Քայլ 2. ՍՍԻՄԻԼԱՏ ՄԵԿՆԱԲԱՆՈԹՅՈՆ

ՍՍԻՄԻԼԱՏ ԿՌՈTONՏՈՆ
ՍՍԻՄԻԼԱՏ ԿՌՈTONՏՈՆ

ՓՈՓՈԽՈԹՅՈՆՆԵՐ CROUTON- ին

Kedեղված տարբերակից փոփոխությունները ներառում են.

  • եթե վերջնակետն ունի ուղու հատկություն, քարտի համար WebComponent- ը կկատարի HTMLImport CORS ռեսուրսի համար (ESP8266- ի վեբ սերվերը այս կառուցվածքում):
  • CORS վեբ բաղադրիչից (կախվածությունից) ցանկացած ռեսուրս հղվում է այնպես, կարծես դրանք սպասարկվում են Crouton- ի կայքից. երբ նրանք չեն կարողանում բեռնել մի բացառություն handler- ը վերադառնում է ուղիները և բեռնում, եթե դրանք վեբ կայքից են:
  • ընթացիկ տեղական ժամանակը ցուցադրվում է վերևից աջ, որն օգտակար է ստուգման պլանավորման համար:

ՊՈԼԻՄԵՐԻ ԿԱԽՈԹՅՈՆՆԵՐԸ ԵՎ ԿՈՐԻՍՆԵՐԸ

Պոլիմերային կախվածության ծառի տերևները կարող են տեղակայվել CORS- ում: Քանի որ արմատային կախվածությունները կարող են մի քանի անգամ օգտագործվել հավելվածում, դրանք չեն կարող հղվել 2 վայրից (կայքէջից և սարքից), քանի որ Polymer Module Loader- ը դրանք վերաբերվում է որպես 2 առանձին ռեսուրսների և գրանցման բազմաթիվ սխալներ, որոնք արագորեն խեղաթյուրում են ծրագիրը:

Այդ պատճառով քարտի համար նախատեսված WebComponent- ը (HTML ֆայլ 1.4.0 -ում) և դրա հետ կապված CSS ֆայլը սարքում պահվող միակ ֆայլերն են: Մնացած կախվածությունները հղվում են այնպես, կարծես WebComponent- ը տեղակայված է սկզբնաղբյուրի «html» թղթապանակում, ինչը հեշտացնում է WebComponents- ի մշակումն այդ թղթապանակից մինչև պատրաստ լինել SPIFFS- ում ESP8266- ում վերբեռնելու համար: AssimilateCrouton- ը կմշակի, թե ինչպես ստանալ ճիշտ ֆայլեր:

EPԲԱՎԱՈԹՅՈՆ

Բնօրինակի Crouton- ի ստեղծողը edfungus- ը գրել է աղբյուրը Pug/Less- ում և ուներ NPM/Grunt գործիքաշար: Ես Pug/Less- ը մատուցեցի որպես HTML/css և պարզապես խմբագրեցի/տարածեցի մատուցված ֆայլերը: Սա կոտրեց NPM/Grunt գործիքակազմը: Սրա ուղղումն ընդգրկված է ԱՊԱԳԱ բաժնում:

Դուք կարող եք վահանակը տեղում ստուգել ձեր DEV տուփի վրա.

  • Արմատային թղթապանակի հրամանի տողից
  • npm սկիզբը
  • lite-server- ը պտտվում է https:// localhost: 10001- ի համար

Տեղադրեք ստատիկ վեբ սերվեր.

  • պատճենեք բոլոր թղթապանակները, բացառությամբ node_modules- ի
  • պատճենել index.html (և, հնարավոր է, web.config)

ԱՊԱԳԱ

Հիմնական նպատակներից մեկն է `կատարելագործել Polymer3- ը և աշխատել Polymer CLI- ից: Բարձր առաջնահերթություն է IOT- ի ծրագրավորողների համար զարգացած խմբագիրների և շրջանակների ավելացումը: Ի վերջո, առաջադեմ ավտոմատացված համակարգը ամբողջությամբ գործարկվելու է անջատված MQTT հաճախորդներից, ինչպիսին է AssimilateCrouton- ը:

Սարքի Info փաթեթի օրինակ, որն օգտագործվում է AssimilateCrouton- ի համար

{
"deviceInfo": {
"endPoints": {
"CC_device": {
"սարքի_անուն": "ash_mezz_A3",
"card-type": "assim-device",
"ssid": "Corelines_2",
"ip_addr": "192.168.8.104",
«վերջնակետեր»: [
{
"title": "Աճիր լույսեր",
"card-type": "crouton-simple-toggle",
"վերջնակետ": "անջատիչ"
},
{
"վերնագիր": "Տնկող լույսեր",
"card-type": "crouton-assim-weekview",
"վերջնակետ": "CC_switch"
}
]
},
"CC_switch": {
"card-type": "assim-weekview",
"info": "Միացրեք կամ անջատեք լույսերը 15 րոպե տևողությամբ":
"ուղի": "https://192.168.8.104/cors",
"վերնագիր": "Տնկող լույսեր",
"interval_mins": 15,
"արժեքներ": {
"արժեքը": ""
}
},
"անջատիչ": {
"title": "Աճիր լույսեր",
"card-type": "crouton-simple-toggle",
"info": "Միացնել կամ անջատել լույսերը ժամանակավորապես",
"պիտակները": {
"false": "OFF",
"true": "ON"
},
"սրբապատկերներ": {
"կեղծ": "sun-o",
"true": "sun-o"
},
"արժեքներ": {
«արժեք»: 0
}
}
},
"կարգավիճակ": "լավ",
"name": "ash_mezz_A3",
"նկարագրություն": "Գրասենյակ Ashmore, Mezzanine, A2 տարածք",
"գույն": "#4D90FE"
}
}

դիտել rawdeviceInfo.json- ը GitHub- ի կողմից հյուրընկալված է

Քայլ 3. ՍԱՐՔԱՎՈՐՈՄ

ՍԱՐՔԻ ASՈՈՎ
ՍԱՐՔԻ ASՈՈՎ
ՍԱՐՔԻ ASՈՈՎ
ՍԱՐՔԻ ASՈՈՎ
ՍԱՐՔԻ ASՈՈՎ
ՍԱՐՔԻ ASՈՈՎ

Քանի որ ապարատային փոփոխություններ չկան, ահա համապատասխան տեղեկատվության հղումները.

  • Shell հավաքում
  • Նյութեր և գործիքներ
  • MCU պատրաստում
  • MCU Բնակարանային պատրաստում
  • Կառուցելով ստրուկների ցածր կողմի անջատիչը/RESET դուստր-տախտակը
  • Հիմնական բաղադրիչների հավաքում

Քայլ 4: FIRMWARE

ՖԻՐՄԱՎԵՐԱՅԻՆ
ՖԻՐՄԱՎԵՐԱՅԻՆ
ՖԻՐՄԱՎԻՐ
ՖԻՐՄԱՎԻՐ
ՖԻՐՄԱՎԵՐԱՅԻՆ
ՖԻՐՄԱՎԵՐԱՅԻՆ
ՖԻՐՄԱՎԻՐ
ՖԻՐՄԱՎԻՐ

ՀԻՄՆԱԿԱՆ ՓՈՓՈԽՈԹՅՈՆՆԵՐ ԱՅՍ ՇԵՆՔԸ

Որպեսզի AssimilateCrouton հավելվածը կարողանա օգտագործել CORS ռեսուրսները սարքից, անհրաժեշտ է, որ արձագանքի վերնագրերը կազմաձևվեն որոշակի եղանակով: Սա իրականացվել է որոնվածի այս թողարկման մեջ (static_server.ino => server_file_read ()):

Նաև Պոլիմերի հիմնական կախվածության գրաֆիկը պետք է լիներ մեկ ծագումից: Ստրատեգիա է կիրառվել ՝ SPIFFS CORS ֆայլերին մեկ այլընտրանքային կառավարիչ (corsLinkOnError) ավելացնելու համար ՝ AssimilateCrouton կայքից ռեսուրսները վերբեռնելու համար, երբ դրանք սարքում չեն հայտնաբերվում:

SPIFFS ֆայլային համակարգում ավելացվել է 2 նոր պայմանագիր ՝ սարքի Ինֆո -ում ստեղծված վերջնակետերը հարմարեցնելու համար, որոնք AssimilateCrouton- ն օգտագործում է վահանակի քարտեր ստեղծելու համար.

  • /config/user_card_base.json Վերջնակետի սահմանում, երբ գործարկման ժամանակ փոփոխականները փոխանակվում են առաջին հերթին ՝,,. Սովորաբար դա այն վայրն է, որտեղ կավելացվեն սարքի քարտը: Սա հետ չի կապվում սարքի հետ:
  • /config/user_card_#.json Վերջնակետի սահմանում, երբ գործարկման ժամանակ փոփոխականները փոխանակվում են առաջին հերթին ՝,,. Սա սովորաբար այն վայրն է, որտեղ հարուստ խմբագիրները, ինչպիսիք են assim-weekview քարտը, կավելացվեն I2C ստրուկին (դերասան/ցուցիչ), որը վերաբերում է #-ին:

ԷՍԿԻՉԸ/ԳՐԱԴԱՐԱՆՆԵՐԸ

Այս փուլում նախագիծը փաթեթավորվել է որպես օրինակ AssimilateBus Arduino գրադարանի համար: Սա հիմնականում այն է, որպեսզի բոլոր անհրաժեշտ ֆայլերը հեշտ հասանելի դառնան Arduino IDE- ից: Հիմնական ծածկագրի արտեֆակտներն են.

  • mqtt_crouton_esp8266_cors_webcomponents.ino - մուտքի հիմնական կետը:
  • assimilate_bus.h/assimilate_bus.cpp - գրադարանը, որը կարգավորում է I2C հաղորդակցությունը Slave Sensor/Actors- ի հետ
  • VizJson.h/VizJson.cpp - գրադարան, որը ձևավորում/ստեղծում է MQTT- ի միջոցով հրապարակված ցանկացած JSON
  • config.h/config.cpp - գրադարան, որը կարդում/տուփեր է գրում SPIFFS- ում կազմաձևման ֆայլեր
  • static_i2c_callbacks.ino - ստացվող գույքի համար I2C- ի հետադարձ կապը և ստրուկների խնդրանքների ցիկլի ամբողջական լինելը static_mqtt.ino - MQTT գործառույթները
  • static_server.ino - վեբ սերվերի գործառույթները
  • static_utility.ino - օգնականի գործառույթներ

Ստատիկ INO գործառույթները (գրադարանների փոխարեն) օգտագործվել են տարբեր պատճառներով, բայց հիմնականում այնպես, որ Վեբ սերվերի և MQTT գործառույթները կարողանան լավ խաղալ միասին:

SPIFFS- ի ռեսուրսները

SPIFFS ֆայլերի մանրամասն բացատրությունները կարող եք գտնել այստեղ:

  • favicon.ico - ռեսուրս, որն օգտագործվում է Ace խմբագրի կողմից
  • կազմաձևել

    • device.json - սարքի կազմաձևում (Wifi, MQTT…)
    • slave_metas _#. json - ստեղծվում է գործարկման ժամանակ յուրաքանչյուր ստրուկի հասցեի համարի համար (#)
    • user_card _#. json - հարմար վերջնական կետ, որը պետք է ինտեգրվի սարքի տեղեկատվությանը յուրաքանչյուր ստրուկի հասցեի համարի համար (#)
    • user_card_base.json - հարմարեցված վերջնակետ, որը պետք է ինտեգրվի սարքի տեղեկատվությանը սարքի համար
    • user_meta _#. json - սովորական մետատվյալները գերակշռում են ստրուկների յուրաքանչյուր ստրուկի հասցեի համարին (#)
    • user_props.json - ստրուկների մետատվյալներում եղածները փոխարինելու համար սեփականության հատուկ անուններ
  • cors

    • card -webcomponent.css - ոճերի թերթ տարբեր հարմարեցված քարտերի համար
    • card -webcomponent.html - տարբեր անհատականացված քարտերի վեբ բաղադրիչ
  • խմբագիր

    • assimilate -logo-p.webp" />
    • edit.htm.gz - gzip Ace Editor HTML- ի
    • edit.htm.src - Ace Editor- ի բնօրինակ HTML
    • favicon -32x32-p.webp" />

ՖԻՐՄՅՈՐԸ ԲԱՐՁՐԱՆԵԼՈ

  • Կոդերի պահեստը կարելի է գտնել այստեղ (լուսանկար):
  • Գրադարանի ZIP- ը կարելի է գտնել այստեղ (լուսանկար):
  • «ZIP գրադարան ներմուծելու» հրահանգներն այստեղ են:
  • Գրադարանը տեղադրվելուց հետո կարող եք բացել «mqtt_crouton_esp8266_cors_webcomponents» օրինակը:
  • Wemos D1 Mini- ի համար Arduino- ի ստեղծման հրահանգներն այստեղ են:
  • Կախվածություններ. ArduinoJson, TimeLib, PubSubClient, NeoTimer (տես պահեստների փոփոխությունները խախտելու դեպքում տես հավելվածները):

ՎԵՐԱԲեռնել SPIFFS- ին

Երբ կոդը բեռնված է Arduino IDE- ում, բացեք device.json- ը տվյալների/կազմաձևման թղթապանակում.

  • Փոփոխեք wifi_ssid- ի արժեքը ձեր WiFi SSID- ով:
  • Փոփոխեք wifi_key- ի արժեքը ձեր WiFi բանալիով:
  • Փոփոխեք mqtt_device_name- ի արժեքը ձեր նախընտրած Սարքի նույնականացման միջոցով (միացման կարիք չկա):
  • Փոփոխեք mqtt_device_description- ի արժեքը ձեր նախընտրած Սարքի նկարագրությամբ (Crouton- ում):
  • Պահել device.json- ը:
  • Վերբեռնեք տվյալների ֆայլերը SPIFFS- ում:

AssimilateBus- ի հիմնական մուտքի կետը ՝

/*
*
*ՁԵՐ ՍԱՐՔԻ ԳՈՐUSԱՐԱՐ ԿԱՆՈՆՆԵՐԸ ՍՊԱՍՎՈՄ ԵՆ ԿՈՆՏՐՈԼՎԵԼ MQTT- ի միջոցով. Դժվար չէ թխել այս FIRMWARE- ում
*
* Բացի այս ֆայլում տեղադրումից և հանգույցից
* կարևոր շարժական մասերն են
* on_bus_received and on_bus_complete in static_i2c_callbacks.ino
* և
* mqtt_publish և mqtt_callback static_mqtt.ino- ում
*
*/
#ներառել "types.h"
#ներառել «VizJson.h»
#ներառել «յուրացնել_բուսը.հ»
#ներառել «debug.h»
#ներառել «config.h»
#ներառում

#ներառում

// սահմանել MQTT_MAX_PACKET_SIZE- ը 3000 ֆունտ ստեռլինգ (կամ ձեր կարիքները deviceInfo json- ին)

#ներառում
#ներառում
#ներառում
#ներառում
#ներառում
// --------------------------------- ՀԻՇԱՏԱԿԱՐԱՆ ՀԱՅՏԱՐԱՐՈԹՅՈՆՆԵՐ
// ---------------------------------------------------- - սահմանում է
#սահմանել DBG_OUTPUT_FLAG2 // 0, 1, 2 ԱՆՎԱՐ, ԹՈԱՐԿՈ,Մ, Ամբողջական
#define_mqtt_pub_topic "outbox" // CROUTON CONVENTIONS
#սահմանել_մքտտ_հիմն_թեմա «մուտքի արկղ»
// ---------------------------------------------------- - դասի առարկաներ
Debug _debug (DBG_OUTPUT_FLAG);
AssimilateBus _assimilate_bus;
VizJson _viz_json;
Config _config_data;
WiFiClient _esp_client;
PubSubClient _client (_esp_client);
WiFiUDP Udp;
ESP8266WebServer _server (80);
Neotimer _timer_property_request = Neotimer (5000);
// ---------------------------------------------------- - տվյալների կառուցվածքներ / փոփոխական
RuntimeDeviceData _runtime_device_data;
PropertyDto _dto_props [50]; // առավելագույնը 10 ստրուկ x max 5 հատկություն
// ---------------------------------------------------- - վերահսկել հոսքը
volatilebool _sent_device_info = false;
բայթ _dto_props_index = 0;
bool _fatal_error = false;
// --------------------------------- Ֆունկցիոնալ ոլորտի հռչակագրեր
// ---------------------------------------------------- - static_i2c_callbacks.ino
voidon_bus_received (բայթ slave_address, byte prop_index, Role role, char name [16], char value [16]);
voidon_bus_complete ();
// ---------------------------------------------------- - static_mqtt.ino
voidmqtt_callback (char* թեմա, բայթ* բեռնվածություն, անստորագիր երկարություն);
voidmqtt_loop ();
int8_tmqtt_get_topic_index (նշան* թեմա);
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 *endpoint, constchar *payload);
boolmqtt_ensure_connect ();
voidmqtt_subscribe (char *root_topic, char *deviceName, char *endpoint);
voidi2c_set_and_get (բայտ հասցե, բայտ կոդ, constchar *param);
// ---------------------------------------------------- - static_server.ino
Լարային server_content_type_get (լարային ֆայլի անուն);
boolserver_path_in_auth_exclusion (լարային ուղի);
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, byte time_zone);
time_tget_ntp_time ();
voidsend_ntp_packet (IPAddress & address);
char *time_stamp_get ();
// ---------------------------------------------------- - static_utility.ino
Լարային spiffs_file_list_build (լարային ուղի);
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, byte 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. սկիզբ (115200);
SetupDeviceData device_data;
Serial.println (); Serial.println (); // լուսանցք մխիթարել աղբի համար
ուշացում (5000);
եթե (DBG_OUTPUT_FLAG == 2) DBG_OUTPUT_PORT.setDebugOutput (ճշմարիտ);
_debug.out_fla (F («կարգավորում»), ճշմարիտ, 2);
// ստանալ անհրաժեշտ կազմաձևը
եթե (SPIFFS.begin ()) {
_debug.out_str (spiffs_file_list_build ("/"), true, 2);
եթե (! _config_data.get_device_data (device_data, _runtime_device_data)) {
report_deserialize_error ();
վերադարձ;
}
} ուրիշ {
report_spiffs_error ();
վերադարձ;
}
// օգտագործել սարքում տեղադրված ժմչփի արժեքը: 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 () {
եթե (! check_fatal_error ()) վերադառնա;
mqtt_loop ();
_server.handleClient ();
եթե (_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
  • Աչքի պատկերակ, որը բացահայտում է Showուցադրել/Թաքցնել քարտի էջը:

Քարտի ցուցադրում/թաքցնում էջերի ցանկերը

  • Յուրաքանչյուր քարտ `որպես առանձին տարր
  • Համարձակ կապույտ տառատեսակ ցուցադրելիս
  • Սև նորմալ տառատեսակ, երբ թաքնված է
  • Քարտի տեսակը պատկերող պատկերակ:

Քարտը կարող է թաքցվել `կտտացնելով քարտերի վրա թաքցնելու կոճակը կամ կտտացնելով ցուցակում գտնվող կապույտ-համարձակ տառատեսակով: Քարտերը կարող են ցուցադրվել `կտտացնելով ցուցակում սև-սովորական տառատեսակով:

Այս հատկության հետ թույլ առնչություն ունի տեղեկատվական կենացները: Եթե deviceInfo- ի վերջնակետերից որևէ մեկին հատկացված է տեղեկատվության հատկություն, քարտի թաքցնելու կոճակի կողքին կցուցադրվի տեղեկատվական կոճակ: Կտտացնելով վերջակետում սահմանված համատեքստային տեղեկատվությունը «կենաց» կլինի պատուհանում:

Եթե սարքի քարտը սահմանված չէ, ապա թաքցնելու կոճակները չեն ցուցադրվի քարտերի վրա: Դա պայմանավորված է նրանով, որ երբ թաքնված է, այլևս դրանք ցուցադրելու միջոց չկա:

Տե՛ս ENDPOINT CUSTOMIZATION ՝ մանրամասնելու համար, թե ինչպես կարելի է հավելյալ սարքի քարտը ավելացնել SPIFFS ֆայլերի միջոցով ESP8266- ում:

AssimilateCrouton վեբ բաղադրիչ

երկաթ-ազդանշաններ>
div>
SHՈOWՅԵԼ Թաքցնել սրբապատկերը
i> span>
ՍԱՐՔԻ ՁԵՎ
MQTT ԹԵՄԱՆԵՐ բաժանել>
/outbox/{{endPointJson.device_name}}/*div>
/մուտքի արկղ/{{endPointJson.device_name}}/*div>
WIFI SSIDdiv>
{{endPointJson.ssid}} div>
IP ADDRESSdiv>
{{endPointJson.ip_addr}} a> div>
div>
SHՈOWՅԵԼ Թաքցնել ցանկը
տարր>թուղթ-տարր>
կաղապար>
paper-listbox>
div>
crouton-card>
կաղապար>
dom-module>

դիտել rawassim-device.html hosted -ի հետ GitHub- ի կողմից հյուրընկալված

Քայլ 6. ՇԱԲԱԹԱՇՐԱՆ ՔԱՐՏ

ՇԱԲԱԹԻ ՔԱՐՏ
ՇԱԲԱԹԻ ՔԱՐՏ
ՇԱԲԱԹԻ ՔԱՐՏ
ՇԱԲԱԹԻ ՔԱՐՏ
ՇԱԲԱԹԻ ՔԱՐՏ
ՇԱԲԱԹԻ ՔԱՐՏ

Շաբաթվա դիտման քարտը (քարտի տեսակը ՝ assim-weekview) տեղակայված է սարքում (cors թղթապանակ): Այն ներարկվում է AssimilateCrouton- ի համար հրատարակված deviceInfo փաթեթում ՝ SPIFFS- ին (այս դեպքում user_card_9.json) ֆայլի config/user_card _#. Json ֆայլ ավելացնելով:

ԱՌԱՆՈԹՅՈՆ

Աշխատանքային օրերը ներկայացվում են որպես ժամանակամիջոցների ցուցակներ: Timeամկետի մանրամասնությունը սահմանվում է «interval_mins» հատկությամբ ՝ config/user_card _#. Json- ում: Այն պետք է լինի ժամի կոտորակ կամ ժամի բազմապատիկ օրինակ. 10, 15, 20, 30, 60, 120, 360. Clickամկետի վրա սեղմելը ապահովում է միացված վիճակի հրամանը համապատասխան սարքի համար այդ ժամանակ: Եթե ժամանակի սլոթը հիմա է, հրաման ուղարկվում է (հրապարակվում) անմիջապես սարքի համար: Սովորաբար վիճակը ստուգվում/հրապարակվում է ամեն րոպե: Ընտրվածները պահվում են LocalStorage- ում, ուստի ժամերը կբեռնվեն բրաուզերի թարմացմամբ:

ՕԳՏԱԳՈՐՄԱՆ Դեպքեր

Իր ներկայիս վիճակում շաբաթաթերթը հարմար է այն սարքերի համար, որոնք կարող են օգտագործել Toggle անջատիչը `իրենց վիճակը պատկերացնելու համար, այսինքն` դրանք միացված կամ անջատված են, և կարգավորումից հետո մնում են այդ վիճակում: Լույսերը, օդափոխիչները և ջրատաքացուցիչները լավ թեկնածուներ են:

ՍԱՀՄԱՆԱՓԱԿՈՄՆԵՐ/VEԱՆԱՊԱՐՀՆԵՐ

  • Interval_mins- ը պետք է լինի վերը նշված արժեքներից մեկը
  • Շաբաթվա դիտումը չի աջակցում նաև ակնթարթային գործողություններին, ինչպիսիք են օրական երկու անգամ ծորակը կարճ միացնելը (5 վայրկյան):

ԱՊԱԳԱ

  • Ակնկալվում է, որ վայրկենական գործողություններին կաջակցեն:
  • Devicesամանակացույցի ընտրության համար դիտարկվում է սարքերի համաժամեցված պահեստավորում:

Քայլ 7. ԵՐԿՐԱՅԻՆ ՊԱՏԱՍԽԱՆՈՄ

Ինչպես կարճ նշվեց FIRMWARE- ում, վերջնական կետերը հարմարեցնելու համար SPIFFS ֆայլային համակարգում ավելացվել է 2 նոր պայմանագիր: JSON ֆայլերը բեկորներ են, որոնք ավելացվում են սարքի վերջնական կետերի հատկությանը MIQTT բրոքերին տեղադրված տեղեկատվական փաթեթում, որը դառնում է վահանակի սահմանումը:

Վերջնական կետերի բանալիները ստեղծվում են որոնվածի մեջ.

  • 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: ՏԵՍԱՆՅՈԹԵՐ

Խորհուրդ ենք տալիս: