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

Ռամադանի լույսերը - Տնային ավտոմատացում IOT: 6 քայլ
Ռամադանի լույսերը - Տնային ավտոմատացում IOT: 6 քայլ

Video: Ռամադանի լույսերը - Տնային ավտոմատացում IOT: 6 քայլ

Video: Ռամադանի լույսերը - Տնային ավտոմատացում IOT: 6 քայլ
Video: Artifact Of The Depths Cave Run | ARK: Aberration #21 2024, Նոյեմբեր
Anonim
Ռամադանի լույսերը | Տնային ավտոմատացում IOT
Ռամադանի լույսերը | Տնային ավտոմատացում IOT

Երբ Ռամադանը թակում է դուռը, աշխարհի քաղաքները լուսավորվում և պատրաստվում են ծոմապահության ամսին: Լույսերը կախված են հանրային հրապարակներում և քաղաքի փողոցներում, ինչպես նաև գիշերային լուսավորված տների արտաքին պատերին, մինչև արևածագը առավոտյան:

Այս նախագծում ես կցանկանայի կիսել իմ ներդրումը, որում ես ավտոմատացնում եմ այս դեկորացիաների լուսավորությունը ՝ հիմնված Ադանի ժամանակների վրա և դա ավելացնում իմ խելացի տան համակարգին:

Քայլ 1: Տեսություն

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

Քայլ 2: Դիզայն

Ստորև ես թվարկում եմ այս նախագծի պահանջները/հնարավորությունները.

  • Համակարգը պետք է կարողանա ինքնաբերաբար մշակել բեռնման ժամանակ:
  • Համակարգը պետք է կարողանա պարբերաբար կատարել որոշման (ON/OFF) ալգորիթմը:
  • Համակարգը պետք է կարողանա ամեն օր զանգահարել API:
  • Համակարգը պետք է կարողանա վերականգնել չպլանավորված վերագործարկումից հետո:
  • Համակարգը պետք է կատարի որոշման (ON/OFF) ալգորիթմը `տվյալները անմիջապես ստանալուց հետո:
  • Համակարգը պետք է ապահովի անջատիչ ավտոմատ օդաչուի ռեժիմը միացնելու համար (ավտոմատ ռեժիմ):
  • Համակարգը պետք է ապահովի անջատիչ լույսերը ձեռքով միացնելու/անջատելու համար:
  • Ձեռքով անջատիչի գործարկումը պետք է ձեռքի ռեժիմը դնի OFF:
  • Երբ ավտոմատ ռեժիմը միացված է, որոշման ալգորիթմի արդյունքը պետք է արտացոլվի ON/OFF մեխանիկական անջատիչի վրա:

Քայլ 3. Տեխնիկական մանրամասներ. API

Տեխնիկական մանրամասներ. API
Տեխնիկական մանրամասներ. API

Տեսությունը կիրառելի դարձնելու համար պահանջվում է իմանալ Ադանի ժամանակը ամեն օր `փոփոխականից և գործել դրա վրա` լույսերը/զարդերը միացնելու/անջատելու համար:

Այդ նպատակով ես որոշեցի օգտագործել տվյալների վրա ծառայելու համար տեղադրության վրա հիմնված API- ն (ժամանակ Adhan- ի համար)

muslimsalat.com/api/#location

  • Այս API- ն ապահովում է տարբեր ընտրանքներ և կազմաձևման պարամետրեր, որոնք նկարագրված են վերը նշված փաստաթղթերի հղման մեջ:
  • Խորհուրդ է տրվում օգտագործել ձեր սեփական API_ բանալին, որն անվճար է գրանցումից հետո:
  • Իմ դիզայնով ինձ հետաքրքրում է ամենօրյա ժամանակացույցը:
  • Վերադարձված ժամանակը 12 ժամ ֆորմատով է (AM/PM):
  • Տեղադրության առումով ես կցանկանայի, որ այս API- ն կարողանար ավելի ճշգրիտ տարբերակներ տրամադրել այնպիսի վայրերի համար, ինչպիսիք են աշխարհագրական կոորդինատների համակարգը (լայնություն և երկայնություն): Այս կերպ, այս API- ին կարող է տրամադրվել քաղաքի անուն, օրինակ, և դա շատ դեպքերում բավական է: Unfortunatelyավոք, իմ կոնկրետ քաղաքի արդյունքները բավականին կողմնակալ էին բազմաթիվ թեստերում և մի քանի րոպե տարբերություն կար, երբ համեմատում էի Ադանի ժամանակը API- ի արդյունքների և իմ քաղաքի Ադանի իրական ժամանակի միջև: Մյուս կողմից, արդյունքները միանգամայն համընկնում էին, երբ ես հյուսիսից մոտ քաղաք էի տրամադրում և մնում էի դրան:
  • API հասցեն, որն օգտագործում եմ, հետևյալն է ՝ https://muslimsalat.com/.json? Key =

Քայլ 4: Տեխնիկական մանրամասներ. Սարքավորումներ

Տեխնիկական մանրամասներ. Սարքավորումներ
Տեխնիկական մանրամասներ. Սարքավորումներ

Պարզության համար ես սարքը թողնում եմ API- ի հետ համաժամացման գործընթացից և ժամանակի հաշվարկում `այդ գործողությունները պատվիրելով իմ տան ավտոմատացման համակարգին: Սա ինձ ավելի շատ վերահսկողություն կտա, եթե ուզում եմ փոփոխել API աղբյուրը և հաշվարկման ալգորիթմը:

Այդ ասելով, ես օգտագործեցի ESP8266 (NodeMCU) ՝ WIFI- ի միջոցով տեղական ցանցին միանալու և ռելեի մոդուլը որպես շարժիչ: NodeMCU- ն կօգտագործի MQTT արձանագրությունը և կլսի որոշակի թեմա ՝ ռելեի միացման/անջատման հրամաններ ստանալու համար: Այդքան պարզ!

Քայլ 5: Տեխնիկական մանրամասներ. Կետերի միացում | Տնային ավտոմատացում

Տեխնիկական մանրամասներ. Կետերի միացում | Տնային ավտոմատացում
Տեխնիկական մանրամասներ. Կետերի միացում | Տնային ավտոմատացում
Տեխնիկական մանրամասներ. Կետերի միացում | Տնային ավտոմատացում
Տեխնիկական մանրամասներ. Կետերի միացում | Տնային ավտոմատացում
Տեխնիկական մանրամասներ. Կետերի միացում | Տնային ավտոմատացում
Տեխնիկական մանրամասներ. Կետերի միացում | Տնային ավտոմատացում

Իմ RaspberryPi- ն ունի նոդերացված օրինակ, որն ունակ է կարգավորել այն ամենը, ինչ ինձ պետք է այս նախագծի համար: Նաև տեղադրված է MQTT սերվեր ՝ մեր հաղորդագրությունները հրապարակելու համար:

Սկզբում ես մտածեցի, որ ամեն առավոտ կարող եմ API- ի տվյալները վերցնել առավոտյան 9 -ին և արդյունահանել ինչպես Ֆաջր, այնպես էլ Մահգրիբ Ադան ժամանակները և շարունակել համեմատել ընթացիկ ժամանակը այս փոփոխականների հետ, այսինքն.

յուրաքանչյուրը 30 վրկ.

եթե ՝ Մահգրիբ <ՀԻՄԱ <Ֆաջր ճշմարիտ | միացնել լույսերը | հրապարակեք ON հաղորդագրություն նշված MQTT թեմային այլ կերպ. անջատեք

Timeամանակը համեմատելու համար ես API- ի կողմից տրամադրված ժամերը փոխում եմ hh: mm (AM/PM) ամսաթվի լրիվ ձևաչափի `ամսաթվի մասը պատմության մեջ աննշան ամսաթվի դնելով, օրինակ (1/1/1970), քանի որ մենք համեմատում ենք ժամանակը միայն ընթացիկ ժամին (ամսաթվի հատվածը նույնպես փոխարկվում է):

Unfortunatelyավոք, դա կաշխատի միայն ուղիղ դեպքերում: Ենթադրենք, այն դեպքում, երբ էլեկտրական էներգիան անջատվում է կամ համակարգը վերագործարկվում է չնախատեսված պատճառով: Եթե այս դեպքը տեղի է ունենում մինչև առավոտյան 12 -ը, ապա մենք դեռ ապահով կողմում ենք, բայց առավոտյան 12 -ից հետո դա կխափանի մեր պարզ ալգորիթմը:

Օրինակ բերելու համար եկեք ունենանք Մագրիբ Ադանը երեկոյան 7: 30 -ին և Ֆաջրը ՝ առավոտյան 4: 10 -ին: Երբ համակարգը գործարկվի, այն նոր հայտ կուղարկի ՝ ավելի վաղ նշված տվյալները բերելու համար: Եթե ժամանակն այժմ 01:45 է, մենք ակնկալում ենք, որ մեր ալգորիթմը կվերադառնա ճշմարիտ, բայց իրականում դա այդպես չի լինի, քանի որ առավոտյան 1:45 -ը Ֆաջրից փոքր է (4:10 AM), բայց ավելի մեծ չէ, քան Magrib- ը (19:30 PM): Դա պայմանավորված է նրանով, որ մենք միավորում ենք ամսաթիվը բոլոր փոփոխականների միջև: Ստորև բերված է ալգորիթմի վերջնական տարբերակը (մինչ այժմ).

յուրաքանչյուրը 30 վրկ.

եթե ((magrib.getHours ()> = 12 && fajr.getHours () <= 12) || ֆաջր <մաղրիբ) {fajr.setDate (fajr.getDate ()+1); // կարգավորել ընդգրկող օրերը endTime if (now.getHours () <= 12) {now.setDate (now.getDate ()+1); // կարգավորել օրերի ընթացքը currentTime}} // ստորև բերված է կոդի նախորդ բլոկը, եթե `Mahgrib <NOW <Fajr true | միացնել լույսերը | հրապարակել ON հաղորդագրություն նշված MQTT թեմային այլ ՝ կեղծ | անջատել

Վերոնշյալ պատկերում նշվում է գործընթացի ամբողջական ընթացքը:

UI- ի առումով, UI/ինտերֆեյսին ավելացրի 2 անջատիչ.

  1. Այս գործընթացի ավտոմատ կամ ձեռքով միացման անջատիչ:
  2. Լույսերը ձեռքով միացնելու/անջատելու անջատիչ:

Քայլ 6: Փաթեթավորում

Timeամանակը թռչում է երբեք չվերհիշելու համար: Նման պարզ 1-օրյա նախագծեր կատարելը թույլ է տալիս շունչ քաշել այս արագընթաց գոտում և օգնել ձեզ ժամանակի ընթացքում վերակենդանացնել ձեր փափուկ հմտությունները:

Այս նախագծում ես նույնքան փորձեցի այն պարզ և բազմակի օգտագործելու համար ամբողջ աշխարհում:

Սիրով քվեարկեք այս ուսանելիի համար, եթե կարծում եք, որ այս նախագիծը արժանի է:

Շնորհավոր Ռամադան:

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