Мазмұны:

Рамазан шамдары - IOT үй автоматикасы: 6 қадам
Рамазан шамдары - IOT үй автоматикасы: 6 қадам

Бейне: Рамазан шамдары - IOT үй автоматикасы: 6 қадам

Бейне: Рамазан шамдары - IOT үй автоматикасы: 6 қадам
Бейне: РЕЦЕПТ МЕНЯ ПОКОРИЛ ТЕПЕРЬ ГОТОВЛЮ ТОЛЬКО ТАК ШАШЛЫК ОТДЫХАЕТ 2024, Қараша
Anonim
Рамазан шамдары | IOT үй автоматикасы
Рамазан шамдары | IOT үй автоматикасы

Рамазан есік қағылған кезде, әлемдегі қалалар жанып, ораза айына дайындалады. Жарықтар қоғамдық алаңдарда және қала көшелерінде, сондай -ақ түнде жарықтандырылған үйлердің сыртқы қабырғаларында таңертең күн шыққанға дейін ілінеді.

Бұл жобада мен өз үлесімді бөліскім келеді, онда мен азан уақытына байланысты осы әшекейлерді жарықтандыруды автоматтандырып, оны ақылды үй жүйеме қосамын.

1 -қадам: Теория

Негізінде, мысалы, күн сәулесінің қарқындылығына негізделген жарықтандыруды автоматтандыру оңайырақ. Алайда, мен мұны қасиетті айдың рухы болғанын қалаймын, яғни адамдарға ораза айында тамақтануға рұқсат етілгенше шамдар қосылады. Атап айтқанда, шамдар Мағриб азанынан таң азанына дейін адамдармен араласусыз қосылады.

2 -қадам: Дизайн

Төменде мен осы жобаның талаптарын/мүмкіндіктерін тізімдеймін:

  • Жүйе жүктеу кезінде автоматты түрде өңделуі керек.
  • Жүйе шешім қабылдау (ON/OFF) алгоритмін мезгіл -мезгіл орындай алуы керек.
  • Жүйе API -ге күнделікті қоңырау шала алуы керек.
  • Жүйе жоспарланбаған қайта жүктеуден кейін қалпына келуі керек.
  • Жүйе деректерді бірден алғаннан кейін шешім (ON/OFF) алгоритмін орындауы керек.
  • Жүйе автоматты ұшу режимін қосуға арналған қосқышты қамтамасыз етуі керек (Автоматты режим).
  • Жүйе шамдарды қолмен қосуға/өшіруге арналған қосқышты қамтамасыз етуі керек.
  • Қолмен қосқышты іске қосу қол режимін ӨШІРУ күйіне қою керек.
  • Автоматты режим ҚОСУ күйінде болғанда, шешім алгоритмінің нәтижесі қолмен ON/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 көзін және есептеу алгоритмін өзгерткім келсе, маған көбірек бақылау береді.

Бұл туралы айтқанымда, мен WSPI арқылы жергілікті желіге қосылу үшін ESP8266 (NodeMCU) мен реле модулі атқарушы ретінде қолдандым. NodeMCU MQTT протоколын қолданады және релені қосу/өшіру командаларын алу үшін белгілі бір тақырыпты тыңдайды. Бұл қарапайым!

5 -қадам: Техникалық мәліметтер: нүктелерді қосу | Үй автоматикасы

Техникалық мәліметтер: нүктелерді қосу | Үй автоматикасы
Техникалық мәліметтер: нүктелерді қосу | Үй автоматикасы
Техникалық мәліметтер: нүктелерді қосу | Үй автоматикасы
Техникалық мәліметтер: нүктелерді қосу | Үй автоматикасы
Техникалық мәліметтер: нүктелерді қосу | Үй автоматикасы
Техникалық мәліметтер: нүктелерді қосу | Үй автоматикасы

Менің RaspberryPi -де осы жобаға қажет нәрсенің барлығын өңдей алатын түйінделген данасы бар. Сондай -ақ, біздің хабарламаларды жариялау үшін MQTT сервері орнатылған.

Алдымен мен API мәліметтерін күнделікті таңғы 9 -да ала аламын, таң мен таңды азан уақыттарын шығарып, ағымдағы уақытты осы айнымалылармен салыстыруды жалғастырамын деп ойладым:

әр 30 секунд:

егер: Mahgrib <ҚАЗІР <Таң намазының ақиқаты | шамдарды қосу | басқа MQTT тақырыбына ҚОСУ хабарын жариялаңыз: өшіріңіз

Уақытты салыстыру үшін мен API ұсынған сағатты сағ: мм (AM/PM) бастап толық күн форматына ауыстырамын, өйткені күн бөлігін тарихтағы елеусіз күнге орнату арқылы (мысалы, 1/1/1970), өйткені біз уақытты салыстырып жатырмыз. тек ағымдағы уақытқа (күн бөлігі де түрлендіріледі).

Өкінішке орай, бұл тікелей жағдайларда ғана жұмыс істейді. Мысалы, электр қуаты өшкенде немесе жоспарланбаған себеппен жүйе қайта қосылады. Егер бұл жағдай таңғы 12 -ге дейін орын алса, онда біз әлі де қауіпсіз жақта боламыз, бірақ 12.00 -ден кейін бұл біздің қарапайым алгоритмді бұзады.

Мысал келтіру үшін 19: 30 -да Магриб Азхан мен 4: 10 -да таң намазын оқимыз. Жүйе жүктелгенде, ол бұрын айтылған деректерді алу үшін жаңа сұрау жібереді. Егер қазір сағат 1:45 болса, біз алгоритміміз шындыққа айналады деп күтеміз, бірақ шын мәнінде олай емес, себебі бұл таңғы 1:45 таңнан (таңғы 4:10) аз, бірақ Магрибтен (19:30) артық емес. Себебі біз барлық айнымалылар арасындағы күнді біріктіреміз. Алгоритмнің соңғы нұсқасы төменде (әзірге):

әр 30 секунд:

if ((magrib.getHours ()> = 12 && fajr.getHours () <= 12) || fajr <maghrib) {fajr.setDate (fajr.getDate ()+1); // өңделетін күндерді өңдеу endTime if (now.getHours () <= 12) {now.setDate (now.getDate ()+1); // өңделетін күндерді өңдеу CurrentTime}} // төменде алдыңғы код блогы, егер: Mahgrib <NOW <Fajr true | шамдарды қосу | көрсетілген MQTT тақырыбына ҚОСУ хабарын жариялаңыз, басқасы: жалған | өшіру

Процестің толық ағымы жоғарыдағы суретте түсіндірілген.

UI тұрғысынан мен интерфейске 2 қосқышты қостым:

  1. Бұл процесті автоматты немесе қолмен қосатын қосқыш.
  2. Жарықты қолмен қосуға/өшіруге арналған қосқыш.

6 -қадам: жинақтау

Уақыт зұлымдықты еске алмайды. Бір күндік қарапайым жобаларды орындау сізге осы жылдам жолда дем алуға мүмкіндік береді және уақыт өте келе жұмсақ дағдыларыңызды жандандыруға көмектеседі.

Мен бұл жобаны бүкіл әлемде қарапайым және қайта қолдануға болатындай етіп тырыстым.

Егер сіз бұл жобаға лайық деп ойласаңыз, осы нұсқаулыққа дауыс беріңіз.

Рамазан құтты болсын!

Ұсынылған: