Orodha ya maudhui:

Taa za Ramadhan - Uendeshaji wa nyumbani IOT: Hatua 6
Taa za Ramadhan - Uendeshaji wa nyumbani IOT: Hatua 6

Video: Taa za Ramadhan - Uendeshaji wa nyumbani IOT: Hatua 6

Video: Taa za Ramadhan - Uendeshaji wa nyumbani IOT: Hatua 6
Video: История спасение дикого кабанчика. Кабанчик нуждался в помощи. 2024, Julai
Anonim
Taa za Ramadhan | Uendeshaji wa nyumbani IOT
Taa za Ramadhan | Uendeshaji wa nyumbani IOT

Wakati Ramadhani inagonga mlango, miji ulimwenguni huangaza na kujiandaa kwa mwezi wa kufunga. Taa hutundikwa katika viwanja vya umma na katika barabara za jiji na pia kwenye kuta za nje za nyumba zilizowashwa wakati wa usiku hadi jua linapotokea asubuhi.

Katika mradi huu, ningependa kushiriki mchango wangu, ambao ninaangazia kuwasha mapambo haya kulingana na nyakati za Adhan na kuiongeza kwenye mfumo wangu mzuri wa nyumba.

Hatua ya 1: Nadharia

Kwa kweli, ni rahisi na inatumika zaidi kugeuza taa kulingana na kiwango cha jua, kwa mfano. Walakini, ningependa hii iwe na roho ya mwezi mtakatifu ambayo ni kwamba, taa zitawasha maadamu watu wanaruhusiwa kula wakati wa mwezi wa kufunga. Hasa, taa zinaendelea kutoka Maghrib Adhan hadi Fajr Adhan kila siku bila mwingiliano wowote wa kibinadamu.

Hatua ya 2: Kubuni

Hapa chini nitaorodhesha mahitaji / uwezo wa mradi huu:

  • Mfumo unapaswa kuwa na uwezo wa kusindika kiatomati kwenye boot up.
  • Mfumo unapaswa kuwa na uwezo wa kutekeleza algorithm ya uamuzi (ON / OFF) mara kwa mara.
  • Mfumo unapaswa kuwa na uwezo wa kupiga API kila siku.
  • Mfumo unapaswa kuweza kupona kutoka kuanza upya bila mpango.
  • Mfumo unapaswa kutekeleza algorithm ya uamuzi (ON / OFF) wakati wa kupokea data mara moja.
  • Mfumo unapaswa kutoa swichi kwa kuwasha hali ya autopilot (Hali ya moja kwa moja).
  • Mfumo unapaswa kutoa swichi ili kuwasha / KUWasha taa kwa mikono.
  • Kuchochea swichi ya mwongozo inapaswa kuweka hali ya mwongozo KUZIMA.
  • Wakati hali ya Moja kwa Moja IMEWASHWA, matokeo ya algorithm ya uamuzi inapaswa kuonyeshwa kwenye swichi ya mwongozo ON / OFF.

Hatua ya 3: Maelezo ya Ufundi: API

Maelezo ya Kiufundi: API
Maelezo ya Kiufundi: API

Ili kuifanya nadharia iweze kutumika, inahitajika kujua wakati wa Adhan kwenye misingi ya kila siku tangu kutofautisha kwake na kuifanyia kazi kuwasha / kuzima taa / mapambo.

Kwa kusudi hili, niliamua kutumia API ya eneo-msingi kutumikia data (wakati wa Adhan)

muslimsalat.com/api/#hamisho

  • API hii hutoa chaguzi anuwai na vigezo vya usanidi vilivyoelezewa kwenye kiunga cha nyaraka hapo juu.
  • Inashauriwa kutumia API_key yako ambayo ni bure wakati wa usajili.
  • Katika muundo wangu, ninavutiwa na ratiba ya kila siku.
  • Muda uliorejeshwa uko katika muundo wa saa 12 (AM / PM).
  • Kwa upande wa eneo, nilitamani kama API hii ingeweza kutoa chaguo sahihi zaidi kwa maeneo kama vile kuratibu mfumo wa kuratibu kijiografia (Latitudo na Longitude). Kwa njia hii, API hii inaweza kutolewa kwa jina la jiji kwa mfano na hii inatosha katika hali nyingi. Kwa bahati mbaya, matokeo ya jiji langu maalum yalikuwa na upendeleo kabisa katika majaribio mengi na kulikuwa na dakika kadhaa za tofauti wakati wa kulinganisha wakati wa Adhan kati ya matokeo ya API na wakati halisi wa Adhan katika jiji langu. Kwa upande mwingine, matokeo yalilingana kabisa wakati nilipotoa jiji la karibu kaskazini na niliielekeza!
  • URL ya API ninayotumia ni: https://muslimsalat.com/.json? Key =

Hatua ya 4: Maelezo ya Ufundi: Vifaa

Maelezo ya Kiufundi: Vifaa
Maelezo ya Kiufundi: Vifaa

Kwa unyenyekevu, ninaacha vifaa nje ya mchakato wa kusawazisha na API na hesabu ya wakati kwa kupeana shughuli hizi kwa Mfumo wa Uendeshaji wa Nyumbani. Hii itanipa udhibiti zaidi ikiwa ninataka kurekebisha chanzo cha API na hesabu ya hesabu.

Baada ya kusema hayo, nilitumia ESP8266 (NodeMCU) kuungana na mtandao wa ndani kupitia WIFI na moduli ya kupeleka tena kama kichochezi. NodeMCU itatumia itifaki ya MQTT na itasikiliza mada maalum kupata amri za kuwasha / kuzima relay. Rahisi kama hiyo!

Hatua ya 5: Maelezo ya Kiufundi: Kuunganisha Dots | Uendeshaji wa Nyumbani

Maelezo ya Kiufundi: Kuunganisha Dots | Uendeshaji wa Nyumbani
Maelezo ya Kiufundi: Kuunganisha Dots | Uendeshaji wa Nyumbani
Maelezo ya Kiufundi: Kuunganisha Dots | Uendeshaji wa Nyumbani
Maelezo ya Kiufundi: Kuunganisha Dots | Uendeshaji wa Nyumbani
Maelezo ya Kiufundi: Kuunganisha Dots | Uendeshaji wa Nyumbani
Maelezo ya Kiufundi: Kuunganisha Dots | Uendeshaji wa Nyumbani

RaspberryPi yangu inashikilia mfano ambao unaweza kushughulikia yote ninayohitaji kwa mradi huu. Pia ina seva ya MQTT iliyosanikishwa kuchapisha ujumbe wetu.

Mwanzoni, nilifikiri kwamba ninaweza kuchukua data ya API kwenye misingi ya kila siku saa 9AM na kutoa nyakati za Fajr na Mahgrib Adhan na kuendelea kulinganisha wakati wa sasa na vigeuzi hivi ambavyo ni:

kila sekunde 30:

ikiwa: Mahgrib <SASA <Fajr kweli | washa taa | chapisha ujumbe ON kwenye mada maalum ya MQTT: zima

Kwa kulinganisha wakati, ninabadilisha masaa yaliyotolewa na API kutoka hh: mm (AM / PM) kuwa fomu kamili ya tarehe kwa kuweka sehemu ya tarehe kuwa tarehe ndogo katika historia mfano (1/1/1970) kwa kuwa tunalinganisha wakati tu kwa wakati wa sasa (sehemu ya tarehe pia imebadilishwa).

Kwa bahati mbaya, hii itafanya kazi tu katika kesi za mbele moja kwa moja. Tuseme kesi wakati umeme unashuka au mfumo unarudi kwa sababu isiyopangwa. Ikiwa kesi hii inatokea kabla ya saa 12 asubuhi basi bado tuko katika hali salama, lakini baada ya saa 12 asubuhi hii itashindwa na algorithm yetu rahisi.

Ili kutoa mfano, wacha tuwe na Magrib Adhan saa 7:30 alasiri na Fajr saa 4:10 asubuhi. Mfumo utakapovuka utatuma ombi jipya la kuchukua data iliyotajwa hapo awali. Ikiwa wakati sasa ni 1:45 AM tunatarajia algorithm yetu kurudi kweli, lakini kwa kweli haitakuwa kwa sababu 1:45 AM ni chini ya Fajr (4:10 AM) lakini sio kubwa kuliko Magrib (7:30 PM). Hii ni kwa sababu tunaunganisha tarehe kati ya anuwai zote. Chini ni toleo la mwisho la algorithm (hadi sasa):

kila sekunde 30:

ikiwa ((magrib.getHours ()> = 12 && fajr.getHours () <= 12) || fajr <maghrib) {fajr.setDate (fajr.getDate () + 1); // kushughulikia siku za mwisho wa mwisho Muda wakati (sasa.getHours () <= 12) {now.setDate (now.getDate () + 1); // kushughulikia muda wa siku za sasaTime}} // hapa chini ni kizuizi cha msimbo uliopita ikiwa: Mahgrib <SASA <Fajr true | washa taa | chapisha ujumbe ON kwenye mada maalum ya MQTT: uongo | kuzima

Mtiririko kamili wa mchakato umeelezewa kwenye picha hapo juu.

Kwa upande wa UI, niliongeza swichi 2 kwenye UI / interface:

  1. Kubadili kubadili mchakato huu Moja kwa moja au Mwongozo.
  2. Zima kuwasha / Kuzima taa kwa mikono.

Hatua ya 6: Kufunga.

Wakati haurudii kukumbukwa kamwe. Kufanya miradi rahisi kama hiyo ya siku 1 hukuruhusu kuvuta pumzi katika njia hii ya haraka na kukusaidia kufufua ustadi wako laini kwa muda.

Nilijaribu sana katika mradi huu kuifanya iwe rahisi na inayoweza kutumika tena ulimwenguni.

Fanya Kura kwa hii inayoweza kufundishwa ikiwa unafikiria mradi huu unastahili.

Heri ya Ramadhan!

Ilipendekeza: