Агуулгын хүснэгт:

Рамадан гэрэл - Гэрийн автоматжуулалт IOT: 6 алхам
Рамадан гэрэл - Гэрийн автоматжуулалт IOT: 6 алхам

Видео: Рамадан гэрэл - Гэрийн автоматжуулалт IOT: 6 алхам

Видео: Рамадан гэрэл - Гэрийн автоматжуулалт IOT: 6 алхам
Видео: Аризона. Орёл и Решка. Перезагрузка. АМЕРИКА. RUS 2024, Долдугаар сарын
Anonim
Рамадан гэрэл | Гэрийн автоматжуулалт IOT
Рамадан гэрэл | Гэрийн автоматжуулалт IOT

Рамадан хаалга тогшиход дэлхийн хотууд гэрэлтэж, мацаг барих сардаа бэлддэг. Гэрлийг олон нийтийн талбай, хотын гудамж, шөнийн цагаар гэрэлтдэг байшингийн гаднах ханан дээр өглөө нар гарах хүртэл өлгөдөг.

Энэхүү төсөлд би баяр ёслолын үеэр эдгээр чимэглэлийг гэрэлтүүлэх ажлыг автоматжуулж, ухаалаг гэрийн системдээ нэмж оруулсан хувь нэмрээ хуваалцахыг хүсч байна.

Алхам 1: Онол

Үндсэндээ, жишээлбэл, нарны гэрэлд суурилсан гэрэлтүүлгийг автоматжуулах нь илүү хялбар бөгөөд илүү тохиромжтой байдаг. Гэсэн хэдий ч ариун сарны сүнс болох мацаг барих үеэр хүмүүс хооллохыг зөвшөөрсөн л бол гэрэл асах ёстой гэж би хүсч байна. Ялангуяа гэрэл нь Магриб Азанаас эхлэн Фажр Азан хүртэл өдөр бүр хүмүүсийн оролцоогүйгээр асдаг.

Алхам 2: Дизайн

Доор би энэ төслийн шаардлага/чадварыг жагсаав.

  • Систем ачаалах үед автоматаар боловсруулах боломжтой байх ёстой.
  • Систем нь шийдвэр (ON/OFF) алгоритмыг үе үе гүйцэтгэх чадвартай байх ёстой.
  • Систем нь API -г өдөр бүр дуудах чадвартай байх ёстой.
  • Систем нь төлөвлөөгүй дахин ачаалсны дараа сэргээх боломжтой байх ёстой.
  • Систем нь өгөгдлийг шууд хүлээн авсны дараа шийдвэрийг (ON/OFF) гүйцэтгэх ёстой.
  • Систем нь автомат нислэгийн горимыг асаах унтраалга өгөх ёстой (Автомат горим).
  • Систем нь гэрлийг гараар асаах/унтраах унтраалга өгөх ёстой.
  • Гарын авлагын унтраалгыг идэвхжүүлэх нь гарын авлагын горимыг OFF болгож тохируулах ёстой.
  • Автомат горим асаалттай үед шийдвэрийн алгоритмын үр дүнг гарын авлагын асаах/унтраах дээр тусгах ёстой.

Алхам 3: Техникийн мэдээлэл: API

Техникийн мэдээлэл: API
Техникийн мэдээлэл: API

Энэхүү онолыг хэрэгжүүлэхийн тулд азангийн цагийг хувьсах хэмжигдэхүүнээс нь эхлэн өдөр бүр мэдэж, гэрэл/чимэглэлийг асаах/унтраахын тулд түүний дагуу ажиллах шаардлагатай.

Энэ зорилгоор би өгөгдөлд үйлчлэхийн тулд байршилд суурилсан API ашиглахаар шийдсэн (Азаны цаг)

muslimsalat.com/api/#location

  • Энэхүү API нь дээр дурдсан баримт бичгийн холбоос дээр тайлбарласан янз бүрийн сонголтууд болон тохиргооны параметрүүдийг өгдөг.
  • Бүртгүүлэхдээ үнэгүй API_key -ийг ашиглахыг зөвлөж байна.
  • Би дизайны хувьд өдөр тутмын цагийн хуваарийг сонирхож байна.
  • Буцах хугацаа нь 12 цагийн форматтай (AM/PM) байна.
  • Байршлын хувьд энэ API нь газарзүйн координатын систем (Өргөрөг ба Уртраг) гэх мэт байршлын хувьд илүү нарийвчлалтай сонголтуудыг өгөхийг хүсч байна. Ийм байдлаар энэ API -ийг хотын нэрээр хангаж болох бөгөөд энэ нь ихэнх тохиолдолд хангалттай байдаг. Харамсалтай нь, миний тодорхой хотын үр дүн хэд хэдэн туршилтанд нэлээд хазайсан байсан бөгөөд Адангийн цагийг API -ийн үр дүн ба миний хотын Аданы бодит цаг хоёрын хооронд харьцуулж үзэхэд хэдхэн минутын зөрүү гарсан байна. Нөгөөтэйгүүр, би хойд зүгт ойрхон хотыг бий болгосноор үр дүнг нь яг тааруулж өгсөн.
  • Миний ашиглаж буй API url нь: https://muslimsalat.com/.json? Key =

Алхам 4: Техникийн мэдээлэл: Техник хангамж

Техникийн мэдээлэл: Техник хангамж
Техникийн мэдээлэл: Техник хангамж

Энгийнээр хэлэхэд би эдгээр тоног төхөөрөмжийг API -тай синхрончлох, цаг тооцоолох үйл явцыг миний гэрийн автоматжуулалтын системд шилжүүлэх замаар тоног төхөөрөмжийг орхиж байна. Хэрэв би API эх сурвалж болон тооцооллын алгоритмыг өөрчлөхийг хүсч байвал энэ нь надад илүү их хяналт өгөх болно.

Үүнийг хэлэхэд би ESP8266 (NodeMCU) ашиглан дотоод сүлжээнд WIFI болон реле модулийг ашиглан идэвхжүүлэгч болгон холбосон. NodeMCU нь MQTT протоколыг ашиглаж, реле асаах/унтраах командыг авахын тулд тодорхой сэдвийг сонсох болно. Үүн шиг энгийн!

Алхам 5: Техникийн дэлгэрэнгүй: Цэгүүдийг холбох | Гэрийн автоматжуулалт

Техникийн дэлгэрэнгүй: Цэгүүдийг холбох | Гэрийн автоматжуулалт
Техникийн дэлгэрэнгүй: Цэгүүдийг холбох | Гэрийн автоматжуулалт
Техникийн дэлгэрэнгүй: Цэгүүдийг холбох | Гэрийн автоматжуулалт
Техникийн дэлгэрэнгүй: Цэгүүдийг холбох | Гэрийн автоматжуулалт
Техникийн дэлгэрэнгүй: Цэгүүдийг холбох | Гэрийн автоматжуулалт
Техникийн дэлгэрэнгүй: Цэгүүдийг холбох | Гэрийн автоматжуулалт

Миний RaspberryPi нь энэ төсөлд шаардлагатай бүх зүйлийг зохицуулах боломжтой зангилаатай жишээтэй. Энэ нь бас манай мессежийг нийтлэх MQTT серверийг суулгасан болно.

Эхлээд би өглөөний өглөөний 9 цагт API өгөгдлийг авч, Фажр, Махгриб Адхан цагийг хоёуланг нь гаргаж, одоогийн цагийг эдгээр хувьсагчтай харьцуулж байх болно гэж бодож байсан.

30 секунд тутамд:

хэрэв: Mahgrib <ОДОО <Fajr үнэн | гэрэл асаах | заасан MQTT сэдвээр ON зурвас нийтлэх өөр: унтраах

Цагийг харьцуулахын тулд би API -аас өгсөн цагийг hh: mm (AM/PM) -ээс бүтэн огнооны формат руу хөрвүүлж байна, учир нь бид цаг хугацааг харьцуулж байгаа тул огнооны хэсгийг түүхэн дэх үл тоомсорлох огноогоор тохируулж байна (1/1/1970). зөвхөн одоогийн цаг хүртэл (огнооны хэсгийг мөн хөрвүүлнэ).

Харамсалтай нь энэ нь зөвхөн шууд тохиолдолд л ажиллах болно. Цахилгаан тасрах эсвэл төлөвлөөгүй шалтгаанаар систем дахин асах тохиолдол гарсан гэж бодъё. Хэрэв энэ тохиолдол 12.00 цагаас өмнө тохиолдвол бид аюулгүй талдаа байсаар байх болно, гэхдээ 12:00 цагаас хойш энэ нь бидний энгийн алгоритмыг бүтэлгүйтүүлэх болно.

Жишээлбэл, 19:30 цагт Магриб Адхан, 4:10 цагт Фажрыг авч үзье. Систем ачаалах үед өмнө дурдсан өгөгдлийг авах шинэ хүсэлт илгээх болно. Хэрэв одоо өглөөний 1:45 цаг болж байгаа бол бидний алгоритм үнэн болно гэж найдаж байна, гэхдээ үнэн хэрэгтээ энэ нь тийм биш юм, учир нь энэ нь 1:45 нь өглөөний цагаас бага (4:10 AM) боловч Магриб (7:30 PM) -ээс их биш юм. Учир нь бид бүх хувьсагчдын хооронд огноог нэгтгэдэг. Алгоритмын эцсийн хувилбарыг доор харуулав.

30 секунд тутамд:

if ((magrib.getHours ()> = 12 && fajr.getHours () <= 12) || fajr <maghrib) {fajr.setDate (fajr.getDate ()+1); // зохицуулах spanning days endTime if (now.getHours () <= 12) {now.setDate (now.getDate ()+1); // handle spanning days currentTime}} // доорх кодын өмнөх блок бол: Mahgrib <ОДОО <Fajr true | гэрэл асаах | заасан MQTT сэдвээр ON зурвас нийтлэх өөр: худал | хаах

Процессийн бүрэн урсгалыг дээрх зураг дээр тайлбарласан болно.

UI -ийн хувьд би UI/интерфэйс рүү 2 унтраалга нэмсэн.

  1. Энэ процессыг автоматаар эсвэл гараар эргүүлэх товчлуур.
  2. Гэрлийг гараар асаах/унтраах унтраалга.

Алхам 6: Боолт хийх

Цаг хугацаа хэзээ ч эргэж санагдахгүй. Ийм нэг өдрийн энгийн төслүүдийг хийснээр энэхүү хурдан эгнээгээр амьсгалж, цаг хугацаа өнгөрөх тусам зөөлөн ур чадвараа сэргээх боломжтой болно.

Дэлхий даяар үүнийг энгийн, дахин ашиглах боломжтой байлгахын тулд би энэ төсөл дээр хичээсэн.

Хэрэв та энэ төслийг зохистой гэж үзэж байгаа бол энэ зааварчилгаанд саналаа өгөөрэй.

Рамадан сарын мэнд!

Зөвлөмж болгож буй: