
Առաջնային մոտեցումները կամ այս հոդվածի մասին
Շարունակելով հոդվածների շարքը՝ ShIoTiny — տեսողական ծրագրավորվող կառույց, հիմնված Չիպի վրա ESP8266.
Այս հոդվածում նկարագրվում է խոնավ սենյակի օդափոխության կառավարման նախագծի օրինակով, թե ինչպես է կառուցվում ծրագիրը ShIoTiny.
Նախկին հոդվածների շարքեր.
Փոխարինիչներ
Ներածություն
Մասնագիտացումից դուրս սովորություն չկա: Սա ճշմարտություն է, որը պահպանվում է ժամանակի եւ սերունդների կողմից: Ուստի գոյություն չունի ավելի լավ, քան գործնական հմտությունները սովորելու համար՝ փորձեր գրելու փորձեր: Եվ օրինակները, որոնք ցույց են տալիս, թե ինչ կարելի է անել, իսկ ինչ պետք չէ եւ փորձել, պիտանի կլինեն ՝ ինչպես երբեք: Օտարի սխալները, իհարկե, չեն կարող զերծ պահել սեփական սխալները, բայց կարող են օգնել կրճատել վերջինների թվերը։
Նախորդ հոդվածների հարցերն ու նամակները ինձ ստիպեցին իրականացնել փոքր նախագիծ՝ օդափոխության կառավարման, որպեսզի ցույց տամ, թե ինչպես են գործում ShIoTiny հանգույցները:
Առաջին գաղափարը, որը հիմք հանդիսացավ controlador-ի համար ShIoTiny — ջրատար-թորիչ կայանը — ոչ բոլորին կսովորեցնի եւ հետաքրքրություն կառաջացնի: Ուստի ես վերցրի տեղեկացված եւ շատ օգտակար օդափոխության կառավարման համակարգը որպես օրինակ:
Այս նախագիծը իմ գաղափարը չէ, այլ և այն հարմարեցրել եմ ShIoTiny.
Մինչև ամեն ինչ հասկանա, թե ինչ է ուզում
Պարգևատրման գործընթացը անսահման է։ Եվ հենց այս հատկությունը այլանդակել է բազմաթիվ լավ գաղափարներ և նախագծեր։ Առ Entwickers-ը, չիպ քաղաքների տեղադրման փոխարեն, որոնք արտադրում են, թե հիմա է այն լինելու, կամ ավելի շատ հայացքներ են տալիս, թող որպեսզի նրանք չօգտագործեն։
Հետևաբար, շատ կարևոր է իմանալ, թե որտեղ պետք է դնել կետը նախագծում։ Մյուս խոսքով, պետք է որոշել, թե ինչ ենք ցանկանում ստանալ նախագծի վերջում այն բանից, ինչ մենք ունենք սկսած շրջանում։ Ռուսերենում փաստաթուղթ, որը կազմվել է թե ինչ-որ բան ստեղծելու ճանապարհը նկարագրելու համար, հիանալի կարճ ու համադրելի բառ է 'պլան', որը ուշադիր թարգմանողները և բացթողած մենեջերները վերջին շրջանում ինչ-որ կերպ սկսել են անվանել 'ճանապարհային քարտեզ'։ Թող Աստված այդ մարդկանց հետ:
Մեր պլանը հետևյալը կլինի։ Թվում է, որ կա տարածք, որի խոնավությունը որոշակի ժամանակներում կարող է շատ բարձրանալ։ Օրինակ, նման բան, ինչպիսին է լոգարան կամ խոհանոց։ Խոնավությունը՝ վատ բան է, և պայքարի միջոցը մութն է՝ օդափոխություն։ Օդափոխման մեթոդներ քիչ են, բայց մենք, երևի, հրաժարվենք էկզոտիկ և հին մեթոդներից, օրինակ, սևամորթներից և կմնանք սովորական վենատակետում։ Վենատակետները ավելի մատչելի են, և ավելի հեշտ է դրանք գտնել մեր երկրում:
Մի խոսքով, մենք ցանկանում ենք կառավարել վենատակետը՝ այն ակտիվացնել և, համապատասխանաբար, անջատել։ Ցանկացած դեպքում, ուզում ենք, որ այն ավտոմատ կերպով ակտիվանա և անջատվի, երբ անհրաժեշտ է։
Մնում է որոշել. ինչ գործոնների դեպքում պետք է վենատակետն ակտիվանա և ինչ իրավիճակներում՝ անջատվի։
Այստեղ ամեն ինչ ակնհայտ է. եթե խոնավությունը ավելի բարձր է որևէ սահմանված մակարդակից՝ վենատակետը ակտիվանում է և օդը դուրս է քաշում։ Խոնավությունը նորմալ է՝ վենատակետը անջատվում է։
Որպեսզի բանալի ընթերցողը անմիջապես կշռի 'սահմանված' բառը։ Ինչ խաբել, ինչպես սահմանված է:
Սահմանված խոնավությունը կարելի է թելադրել մի քանի ձևերով։ Մենք կքննարկենք դրանցից երկուսը՝ առաջինը՝ փոխվող դիմադրության միջոցով և երկրորդը՝ ցանցի միջոցով MQTT պրոտոկոլի միջոցով։ Յուրաքանչյուր այս մեթոդի ունի առավելություններ և թերություններ, որոնք կքննարկվեն շարունակաբար։
Թե նրանք, ովքեր չհասկացին, բացատրեմ, որ «լրիմի շենք»՝ դա այն ջրի մակարդակն է, որի գերազանցմամբ անհրաժեշտ է միացնել օդափոխիչը։
Հաջորդ հարցը. տա՞լ այն quyềnորինակից օդափոխիչ ਨੂੰ ուղղակի միացնել։ Կարող է՞ արդյոք օգտվողը օդափոխիչը անընդհատ միացնել՝ անկախ ջրի մակարդակից, պարզապես շնորհիվ կոճակի սեղմման։ Մենք նախատեսել ենք այդ հնարավորությունը։ Անցկացնել օդափոխիչը կարող է անհրաժեշտ լինել ոչ միայն բարձրացված ջրի պարագայում, այլ նաև, օրինակ, տարբեր неприятное հոտերը հեռացնելու համար, որոնց ժողովուրդը կոչում է «ծեծ»։
Ուրեմն, մենք հասկանում ենք՝ ինչ ենք ուզում և նույնիսկ մի փոքր՝ ինչպես դա աշխատելու է։ Մեկնարկենք բոլոր ֆունկցիաները մեր օդափոխության կառավարման համակարգի.
- ցածր ջրի մակարդակի սահմանները սահմանելու (երկու տարբերակ);
- ջրի մակարդակի չափում;
- օդափոխիչի ավտոմատ անջատում;
- օդափոխիչի ավտոմատ միացում;
- հասարակական միացում օդափոխիչ (կոճակի սեղմման միջոցով):
Ուրեմն, պլանը հասկանալի է։ Անհրաժեշտ է իրականացնել բոլոր նախորդ նշված ֆունկցիաները մեր ծրագրում։ Այս «պլանի» հիման վրա և կհետևենք։ Նախ, կչափենք կառուցական գծապատկերը միջոցի:
Կառուցական գծապատկեր
Ընդհանուր առմամբ, նման գծապատկերներ ունենալու ենք երկուսը։ Առաջինը՝ այն տարբերակի համար, որտեղ ջրի մակարդակի սահմանը սահմանվում է փոփոխական դիմադրությամբ։ Երկրորդ գծապատկերը՝ այն տարբերակի համար, որտեղ ջրի մակարդակի սահմանը սահմանվում է ցանցով MQTT պրոտոկոլի միջոցով։
Բայց քանի որ այս գծապատկերները կտարբերվեն ընդամենը մեկ տարրով՝ փոփոխական ռեզիստոր «ջրի մակարդակի սահման» կարգավորումն, ապա կցուցադրենք միայն մեկ կառուցական գծապատկեր։ Անշուշտ, կառուցական գծապատկերը ըստ ГОСТ պետք է տեսք ունենա տարբեր, բայց մենք ղեկավարվում ենք ոչ թե ինժեներների հրաշքների, այլ երիտասարդ սերնդի նկատմամբ։ Ուստի բնորոշությունը ավելի կարևոր է։

Ուրեմն, ինչ ենք տեսնում նկարի վրա։ Օդափոխիչը միացված է օժանդակ գործընթացին. Relay1 առանձնացման գործընթացին: ShIoTiny. Կրկին շեշտում եմ, որ օդափոխիչը մի բան է, որը ապրում է բարձր լարվածության տակ։ Ուստի, եթե ինչ-որ մեկը ուզում է անել դա ինքնուրույն՝ զգույշ եղեք։ Որոշում եղեք, ձեռք շրջանող կամ մատակարարիչների միջոցով գծերի մեջ ձեռքեր կամ մասեր երեխու գործարք, բեռնաթափեք առնվազն օդափոխիչը։ Եվ երկրորդ մեկնաբանությունը։ Եթե ձեր օդափոխիչը ավելի ուժեղ է, քան 250 Վտ, ապա մի միացրեք այն ուղիղ դեպի ShIoTiny ամենևին` միայն սկսածը։
Մենք լուծեցինք վենտիլյատորի խնդիրները։ Հիմա խոսքը գնում է «մանուալ անջատում» կոճակի մասին։ Այն միացված է մուտքագրմանը։ Input1. Այստեղ և բացատրելու ավելին չկա։
Արտաքին ջերմաստիճանային և խոնավության զգացիչ DHT-11 (կամ DHT-22 կամ դրանց նմանները)։ Սրա համար նախատեսված է հատուկ մուտք контролլերես։ ShIoTiny. Ինչպես երևում է նկարում՝ այսպիսի զգացչի միացումը նույնպես խնդիր չի ներկայացնում։
Եվ, վերջապես, փոփոխական դիմադրություն, որը սահմանում է խոնավության շեմի մակարդակը։ Աճի տակ՝ բաժանորդ, որը կազմված է փոփոխական և մշտական դիմադրություններից։ Չկա խնդիր դրա միացման մասին, բայց բացատրեմ, որ ինտեգրված ԱԾՊ-ն ESP8266 հաշվարկված է առավելագույնը 1 Վոլտի։ Հետևաբար անհրաժեշտ է մոտ 5 անգամ լարման բաժանորդ։
Եվ ևս մեկ անգամ հիշեցնեմ, որ այս բաժանորդը չի պահանջվում, եթե խոնավության շեմի մակարդակը սահմանվում է ցանցում MQTT արձանագրությամբ։
Ապահով պահենք սարքի աշխատանքային ալգորիթմի կազմումը ElDraw ShIoTiny խմբագրիչում։ Ինչպես կարող եք մտնել այդ խմբագրիչ, կարող եք կարդալ նախորդ հոդվածներում կամ ցուցումների մեջ, որի հղումը գտնվում է հոդվածի սկսվելում։
Առաջին տարբերակը, ամենահեշտը
Լstartswithէրենք պարզից. ռելեն անջատում Relay1 խոնավության սահմանային մակարդակի գերազանցման համար որոշակի ժամանակահատվածով։

Ինչպես տեսնում ենք, ոչինչ դժվար չէ: ընդամենը չորս հանգույց, հաշվի առնելով մեկնաբանության հանգույցները։ DHT11 — Սա հենց ջերմաստիճանային և խոնավության զգացիչն է (կարող եք փոխարինել DHT22).
Կոնստանտա CONST — ջերմաստիճանային շեմի մակարդակը, տոկոսի չափով։
Կոմպարատոր — մի հանգույց, որը համեմատում է երկու թիվ և ելքում 1 է արտադրում, եթե սահմանված պայմանը կատարվում է և 0, եթե պայմանը չի կատարվում։
Մեր դեպքում այդ պայմանը կլինի A>B, որտեղ A — չափված խոնավության մակարդակը, իսկ B — նույն այդ խոնավության շեմը։
Ինչպես միայն չափված խոնավության մակարդակը (A) գերազանցի խոնավության շեմի մակարդակը (B) անմիջապես կոմպարատորի ելքում A>B կախված կլինի 1 և ռելեն կջրվի։ Եվ հակառակը, երբ խոնավության մակարդակը կհասնի նորմալ արժեքին (ըստ որակի A<=B) անմիջապես կոմպարատորի ելքում A>B կախված կլինի 0 և ռելեն անջատվի։
Այս ամենը հստակ է? Ձեզ համար ոչ այնքան՝ կարդացեք նորից կամ նայեք հանգույցների աշխատանքի նկարագրությանը իրադրության մեջ։
Հայտարարում եմ, որ տվյալները սենսորից DHT11 թարմացվում են մոտ 10 վրկ մեկ անգամ։ Չնայած այս, ռելեն չի կարող մեկ անգամից ավելի արագ միանալ և անջատվել, քան 10 վրկ։
Այսպես թողնելը՝ թեև մենք կցանկանայինք սահմանել խոնավության շեմի մակարդակը փոփոխական ռեզիստորով։ Չկա ավելի հեշտ բան!

Просто փոխում ենք узел-константу на узел АЦП։ Քանի որ հենց ԱЦП-ին ենք միացրել անշարժ դիմակայողը փոխական դիմակը:
ԱЦП-ի մուտքում напряжение-ն փոփոխվում է 0-ից 1 Վոլտ։ Իսկ սենսորի ելքը — փոփոխվում է 0-ից մինչև 100%։ Ինչպե՞ս ենք մենք դրանք համեմատում։ Հեշտ է։ Узе АЦП-ն ShIoTiny ոչ միայն չափում է մուտքի напряжение-ն, այլ նաև կարողանում է այն մշտադեպման և տեղափոխման.
Այդպիսով, узел ADC1 (ԱЦП)-ի ելքում կլինի արժեք X, որը հաշվարկված է ժամանակի միջոցով

, որտեղ
— մուտքի_voltage (0-ից 1Վ); k — диапазон (АЦП-ի սարքում) և b— տեղափոխում (АЦП-ի մարզում). Այդպիսով, եթե ձերբակալենք k=100 և b=0, ապա երբ تغيرում
0-ից 1-ի միջեւ, ԱЦП-ի узелի մեջ X նյութը կփոխվի 0-ից 100 միջակայքում։ Այսինքն, թվական համարժեք է խոնավության փոփոխության միջակայքին 0-ից 100%։
Կամ, պարզապես, փոխելով տողի շարժիչը, կարելի է սահմանել խոնավության շեմը 0-ից 100։ Միայն մեկ անհարմարություն այն է, որ չկա որևէ ցուցադրման устройство։ Բայց գործնական իրականում, եթե переменные դիմակի շարժիչն ունի 6 բաժին 0%, 20%, 40%, 60%, 80%, 100%) — դա բավական է խոնավության շեմերը սահմանելու համար։
Ինչպես սահմանել пропорциялар k — диапазон (АЦП-ի սարքում) և b— տեղափոխում (АЦП-ի մարզում)? Բայց ավելի հեշտ չէ խոսելու։ Մի սեղմեք եղջերուով узел ADC1 և անմիջապես ձեր մոտ կտեղավորվի կարգավորող պատուհանը։ Այնտեղ կարող եք սահմանել ամեն ինչ, ինչ ձեզ հարկավոր է։ Մեր դեպքում դա կլինի պատուհան, ինչպես նկարում։

Ուրեմն, մեզ մոտ աշխատող լուծում կա։ Սկսենք այն կատարելագործել։
Բացի այդ, պարզ լուծումն ունի մեկ առավելություն` դերը չունի ինտերնետ։ Այն ամբողջովին ինքնուրույն է։
Երկրորդ տարբերակը, միացնում ենք կոճակը
Ամեն բան աշխատում է և բոլորը ուրախ են։ Բայց ահա խնդիրը, չենք կարող լրիվ օդափոխել։ Մենք արդեն համաձայնել ենք, որ մուտքին Input1 միացված լինի կոճակ, որը կապում է և անջատում է երկնակարգ օդափոխիչը, ուշադրություն չդարձնելով խոնավության սենսորին։
Ժամանակն է այս կոճակը աշխատանքել մեր սխեմա-ծրագրում։

Կոճակի սեղմման մշակման կետը նշված է նարնջագույն գծով։ Այն ներկայացնում է կոճակի սեղմելու հաշվիչը, որը վերադառնում է զրոյից, երբ նրա ելքում արժեքը գերազանցում է մեկ (կանաչ գիծ, узелի ելք CT).
Այստեղ ամեն ինչ աշխատում է այնպես, ինչպես նախկինում։ Հաշվիչը CT հաշվարկում է կոճակի սեղմումները, որոնք միացված են մուտքին Input1Այսինքն, այս հաշվիչի ելքի արժեքը յուրաքանչյուր գրրակի սեղմումից հետո ավելանում է 1-ով:
Երբ այդ արժեքը հասնի երկուսի (եթե մեծանա 1), անմիջապես կոմպարատորի ելքում A>B էլի 1 կերակրվի: Եվ այս 1-ը կհանի հաշվիչը CT զրոյից: Խոսքը կոմպարատորի մասին է, ըստ սխեմայի ստորև:
Այսպիսով, մեր կոճակը ունի երկու վիճակ՝ 0 և 1: Եթե մեզ պետք լիներ ավելի շատ վիճակներ (3 կամ 4 կամ այլ շատ), մեզ բավական կլիներ փոխել կայունությունը CONST մեկի վրա ուրիշ արժեքի:
Այնպես որ, ունենք երկու պայման, որպեսզի թևակալի գործարկվի. սահմանված խոնավության մակարդակի գերազանցում և մեկ անգամ սեղմում կոճակը: Հիվանդության կատարումը կամ պայմանը կիչ գործարկի թևակալի: Եվ այն կաշխատի այնքան ժամանակ, քանի դեռ նորից չեն սեղմել կոճակը Եվ խոնավության մակարդակը չի վերադարձվի նորմաների:
Իհարկե, կարող ենք ավելի բարդացնել ալգորիթմը, բայց դա չենք անելու՝ թողնելով ստեղծագործության տարածք ցանկացողների համար:
Երրորդ տարբերակը՝ ակցեսին ենք ինտերնետին.
Այս բոլորն, ինչ ներկայացրեցի, վաղուց աշխատելու համար համապատասխան է: Իսկ ինչպե՞ս պոկոցներ: Արդյոք ցանկացած պղտոր հիպստեր-հաքեր-կրեքարները ծաղրում են նրան, ով պտտում է ձեռքով և սեղմում կոճակը, այլ ոչ թե կառավարում սմարթֆոնից: Սեղմել ձեռքով՝ չէ «մոդեռ»: Բայց խառնել մատով սմարթֆոնին, այն քավարելով արյունին՝ ահա այս է, հիպստեր-հաքերի-կրեքարի ցանկությունների բարձունքները ( երբեք չեմ կարողացել տարբերել բոլոր նրանց՝ այնպես որ, եթե սխալվել եմ, ներողություն):
Բայց դասական լինելու ենք նշված անձանց հանդեպ: Ինտերնետային կառավարման ունի իրական նախապայմանները: Առաջին՝ տեսանելիություն: Կա բազմաթիվ ծրագրեր բոլոր պլատֆորմների համար, որոնք թույլ են տալիս բազային արկածներով ստեղծել բավական մոտեցում մեր կառավարման կառականիս: Երկրորդ՝ հեռակա դիտել խոնավության վիճակը: Իմ հերթին, ոտքեր այն, որ ոչ միայն ամեն տեսք է նրան, թե ինչպես է թևակալի որով հիմնած ձեռք է եղել, այլ նաև, թե որ ապառիկ մակարդակը սահմանվել է: Եվ ինչ-որ բան՝ նշանակված թևակալ մեկ անգամվա հաշվարկո՞ւմ խիստ չի բնույթ առնում:
Իհարկե, ինչ-որ թևակալի համար շատ պատվիրված է՝ այսքան ուշադրություն: Բայց դա ընդամենը օրինակ է:
Այսպիսով, ինտերնետին միանալու համար մենք կիրառում ենք տեխնոլոգիա MQTT և նույնանուն պրոտոկոլը:
Այս տեխնոլոգիան օգտագործելու համար մեզ անհրաժեշտ է MQTT-բրոքեր. Սա հատուկ սերվեր է, որը սպասարկում է MQTT-հաճախորդներին, օրինակ ShIoTIny եւ ձեր սմարթֆոնը.
Տեխնոլոգիայի էությունը MQTT կազմված է նրանում, որ ցանկացած հաճախորդ հրապարակում է MQTT-բրոկերում (սերվերում) պատահական տվյալներ որոշակի անունով (ճանաչվող topic հարաբերական MQTT). Այլ հաճախորդները կարող են բաժանորդագրվել պատահական տվյալներին ըստ նրանց անվան (topic) եւ ստանալ նոր հրապարակված տվյալները։ Այսինքն՝ տվյալների ամբողջ փոխանակումը տեղի է ունենում հաճախորդ-բրոկեր-հաճախորդ սկզբունքով։
Ես متو հաստատ չեմ MQTT զգլորելու։ Ինտերնետում շատ հոդվածներ եւ ուսուցումներ կան, թե ինչպես աշխատում է ShIoTiny.
եւ quais կան ծրագրեր կառավարման պանելներ ստեղծելու համար։ Պարզապես կցուցադրեմ, թե ինչպես ընդունել եւ հրապարակի տվյալներ միջոցով , բայց սկզբունքը überall է։
Ուրեմն, անենք, որ դուք գրանցվել եք MQTT-բրოკերում։ Ընդհանուր կացությամբ, բրոկերը ձեզ կտա (կամ պահանջի հնարել) օգտվողի անուն եւ գաղտնաբառ (հաստատման համար), ինչպես նաեւ միացնող պորտ։ Միացնել ShIoTiny է MQTT-բրոկերին կարող եք երկու եղանակներով՝ սովորական միացում մը եւ TLS (SSL).
Այս բոլոր պարամետրերը ShIoTiny մտցվում են вкладке Networking, բաժին MQTT Connection to server.

Եթե ձեր MQTT-բրոքեր չի պահանջում հաստատում՝ մի դնեք մուտքոգի անուն եւ գաղտնաբառ (թողեք այս դաշտերը դատարկ)։
Պարամետր MQTT topic prefix անհրաժեշտ է առանձնահատուկ բացատրություն։
MQTT պարբերականի նախապայմաներ՝ սա է ստրջանցիկություն, որը ավելացվում է թեմայի անվան (topic) հրապարակման եւ բաժանորդագրման ժամանակ MQTT-բրոկերում։ Որպեսզի սահմանել MQTT-նախապայման ձեր վերահսկիչի համար, պարզապես պետք է մտնել դրա մուտքագրման դաշտում «MQTT թիրախի նախապատրաստում» («MQTT topic prefix»)։ Նախապայմանն միշտ սկսվում է հետшառքային նշանով («/»)։ Եթե դուք չմտցնեք հետшառքային նշանը դաշտում՝ այն ավտոմատ կերպով կավելանա։ Նախապայմանում հնարավոր չէ օգտագործել նշաններ «#» և «+»։ Հավաքված սահմանափակումներ չկան։
Օրինակ, եթե դուք հրապարակում եք «status» (կամ բաժանորդագրվում եք դրան), իսկ ձեր նախապայմանն ընտրված է «/shiotiny/», ապա բրոկերում այս պարբերակը կհրապարակվի որպես «/shiotiny/status»: Եթե ունեք դատարկ նախապայման, ապա բոլոր պարբերակները բրոկերում կսկսվեն հետшառքային նշանով («/»): «status» կհրապարակվի որպես «/status».
Ուրեմն, նկատենք, որ դուք գրանցվել եք MQTT-բրოკերում եւ ստացել եք մուտք, գաղտնաբառ եւ պորտ։ Դրանից հետո դուք նշում եք այս պարամետրերը вкладке Networking, բաժին MQTT Connection to server առանձնացման գործընթացին: ShIoTiny.
Նկատեք, որ նախապայմանն ունի «/room/».
Սկսենք նրանից, որ կհրապարակենք բոլոր հիմնական պարամետրերի վիճակը՝ ռելե Realay1, ձեռքով միացման վիճակների, ավտոմատ միացման վիճակների և, ասենք, շեմային և ընթացիկ խոնավության մակարդակների: Եվ որպես բոնուս — ներքին ջերմությունը: Ինչպես անել դա, տեսեք նկարում:

Ինչպես տեսնում ենք, նախորդ տարբերակից տարբերվողը ` միայն "MQTT Publish". Ավելացվելով նախօրոք, հրապարակվում են հետևյալ պարամետրերը:

Ինչպես տեսնում ենք, ամբողջ համակարգի վիճակը մեզ մոտ է!
Բայց մենք ցանկանում ենք ոչ միայն տեսնել, այլև կառավարել: Ինչ անել? Լավ, շատ հեշտ է: Մենք հրաժարվելու ենք սահմանափակ խոնավության մակարդակը ընտրելուց ADC և փոփոխական ռեզիստորից և կգործադրենք այդ նույն սահմանափակ խոնավության մակարդակը MQTT ուղղակի մեր սմարթֆոնից!

Հանում ենք ADC հանգույցը սխեմայից և այնտեղ ավելացնում երեք նոր հանգույցներ: FLASH store, FLASH restore և MQTT describe.
Հանգույցի ֆունկցիան MQTT describe օբյեկտիվ է: Նա ստանում է պարամետր /room/trigHset (սահմանափակ խոնավության մակարդակը) հետ MQTT բրոքերի. Բայց ինչ է անում նա այդ տվյալներով հետո? Նա պարզապես ուղղորդում է դրանք FLASH store, որն իր հերթին պահպանել է դրանք էներգիայի կախյալ մաքրել մնի մեջ անվանումով trigH. Այդուհետև, հանգույցը FLASH restore կարդում է էներգիայի կախյալ մաքրել մնի տվյալները անվանումով trigH և ինչ տեղի է ունենում հետո, արդեն գիտենք:
Ի՞նչն է այսպիսի բարդությունները: Որպեսզի անմիջապես չտանք ստացված տվյալները համեմատիչի մուտքը:
Ինչպես ասում էր ընկ. Շ. Հոլմս — դա է էական!Ե niemandին չի երաշխավորում, որ ձեր սարքը միանալուց հետո, այն կկարողանա կապվել MQTT-բրոկերին. Աշխարհի խոնավությունը պետք է չափվի: Եվ ապրանքափոխադրիչը պետք է բացվի: Բայց առանց խոնավության սահմանափակ մակարդակի մասին տեղեկատվության դա անհնար է: Ուստի, մեր սարքը միանալուց հետո վերածնում է նախորդ հիշված խոնավության սահմանափակ մակարդակը էներգիայի կախյալ մաքրել մնի մեջ և օգտագործում է նրա ընդունելու հետ դիրքորոշումներ: Իսկ երբ կկատարվի կապը " MQTT-բրոքերի և ոմն խնդրի նոր արժեք /room/trigHset, ապա այդ նոր արժեքը կօգտագործվի:
Հաջորդում դուք կարող եք մտածել ամեն ինչ դուք ուզում եք: Օրինակ, խոնավության հետ միասին ավելացնել նաև ջերմության վերահսկում: Եւ ավելացնել "չար" լուսավորման կառավարում (մենք դեռ ունենք երկու ռելե և երկու մուտք unused). Բոլորը ձեր ձեռքում են!
Խորհուրդ
Ինչպես կանեք, մենք մի քանի օրինակներ դիտեցինք մի պարզապես ինքնատիպ վերահսկիչի իրականացման ShIoTiny հիման վրա: Չգիտեմ, թե դա комкому պետք կլինի:
Ինչպես միշտ, առաջարկներ, ցանկություններ, հարցեր, ուղղումները և այլն — էլ. փոստով: shiotiny@yandex.ru
Աղբիւրագրական: habr.com
