Mundarija:

Ramazon chiroqlari - Uy avtomatizatsiyasi IOT: 6 qadam
Ramazon chiroqlari - Uy avtomatizatsiyasi IOT: 6 qadam

Video: Ramazon chiroqlari - Uy avtomatizatsiyasi IOT: 6 qadam

Video: Ramazon chiroqlari - Uy avtomatizatsiyasi IOT: 6 qadam
Video: Elektr uzilib qolgan taqdirda ENERGIYA AVTONOMYASI MUMKIN 2024, Iyul
Anonim
Ramazon chiroqlari | IOT uy avtomatizatsiyasi
Ramazon chiroqlari | IOT uy avtomatizatsiyasi

Ramazon eshikni taqillatganda, butun dunyo shaharlari yorishib, ro'za oyiga tayyorgarlik ko'rmoqda. Chiroqlar jamoat maydonlarida va shahar ko'chalarida, shuningdek, uylar tashqi devorlarida, kechasi ertalab quyosh chiqqunga qadar osilgan.

Bu loyihada men o'z hissamni bo'lishmoqchiman, bunda men azon vaqtiga qarab bu bezaklarning yoritilishini avtomatlashtiraman va buni aqlli uy tizimimga qo'shaman.

1 -qadam: nazariya

Asosan, masalan, quyosh nuri intensivligiga qarab yoritishni avtomatlashtirish osonroq va qulayroqdir. Biroq, men buni muqaddas oyning ruhiga ega bo'lishini istardim, ya'ni odamlar ro'za oyida ovqat eyishga ruxsat berilsa, chiroqlar yonadi. Xususan, chiroqlar har kuni Mag'rib azonidan to Bomdod azonigacha odamlarning o'zaro ta'sirisiz yonadi.

2 -qadam: Dizayn

Quyida men ushbu loyihaning talablari/imkoniyatlarini sanab o'taman:

  • Tizim yuklash paytida avtomatik ravishda qayta ishlay olishi kerak.
  • Tizim vaqti -vaqti bilan qaror qabul qilish (ON/OFF) algoritmini bajarishi kerak.
  • Tizim har kuni API -ni chaqira olishi kerak.
  • Tizim rejasiz qayta ishga tushirilgandan keyin tiklanishi kerak.
  • Tizim ma'lumotlarni qabul qilgandan so'ng, qaror qabul qilish algoritmini (ON/OFF) bajarishi kerak.
  • Tizim avtopilot rejimini yoqish uchun kalitni ta'minlashi kerak (Avtomatik rejim).
  • Tizim chiroqlarni qo'lda yoqish/o'chirish uchun kalitni ta'minlashi kerak.
  • Manuel kalitni ishga tushirish qo'lda rejimni O'chirilgan holatga o'tkazishi kerak.
  • Avtomatik rejim yoqilganda, qaror algoritmining natijasi qo'lda ON/OFF kalitida aks ettirilishi kerak.

3 -qadam: Texnik tafsilotlar: API

Texnik ma'lumotlar: API
Texnik ma'lumotlar: API

Bu nazariyani amalga oshirish uchun har kuni azon vaqtini bilish kerak, chunki uning o'zgaruvchisidan boshlab, chiroqlar/bezaklarni yoqish/o'chirish uchun harakat qilish kerak.

Shu maqsadda men ma'lumotlarga xizmat ko'rsatish uchun joylashuvga asoslangan API ishlatishga qaror qildim (Azon vaqti)

muslimsalat.com/api/#location

  • Ushbu API yuqoridagi hujjatlar havolasida tasvirlangan turli xil variantlar va konfiguratsiya parametrlarini taqdim etadi.
  • Ro'yxatdan o'tish paytida bepul bo'lgan API_key -dan foydalanish tavsiya etiladi.
  • Dizaynimda men kundalik vaqt jadvaliga qiziqaman.
  • Qaytgan vaqt 12 soat formatida (AM/PM).
  • Joylashuv nuqtai nazaridan, agar men ushbu API koordinatalar geografik koordinatalari tizimi (Kenglik va Uzunlik) kabi joylar uchun aniqroq variantlarni taqdim qilsa edi. Shu tarzda, bu API, masalan, shahar nomi bilan ta'minlanishi mumkin va bu ko'p hollarda etarli. Afsuski, mening aniq shahrimning natijalari bir nechta testlarda juda noaniq edi va azon vaqtini API natijalari bilan mening shahrimdagi azon vaqtini taqqoslaganda bir necha daqiqa farq bor edi. Boshqa tomondan, men shimolda yaqin shaharni ta'minlaganimda, natijalarga juda mos keldim va men unga yopishdim!
  • Men foydalanadigan API url: https://muslimsalat.com/.json? Key =

4 -qadam: Texnik tafsilotlar: Uskuna

Texnik tafsilotlar: Uskuna
Texnik tafsilotlar: Uskuna

Oddiylik uchun, men ushbu operatsiyalarni uy avtomatlashtirish tizimiga topshirish orqali uskunani API bilan sinxronlashtirish va vaqtni hisoblash jarayonidan chetda qoldiraman. Agar API manbasini va hisoblash algoritmini o'zgartirmoqchi bo'lsam, bu menga ko'proq nazoratni beradi.

Buni aytib, men WSPI orqali mahalliy tarmoqqa ulanish uchun ESP8266 (NodeMCU) va aktuator sifatida o'rni modulidan foydalandim. NodeMCU MQTT protokolidan foydalanadi va o'rni yoqish/o'chirish buyruqlarini olish uchun ma'lum bir mavzuni tinglaydi. Bu qadar oddiy!

5 -qadam: Texnik tafsilotlar: Nuqtalarni ulash | Uy avtomatizatsiyasi

Texnik tafsilotlar: nuqtalarni ulash | Uy avtomatizatsiyasi
Texnik tafsilotlar: nuqtalarni ulash | Uy avtomatizatsiyasi
Texnik tafsilotlar: nuqtalarni ulash | Uy avtomatizatsiyasi
Texnik tafsilotlar: nuqtalarni ulash | Uy avtomatizatsiyasi
Texnik tafsilotlar: nuqtalarni ulash | Uy avtomatizatsiyasi
Texnik tafsilotlar: nuqtalarni ulash | Uy avtomatizatsiyasi

Mening RaspberryPi -da bu loyiha uchun kerak bo'lgan hamma narsani hal qila oladigan tugunli misol mavjud. Xabarlarni chop etish uchun MQTT serveri ham o'rnatilgan.

Avvaliga, men API ma'lumotlarini har kuni ertalab soat 9 da olishim, bomdod va mahrib azon vaqtlarini olishim va hozirgi vaqtni bu o'zgaruvchilar bilan taqqoslashni davom ettirishim mumkin deb o'yladim.

har 30 soniyada:

agar: Mahgrib <HOZIR <Bomdod rosti | chiroqlarni yoqish | ko'rsatilgan boshqa MQTT mavzusiga ON xabarini nashr qiling: o'chiring

Vaqtni taqqoslash uchun men API tomonidan taqdim etilgan soatlarni hh: mm (AM/PM) dan to'liq sana formatiga o'zgartiraman, chunki sana qismini tarixdagi ahamiyatsiz sanaga o'rnatish orqali (masalan, 1/1/1970), chunki biz vaqtni taqqoslaymiz. faqat joriy vaqtga (sana qismi ham o'zgartiriladi).

Afsuski, bu faqat to'g'ri holatlarda ishlaydi. Masalan, elektr quvvati uzilib qolganda yoki tizim rejasiz sabab bilan qayta ishga tushganda. Agar bu holat 12:00 dan oldin sodir bo'lsa, biz hali ham xavfsiz tomonda bo'lamiz, lekin 12:00 dan keyin bu bizning oddiy algoritmimizni buzadi.

Misol berish uchun, keling, Magrib azonini 19:30 da, bomdodni esa 4:10 da qilaylik. Tizim ishga tushganda, u yuqorida aytib o'tilgan ma'lumotlarni olish uchun yangi so'rov yuboradi. Agar hozir soat 1:45 bo'lsa, biz algoritmimiz qaytishini kutamiz, lekin aslida bunday emas, chunki ertalab soat 1:45 da bomdoddan kam (4:10), lekin Magribdan (19:30) katta emas. Buning sababi shundaki, biz sanani barcha o'zgaruvchilar o'rtasida birlashtiramiz. Quyida algoritmning oxirgi versiyasi (hozirgacha):

har 30 soniyada:

if ((magrib.getHours ()> = 12 && fajr.getHours () <= 12) || fajr <maghrib) {fajr.setDate (fajr.getDate ()+1); // ishlov beriladigan kunlar endTime if (now.getHours () <= 12) {now.setDate (now.getDate ()+1); // handle spanning days currentTime}} // oldingi kod bloki quyida, agar: Mahgrib <NOW <Fajr true | chiroqlarni yoqish | ko'rsatilgan MQTT mavzusiga ON xabarini nashr eting, boshqa: noto'g'ri | o'chirib qo'yish

Jarayonning to'liq oqimi yuqoridagi rasmda izohlangan.

UI nuqtai nazaridan, men UI/interfeysga 2 ta kalitni qo'shdim:

  1. Bu jarayonni avtomatik yoki qo'lda aylantirish uchun kalit.
  2. Chiroqlarni qo'lda yoqish/o'chirish tugmasi.

6 -qadam: yig'ish

Vaqt hech qachon esga olinmaydi. Bunday oddiy 1 kunlik loyihalarni amalga oshirish sizga tez yo'lda nafas olishga va vaqt o'tishi bilan yumshoq ko'nikmalaringizni tiklashga yordam beradi.

Men bu loyihada butun dunyo bo'ylab oddiy va qayta ishlatilishi uchun ko'p harakat qildim.

Agar siz ushbu loyihaga loyiq deb hisoblasangiz, iltimos, ushbu ko'rsatmaga ovoz bering.

Ramazon muborak!

Tavsiya: