Որոշ ժամանակ առաջ մենք ձեզ ներկայացրեցինք
Ավտոմատացման մասին
Պայմանականորեն, ամբողջ ավտոմատացումը կարելի է բաժանել երեք կատեգորիայի.
Կատեգորիա 1 — առանձին «խելացի» սարքեր։ Դուք տարբեր արտադրողներից գնում եք լամպ, թեյնիկ և այլն: Կողմ. Յուրաքանչյուր սարք ընդլայնում է հնարավորությունները և մեծացնում հարմարավետությունը: Դեմ: Յուրաքանչյուր նոր արտադրող պահանջում է իր սեփական կիրառումը: Տարբեր արտադրողների սարքերի արձանագրությունները հաճախ համատեղելի չեն միմյանց հետ:
Կատեգորիա 2 — մեկ տախտակով կամ x86 համատեղելի ԱՀ-ի տեղադրում: Սա վերացնում է հաշվողական հզորության սահմանափակումները, և MajorDoMo-ն կամ ցանկացած այլ սերվերի բաշխում՝ խելացի տունը կառավարելու համար, տեղադրված է այս մեքենայի վրա: Այսպիսով, արտադրողների մեծ մասի սարքերը միացված են մեկ տեղեկատվական տարածքում: Նրանք. հայտնվում է ձեր սեփական Սերվերը խելացի տան համար: Կողմ. համատեղելիություն մեկ կենտրոնի ներքո, որն ապահովում է ընդլայնված կառավարման հնարավորություններ: Դեմ. եթե սերվերը ձախողվի, ամբողջ համակարգը վերադառնում է 1-ին փուլ, այսինքն. դառնում է մասնատված կամ անօգուտ:
Կատեգորիա 3 - առավել հարդքոր տարբերակը: Վերանորոգման փուլում բոլոր հաղորդակցությունները անցկացված են և բոլոր համակարգերը կրկնօրինակված են: Կողմ. ամեն ինչ հասցվում է կատարելության, իսկ հետո տունն իսկապես խելացի է դառնում: Թերությունները. 1-ին և 2-րդ կատեգորիաների համեմատ չափազանց թանկ է, ամեն ինչ նախօրոք մտածելու և յուրաքանչյուր մանրուք հաշվի առնելու անհրաժեշտություն:
Օգտատերերի մեծ մասն ընտրում է առաջին տարբերակը, այնուհետև սահուն անցնում է երկրորդ տարբերակին: Եվ հետո ամենահամառները հասնում են 3-րդ տարբերակին։
Բայց կա մի տարբերակ, որը կարելի է անվանել բաշխված համակարգ՝ յուրաքանչյուր առանձին սարք կլինի և՛ սերվեր, և՛ հաճախորդ: Ըստ էության, սա 1-ին և 2-րդ տարբերակները վերցնելու և համատեղելու փորձ է: Վերցրեք նրանց բոլոր դրական կողմերը և վերացրեք բացասական կողմերը՝ բռնելու ոսկե միջինը:
Թերեւս ինչ-որ մեկը կասի, որ նման տարբերակ արդեն մշակված է։ Բայց նման որոշումները նեղ կենտրոնացված են. ծրագրավորման մեջ ըմբռնող մարդկանց համար: Մեր նպատակն է նվազեցնել նման բաշխված համակարգեր մուտք գործելու արգելքը՝ ինչպես վերջնական սարքերի, այնպես էլ առկա սարքերը մեր համակարգում ինտեգրելու տեսքով: Թերմոստատի դեպքում օգտատերը պարզապես հեռացնում է իր հին թերմոստատը, տեղադրում խելացի և միացնում է իր գոյություն ունեցող սենսորները դրան։ Առանց լրացուցիչ քայլերի։
Եկեք նայենք մեր համակարգում ինտեգրմանը` օգտագործելով օրինակ:
Եկեք պատկերացնենք, որ մենք ունենք 8 Sonoff մոդուլ մեր ցանցում: Որոշ օգտատերերի համար հսկողությունը Sonoff ամպի միջոցով (կատեգորիա 1) բավարար կլինի: Ոմանք կսկսեն օգտագործել երրորդ կողմի որոնվածը և սահուն կերպով կտեղափոխվեն 2-րդ կատեգորիա։ OpenHub-ը, Majordomo-ն կամ ցանկացած այլ նպատակ են հետապնդում՝ միավորել տարբեր սարքերը մեկ տեղեկատվական տարածքում, որը տեղակայված է կամ ինտերնետում կամ տեղական ցանցում: Ուստի Սերվերի առկայությունը պարտադիր է։ Այստեղ է առաջանում հիմնական խնդիրը. եթե Սերվերը ձախողվի, ամբողջ համակարգը դադարում է աշխատել ինքնուրույն: Դա կանխելու համար համակարգերը դառնում են ավելի բարդ, ավելացվում են ձեռքով կառավարման մեթոդներ, որոնք կրկնօրինակում են ավտոմատացումը սերվերի ձախողման դեպքում:
Մենք գնացինք այլ ճանապարհով, որտեղ յուրաքանչյուր սարք ինքնաբավ է: Այսպիսով, Սերվերը որոշիչ դեր չի խաղում, այլ միայն ընդլայնում է ֆունկցիոնալությունը:
Վերադառնանք մտքի փորձին։ Եկեք նորից վերցնենք նույն 8 Sonoff մոդուլները և տեղադրենք Lytko որոնվածը դրանց մեջ։ Lytko-ի բոլոր որոնվածներն ունեն գործառույթ
"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) միջոցով:
Նախագծերի մասին
Շուկայում կան տարբեր բաշխված համակարգեր: Մեր համակարգը թույլ է տալիս ինտեգրվել ամենահայտնիների հետ:
Ստորև ներկայացված են նախագծեր, որոնք այս կամ այն կերպ փորձում են փոխել իրավիճակը տարբեր արտադրողների միմյանց հետ անհամատեղելիության հետ: Սա, օրինակ,
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-ի հետ:
Այսպիսով, վերը նշված տարբերակը չունի սերվերային մոտեցման թերությունները, ինչպես նաև ունի մի շարք առավելություններ՝ նոր սարքերի միացման ճկունության տեսքով։
Թերմոստատի մասին
Եկեք նայենք կառավարման համակարգին՝ օգտագործելով մեր թերմոստատը որպես օրինակ:
Տրամադրվում է՝
- Ջերմաստիճանի վերահսկում յուրաքանչյուր թերմոստատի համար (ցուցադրվում է որպես առանձին բլոկ);
- Թերմոստատի աշխատանքի ժամանակացույցի կարգավորում (առավոտյան, կեսօրին, երեկո, գիշեր);
- Wi-Fi ցանցի ընտրություն և սարքի միացում;
- Սարքի թարմացում «օդում»;
- MQTT-ի կարգավորում;
- Կարգավորեք ցանցը, որին միացված է սարքը:
Ի լրումն վեբ ինտերֆեյսի միջոցով վերահսկելու, մենք տրամադրեցինք դասականը` սեղմելով էկրանին: Ինքնաթիռում կա Nextion NX3224T024 2.4 դյույմանոց մոնիտոր: Ընտրությունը նրա վրա է ընկել սարքի հետ աշխատելու հեշտության պատճառով։ Բայց մենք մշակում ենք մեր սեփական մոնիտորը՝ հիմնված STM32-ի վրա: Նրա ֆունկցիոնալությունը ավելի վատ չէ, քան Nextion-ը, սակայն այն կարժենա ավելի քիչ, ինչը դրականորեն կանդրադառնա սարքի վերջնական գնի վրա։
Ինչպես ցանկացած ինքն իրեն հարգող թերմոստատի էկրան, մեր Nextion-ը կարող է.
- սահմանել օգտագործողի կողմից պահանջվող ջերմաստիճանը (օգտագործելով աջ կողմում գտնվող կոճակները);
- միացնել և անջատել պլանավորված շահագործման ռեժիմը (կոճակ H);
- ցուցադրման ռելեի գործողություն (ձախ կողմում գտնվող սլաք);
- ունի երեխաների պաշտպանություն (ֆիզիկական սեղմումները արգելափակված են մինչև կողպեքը հանվի);
- ցուցադրում է WiFi ազդանշանի ուժը:
Բացի այդ, օգտագործելով մոնիտորը կարող եք.
- ընտրեք օգտագործողի կողմից տեղադրված սենսորի տեսակը.
- կառավարել երեխայի կողպեքի գործառույթը;
- թարմացնել որոնվածը:
Սեղմելով WiFi սանդղակի վրա՝ օգտատերը կտեղեկանա միացված ցանցի մասին։ QR կոդը օգտագործվում է սարքը HomeKit որոնվածում զուգակցելու համար:
Էկրանի հետ աշխատելու ցուցադրություն.
Մենք զարգացել ենք
Դուք կարող եք հարցնել. «Ի՞նչն է հատուկ ձեր թերմոստատի մասին»: Այժմ շուկայում կան բազմաթիվ թերմոստատներ՝ Wi-Fi ֆունկցիայով, պլանավորված աշխատանքով և հպման կառավարմամբ: Իսկ էնտուզիաստները գրել են մոդուլներ՝ առավել հայտնի խելացի տնային համակարգերի հետ շփվելու համար (Majordomo, HomeAssistant և այլն):
Մեր թերմոստատը համատեղելի է նման համակարգերի հետ և ունի վերը նշված բոլորը: Բայց տարբերակիչ առանձնահատկությունն այն է, որ թերմոստատը մշտապես բարելավվում է համակարգի ճկունության շնորհիվ: Յուրաքանչյուր թարմացումից հետո ֆունկցիոնալությունը կընդլայնվի: Համակարգի կառավարման ստանդարտ մեթոդին (ըստ ժամանակացույցի) մենք կավելացնենք հարմարվողական: Հավելվածը թույլ է տալիս ստանալ օգտատիրոջ աշխարհագրական դիրքը: Դրա շնորհիվ համակարգը դինամիկ կերպով կփոխի աշխատանքային ռեժիմները՝ կախված իր գտնվելու վայրից: Իսկ եղանակային մոդուլը թույլ կտա հարմարվել եղանակային պայմաններին։
Եվ ընդարձակելիություն: Յուրաքանչյուրը կարող է փոխարինել իր սովորական թերմոստատը մերով: Նվազագույն ջանքերով: Մենք ընտրել ենք շուկայում ամենահայտնի սենսորներից 5-ը և ավելացրել ենք նրանց աջակցությունը: Բայց նույնիսկ եթե սենսորն ունի բացառիկ բնութագրեր, օգտվողը կկարողանա այն միացնել մեր թերմոստատին: Դա անելու համար ձեզ հարկավոր է չափորոշել թերմոստատը՝ հատուկ սենսորով աշխատելու համար: Մենք հրահանգներ կտանք։
Թերմոստատը կամ որևէ այլ սարք միացնելիս այն միաժամանակ հայտնվում է ամենուր՝ և՛ վեբ ինտերֆեյսում, և՛ PWA հավելվածում: Սարքի ավելացումը տեղի է ունենում ավտոմատ կերպով. պարզապես անհրաժեշտ է այն միացնել Wi-Fi ցանցին:
Մեր համակարգը Սերվերի կարիք չունի, իսկ եթե ձախողվի, դդմի չի վերածվում։ Նույնիսկ եթե բաղադրիչներից մեկը ձախողվի, համակարգը չի սկսում աշխատել արտակարգ իրավիճակների դեպքում: Կարգավորիչներ, սենսորներ, սարքեր. յուրաքանչյուր տարր և՛ Սերվեր է, և՛ հաճախորդ, հետևաբար՝ լիովին ինքնավար:
Հետաքրքրվողների համար մեր սոցիալական ցանցերը.
E-mail: [էլեկտրոնային փոստով պաշտպանված]
PS Մենք չենք խրախուսում ձեզ հրաժարվել Սերվերից: Մենք նաև աջակցում ենք MQTT սերվերին և ունենք մեր սեփական ամպը: Մեր նպատակն է համակարգի կայունությունն ու հուսալիությունը միանգամայն նոր մակարդակի հասցնել: Որպեսզի Սերվերը ոչ թե թույլ կետ լինի, այլ լրացնի ֆունկցիոնալությունը և ավելի հարմար դարձնի համակարգը։
Source: www.habr.com