Լիտկոն միավորվում է

Որոշ ժամանակ առաջ մենք ձեզ ներկայացրեցինք խելացի թերմոստատ. Այս հոդվածը ի սկզբանե նախատեսված էր որպես իր որոնվածի և կառավարման համակարգի ցուցադրություն: Բայց որպեսզի բացատրենք թերմոստատի տրամաբանությունը և այն, ինչ մենք իրականացրել ենք, անհրաժեշտ է ուրվագծել ամբողջ հայեցակարգը որպես ամբողջություն:

Լիտկոն միավորվում է

Ավտոմատացման մասին

Պայմանականորեն, ամբողջ ավտոմատացումը կարելի է բաժանել երեք կատեգորիայի.
Կատեգորիա 1 — առանձին «խելացի» սարքեր։ Դուք տարբեր արտադրողներից գնում եք լամպ, թեյնիկ և այլն: Կողմ. Յուրաքանչյուր սարք ընդլայնում է հնարավորությունները և մեծացնում հարմարավետությունը: Դեմ: Յուրաքանչյուր նոր արտադրող պահանջում է իր սեփական կիրառումը: Տարբեր արտադրողների սարքերի արձանագրությունները հաճախ համատեղելի չեն միմյանց հետ:

Կատեգորիա 2 — մեկ տախտակով կամ x86 համատեղելի ԱՀ-ի տեղադրում: Սա վերացնում է հաշվողական հզորության սահմանափակումները, և MajorDoMo-ն կամ ցանկացած այլ սերվերի բաշխում՝ խելացի տունը կառավարելու համար, տեղադրված է այս մեքենայի վրա: Այսպիսով, արտադրողների մեծ մասի սարքերը միացված են մեկ տեղեկատվական տարածքում: Նրանք. հայտնվում է ձեր սեփական Սերվերը խելացի տան համար: Կողմ. համատեղելիություն մեկ կենտրոնի ներքո, որն ապահովում է ընդլայնված կառավարման հնարավորություններ: Դեմ. եթե սերվերը ձախողվի, ամբողջ համակարգը վերադառնում է 1-ին փուլ, այսինքն. դառնում է մասնատված կամ անօգուտ:

Կատեգորիա 3 - առավել հարդքոր տարբերակը: Վերանորոգման փուլում բոլոր հաղորդակցությունները անցկացված են և բոլոր համակարգերը կրկնօրինակված են: Կողմ. ամեն ինչ հասցվում է կատարելության, իսկ հետո տունն իսկապես խելացի է դառնում: Թերությունները. 1-ին և 2-րդ կատեգորիաների համեմատ չափազանց թանկ է, ամեն ինչ նախօրոք մտածելու և յուրաքանչյուր մանրուք հաշվի առնելու անհրաժեշտություն:

Օգտատերերի մեծ մասն ընտրում է առաջին տարբերակը, այնուհետև սահուն անցնում է երկրորդ տարբերակին: Եվ հետո ամենահամառները հասնում են 3-րդ տարբերակին։

Բայց կա մի տարբերակ, որը կարելի է անվանել բաշխված համակարգ՝ յուրաքանչյուր առանձին սարք կլինի և՛ սերվեր, և՛ հաճախորդ: Ըստ էության, սա 1-ին և 2-րդ տարբերակները վերցնելու և համատեղելու փորձ է: Վերցրեք նրանց բոլոր դրական կողմերը և վերացրեք բացասական կողմերը՝ բռնելու ոսկե միջինը:

Թերեւս ինչ-որ մեկը կասի, որ նման տարբերակ արդեն մշակված է։ Բայց նման որոշումները նեղ կենտրոնացված են. ծրագրավորման մեջ ըմբռնող մարդկանց համար: Մեր նպատակն է նվազեցնել նման բաշխված համակարգեր մուտք գործելու արգելքը՝ ինչպես վերջնական սարքերի, այնպես էլ առկա սարքերը մեր համակարգում ինտեգրելու տեսքով: Թերմոստատի դեպքում օգտատերը պարզապես հեռացնում է իր հին թերմոստատը, տեղադրում խելացի և միացնում է իր գոյություն ունեցող սենսորները դրան։ Առանց լրացուցիչ քայլերի։

Եկեք նայենք մեր համակարգում ինտեգրմանը` օգտագործելով օրինակ:

Եկեք պատկերացնենք, որ մենք ունենք 8 Sonoff մոդուլ մեր ցանցում: Որոշ օգտատերերի համար հսկողությունը Sonoff ամպի միջոցով (կատեգորիա 1) բավարար կլինի: Ոմանք կսկսեն օգտագործել երրորդ կողմի որոնվածը և սահուն կերպով կտեղափոխվեն 2-րդ կատեգորիա։ OpenHub-ը, Majordomo-ն կամ ցանկացած այլ նպատակ են հետապնդում՝ միավորել տարբեր սարքերը մեկ տեղեկատվական տարածքում, որը տեղակայված է կամ ինտերնետում կամ տեղական ցանցում: Ուստի Սերվերի առկայությունը պարտադիր է։ Այստեղ է առաջանում հիմնական խնդիրը. եթե Սերվերը ձախողվի, ամբողջ համակարգը դադարում է աշխատել ինքնուրույն: Դա կանխելու համար համակարգերը դառնում են ավելի բարդ, ավելացվում են ձեռքով կառավարման մեթոդներ, որոնք կրկնօրինակում են ավտոմատացումը սերվերի ձախողման դեպքում:

Մենք գնացինք այլ ճանապարհով, որտեղ յուրաքանչյուր սարք ինքնաբավ է: Այսպիսով, Սերվերը որոշիչ դեր չի խաղում, այլ միայն ընդլայնում է ֆունկցիոնալությունը:

Վերադառնանք մտքի փորձին։ Եկեք նորից վերցնենք նույն 8 Sonoff մոդուլները և տեղադրենք Lytko որոնվածը դրանց մեջ։ Lytko-ի բոլոր որոնվածներն ունեն գործառույթ SSDP. SSDP-ն ցանցային արձանագրություն է, որը հիմնված է ինտերնետ արձանագրությունների փաթեթի վրա՝ գովազդի և ցանցային ծառայությունների հայտնաբերման համար: Հարցման պատասխանը կարող է լինել ստանդարտ կամ երկարաձգված: Բացի ստանդարտ գործառույթներից, մենք այս պատասխանում ներառել ենք ցանցում սարքերի ցանկի ստեղծումը: Այսպիսով, սարքերն իրենք են գտնում միմյանց, և նրանցից յուրաքանչյուրը կունենա նման ցուցակ։ SSDP թերթիկի օրինակ.

"ssdpList": 
	{
		"id": 94967291,  
		"ip": "192.168.x.x",
                "type": "thermostat"
	}, 
	{
		"id": 94967282,
		"ip": "192.168.x.x",
                "type": "thermostat"
	}

Ինչպես տեսնում եք օրինակից, ցանկը ներառում է սարքի ID-ներ, ցանցի IP հասցեն, միավորի տեսակը (մեր դեպքում՝ Sonoff-ի վրա հիմնված թերմոստատ): Այս ցանկը թարմացվում է երկու րոպեն մեկ անգամ (այս ժամանակահատվածը բավարար է ցանցում սարքերի քանակի դինամիկ փոփոխություններին արձագանքելու համար): Այս կերպ մենք հետևում ենք ավելացված, փոփոխված և անջատված սարքերին՝ առանց օգտատիրոջ որևէ գործողության: Այս ցանկն ուղարկվում է դիտարկիչին կամ բջջային հավելվածին, և սկրիպտն ինքնին ստեղծում է էջ՝ որոշակի թվով բլոկներով: Յուրաքանչյուր բլոկ համապատասխանում է մեկ սարքի/սենսորի/կարգավորիչի: Տեսողականորեն ցուցակն այսպիսի տեսք ունի.

Լիտկոն միավորվում է

Բայց ի՞նչ, եթե այլ ռադիո տվիչներ միացված են esp8266/esp32-ին cc2530 (ZigBee) կամ nrf24 (MySensors) միջոցով:

Նախագծերի մասին

Շուկայում կան տարբեր բաշխված համակարգեր: Մեր համակարգը թույլ է տալիս ինտեգրվել ամենահայտնիների հետ:

Ստորև ներկայացված են նախագծեր, որոնք այս կամ այն ​​կերպ փորձում են փոխել իրավիճակը տարբեր արտադրողների միմյանց հետ անհամատեղելիության հետ: Սա, օրինակ, SLS Gateway, MySensors կամ ZESP32. ZigBee2MQTT կապված է MQTT սերվերի հետ, ուստի այն հարմար չէ օրինակի համար:

MySensors-ի ներդրման տարբերակներից մեկը ESP8266-ի վրա հիմնված դարպասն է: Մնացած օրինակները գտնվում են ESP32-ում: Եվ դրանցում դուք կարող եք կիրառել սարքերի հայտնաբերման և ցանկի ստեղծման մեր գործառնական սկզբունքը:

Եկեք եւս մեկ մտքի փորձ կատարենք։ Մենք ունենք ZESP32 դարպաս կամ SLS Gateway կամ MySensors: Ինչպե՞ս կարելի է դրանք համատեղել մեկ տեղեկատվական տարածքում: Մենք կավելացնենք SSDP արձանագրության գրադարանը այս դարպասների ստանդարտ գործառույթներին: Այս վերահսկիչին SSDP-ի միջոցով մուտք գործելիս այն կավելացնի դրան միացված սարքերի ցանկը ստանդարտ պատասխանին: Այս տեղեկատվության հիման վրա զննարկիչը կստեղծի էջ: Ընդհանուր առմամբ այն կունենա հետևյալ տեսքը.

Լիտկոն միավորվում է
Վեբ ինտերֆեյս

Լիտկոն միավորվում է
PWA հավելված

"ssdpList": 
{
   "id": 94967291, // уникальный идентификатор устройства
   "ip": "192.168.x.x", // ip адрес в сети
   "type": "thermostat" // тип устройства
},
{
   "id": 94967292,
   "ip": "192.168.x.x",
   "type": "thermostat"
},
{
   "id": 94967293,
   "ip": "192.168.x.x",
   "type": "thermostat"
},
{  
   "id": 13587532, 
   "type": "switch"  
},
{  
   "id": 98412557, 
   "type": "smoke"
},
{  
   "id": 57995113, 
   "type": "contact_sensor"
},
{  
   "id": 74123668,
   "type": "temperature_humidity_pressure_sensor"
},
{
    "id": 74621883, 
    "type": "temperature_humidity_sensor"
}

Օրինակը ցույց է տալիս, որ սարքերն ավելացվում են միմյանցից անկախ: Միացված են 3 թերմոստատ՝ սեփական IP հասցեներով և 5 տարբեր սենսորներ՝ յուրահատուկ ID-ներով։ Եթե ​​սենսորը միացված է Wi-Fi ցանցին, այն կունենա իր սեփական IP-ն, եթե այն միացված է դարպասին, ապա սարքի IP հասցեն կլինի դարպասի IP հասցեն:

Մենք օգտագործում ենք WebSocket սարքերի հետ հաղորդակցվելու համար: Սա թույլ է տալիս նվազագույնի հասցնել ռեսուրսների ծախսերը՝ համեմատած հարցումներ ստանալու հետ և դինամիկ տեղեկատվություն ստանալ միանալու կամ փոխելու ժամանակ:

Տվյալները վերցվում են անմիջապես սարքից, որին պատկանում է բլոկը՝ շրջանցելով սերվերը։ Այսպիսով, եթե սարքերից որևէ մեկը խափանվի, համակարգը շարունակում է աշխատել: Վեբ ինտերֆեյսը պարզապես չի ցուցադրում ցանկից բացակայող սարքը: Բայց կորստի մասին ազդանշանը, անհրաժեշտության դեպքում, ծանուցման տեսքով կգա օգտագործողի հավելվածում:

Այս մոտեցման իրականացման առաջին փորձը PWA հավելվածն էր: Սա թույլ է տալիս օգտատիրոջ սարքում պահել բլոկային բազա և պահանջել միայն անհրաժեշտ տվյալները: Բայց ելնելով կառուցվածքի առանձնահատկություններից՝ այս տարբերակը կիսատ է։ Եվ կա միայն մեկ ելք՝ Android-ի և IOS-ի համար նախատեսված հայրենական հավելված, որն այժմ ակտիվ մշակման փուլում է։ Լռելյայնորեն հավելվածը կաշխատի միայն ներքին ցանցում: Անհրաժեշտության դեպքում կարող եք ամեն ինչ փոխանցել արտաքին հսկողության։ Այսպիսով, երբ օգտատերը լքում է տեղական ցանցը, հավելվածն ավտոմատ կերպով անցնում է ամպի։

Արտաքին հսկողություն - էջի ամբողջական կրկնօրինակում: Երբ էջն ակտիվացված է, օգտատերը կարող է մուտք գործել սերվեր և կառավարել սարքերը իր անձնական հաշվի միջոցով: Այսպիսով, Սերվերը ընդլայնում է իր ֆունկցիոնալությունը՝ թույլ տալով ձեզ կառավարել սարքերը տնից դուրս և չկապված լինել նավահանգիստների փոխանցման կամ հատուկ IP-ի հետ:

Այսպիսով, վերը նշված տարբերակը չունի սերվերային մոտեցման թերությունները, ինչպես նաև ունի մի շարք առավելություններ՝ նոր սարքերի միացման ճկունության տեսքով։

Թերմոստատի մասին

Եկեք նայենք կառավարման համակարգին՝ օգտագործելով մեր թերմոստատը որպես օրինակ:

Տրամադրվում է՝

  1. Ջերմաստիճանի վերահսկում յուրաքանչյուր թերմոստատի համար (ցուցադրվում է որպես առանձին բլոկ);
  2. Թերմոստատի աշխատանքի ժամանակացույցի կարգավորում (առավոտյան, կեսօրին, երեկո, գիշեր);
  3. Wi-Fi ցանցի ընտրություն և սարքի միացում;
  4. Սարքի թարմացում «օդում»;
  5. MQTT-ի կարգավորում;
  6. Կարգավորեք ցանցը, որին միացված է սարքը:

Լիտկոն միավորվում է

Ի լրումն վեբ ինտերֆեյսի միջոցով վերահսկելու, մենք տրամադրեցինք դասականը` սեղմելով էկրանին: Ինքնաթիռում կա Nextion NX3224T024 2.4 դյույմանոց մոնիտոր: Ընտրությունը նրա վրա է ընկել սարքի հետ աշխատելու հեշտության պատճառով։ Բայց մենք մշակում ենք մեր սեփական մոնիտորը՝ հիմնված STM32-ի վրա: Նրա ֆունկցիոնալությունը ավելի վատ չէ, քան Nextion-ը, սակայն այն կարժենա ավելի քիչ, ինչը դրականորեն կանդրադառնա սարքի վերջնական գնի վրա։

Լիտկոն միավորվում է

Ինչպես ցանկացած ինքն իրեն հարգող թերմոստատի էկրան, մեր Nextion-ը կարող է.

  • սահմանել օգտագործողի կողմից պահանջվող ջերմաստիճանը (օգտագործելով աջ կողմում գտնվող կոճակները);
  • միացնել և անջատել պլանավորված շահագործման ռեժիմը (կոճակ H);
  • ցուցադրման ռելեի գործողություն (ձախ կողմում գտնվող սլաք);
  • ունի երեխաների պաշտպանություն (ֆիզիկական սեղմումները արգելափակված են մինչև կողպեքը հանվի);
  • ցուցադրում է WiFi ազդանշանի ուժը:

Բացի այդ, օգտագործելով մոնիտորը կարող եք.

  • ընտրեք օգտագործողի կողմից տեղադրված սենսորի տեսակը.
  • կառավարել երեխայի կողպեքի գործառույթը;
  • թարմացնել որոնվածը:

Լիտկոն միավորվում է

Սեղմելով WiFi սանդղակի վրա՝ օգտատերը կտեղեկանա միացված ցանցի մասին։ QR կոդը օգտագործվում է սարքը HomeKit որոնվածում զուգակցելու համար:

Լիտկոն միավորվում է

Էկրանի հետ աշխատելու ցուցադրություն.

Լիտկոն միավորվում է

Մենք զարգացել ենք ցուցադրական էջ երեք միացված թերմոստատներով:

Դուք կարող եք հարցնել. «Ի՞նչն է հատուկ ձեր թերմոստատի մասին»: Այժմ շուկայում կան բազմաթիվ թերմոստատներ՝ Wi-Fi ֆունկցիայով, պլանավորված աշխատանքով և հպման կառավարմամբ: Իսկ էնտուզիաստները գրել են մոդուլներ՝ առավել հայտնի խելացի տնային համակարգերի հետ շփվելու համար (Majordomo, HomeAssistant և այլն):

Մեր թերմոստատը համատեղելի է նման համակարգերի հետ և ունի վերը նշված բոլորը: Բայց տարբերակիչ առանձնահատկությունն այն է, որ թերմոստատը մշտապես բարելավվում է համակարգի ճկունության շնորհիվ: Յուրաքանչյուր թարմացումից հետո ֆունկցիոնալությունը կընդլայնվի: Համակարգի կառավարման ստանդարտ մեթոդին (ըստ ժամանակացույցի) մենք կավելացնենք հարմարվողական: Հավելվածը թույլ է տալիս ստանալ օգտատիրոջ աշխարհագրական դիրքը: Դրա շնորհիվ համակարգը դինամիկ կերպով կփոխի աշխատանքային ռեժիմները՝ կախված իր գտնվելու վայրից: Իսկ եղանակային մոդուլը թույլ կտա հարմարվել եղանակային պայմաններին։

Եվ ընդարձակելիություն: Յուրաքանչյուրը կարող է փոխարինել իր սովորական թերմոստատը մերով: Նվազագույն ջանքերով: Մենք ընտրել ենք շուկայում ամենահայտնի սենսորներից 5-ը և ավելացրել ենք նրանց աջակցությունը: Բայց նույնիսկ եթե սենսորն ունի բացառիկ բնութագրեր, օգտվողը կկարողանա այն միացնել մեր թերմոստատին: Դա անելու համար ձեզ հարկավոր է չափորոշել թերմոստատը՝ հատուկ սենսորով աշխատելու համար: Մենք հրահանգներ կտանք։

Թերմոստատը կամ որևէ այլ սարք միացնելիս այն միաժամանակ հայտնվում է ամենուր՝ և՛ վեբ ինտերֆեյսում, և՛ PWA հավելվածում: Սարքի ավելացումը տեղի է ունենում ավտոմատ կերպով. պարզապես անհրաժեշտ է այն միացնել Wi-Fi ցանցին:

Մեր համակարգը Սերվերի կարիք չունի, իսկ եթե ձախողվի, դդմի չի վերածվում։ Նույնիսկ եթե բաղադրիչներից մեկը ձախողվի, համակարգը չի սկսում աշխատել արտակարգ իրավիճակների դեպքում: Կարգավորիչներ, սենսորներ, սարքեր. յուրաքանչյուր տարր և՛ Սերվեր է, և՛ հաճախորդ, հետևաբար՝ լիովին ինքնավար:

Հետաքրքրվողների համար մեր սոցիալական ցանցերը. Telegram, Instagram, Telegram News, VK, facebook.

E-mail: [էլեկտրոնային փոստով պաշտպանված]

PS Մենք չենք խրախուսում ձեզ հրաժարվել Սերվերից: Մենք նաև աջակցում ենք MQTT սերվերին և ունենք մեր սեփական ամպը: Մեր նպատակն է համակարգի կայունությունն ու հուսալիությունը միանգամայն նոր մակարդակի հասցնել: Որպեսզի Սերվերը ոչ թե թույլ կետ լինի, այլ լրացնի ֆունկցիոնալությունը և ավելի հարմար դարձնի համակարգը։

Source: www.habr.com

Добавить комментарий