Mündəricat:

Ramazan İşıqları - Ev avtomatlaşdırılması IOT: 6 addım
Ramazan İşıqları - Ev avtomatlaşdırılması IOT: 6 addım

Video: Ramazan İşıqları - Ev avtomatlaşdırılması IOT: 6 addım

Video: Ramazan İşıqları - Ev avtomatlaşdırılması IOT: 6 addım
Video: Kainat Tədris Mərkəzi - ÜSİ 3 (2-ci şans) - Videoizah - İnformatika 2024, Noyabr
Anonim
Ramazan İşıqları | Ev avtomatlaşdırılması IOT
Ramazan İşıqları | Ev avtomatlaşdırılması IOT

Ramazan ayı qapını döydükcə dünyanın bütün şəhərləri işıq saçır və oruc ayına hazırlaşır. İşıqlar ictimai meydanlarda və şəhər küçələrində, eləcə də səhərlər günəş çıxana qədər gecə yanan evlərin xarici divarlarına asılır.

Bu proyektdə, azan vaxtlarına əsaslanaraq bu bəzəklərin işıqlandırılmasını avtomatlaşdırdığım və bunu ağıllı ev sistemimə əlavə etdiyim töhfəmi bölüşmək istərdim.

Addım 1: nəzəriyyə

Əsasən, məsələn, günəş işığının intensivliyinə əsaslanaraq işıqlandırmanı avtomatlaşdırmaq daha asan və daha çox tətbiq olunur. Ancaq istərdim ki, müqəddəs ayın ruhu olsun, oruc ayında insanların yemək yeməsinə icazə verildiyi müddətcə işıqlar yanacaq. Xüsusilə, işıqlar hər gün Məğrib azanından başlayaraq sübh azanına qədər heç bir insan müdaxiləsi olmadan yanır.

Addım 2: Dizayn

Aşağıda bu layihənin tələblərini/imkanlarını sadalayacağam:

  • Sistem açılış zamanı avtomatik olaraq işləməyi bacarmalıdır.
  • Sistem vaxtaşırı qərar (ON/OFF) alqoritmini icra edə bilməlidir.
  • Sistem gündəlik olaraq API çağıra bilməlidir.
  • Sistem planlaşdırılmamış yenidən başladıqdan sonra bərpa edə bilməlidir.
  • Sistem dərhal məlumat aldıqdan sonra qərar (ON/OFF) alqoritmini yerinə yetirməlidir.
  • Sistem avtomatik pilot rejimini açmaq üçün bir keçid təmin etməlidir (Avtomatik rejim).
  • Sistem işıqları əl ilə açmaq/söndürmək üçün bir keçid təmin etməlidir.
  • Manuel açarın işə salınması əl rejimini OFF vəziyyətinə qoymalıdır.
  • Avtomatik rejim AÇIQ olduqda, qərar alqoritminin nəticəsi manuel ON/OFF düyməsinə əks olunmalıdır.

Addım 3: Texniki məlumatlar: API

Texniki məlumatlar: API
Texniki məlumatlar: API

Teorinin tətbiq oluna bilməsi üçün, dəyişəndən bəri gündəlik azan vaxtını bilmək və işıqları/bəzəkləri açmaq/söndürmək üçün hərəkət etmək lazımdır.

Bu məqsədlə məlumatlara xidmət etmək üçün yerə əsaslanan bir API istifadə etməyə qərar verdim (Azan vaxtı)

muslimsalat.com/api/#location

  • Bu API, yuxarıdakı sənəd linkində təsvir olunan müxtəlif seçimlər və konfiqurasiya parametrləri təqdim edir.
  • Qeydiyyat zamanı pulsuz olan öz API_keyinizi istifadə etməyiniz məsləhətdir.
  • Dizaynımda gündəlik bir zaman çizelgesi ilə maraqlanıram.
  • Geri qaytarılma vaxtı 12 saat formatındadır (AM/PM).
  • Məkan baxımından, bu API -nin coğrafi koordinatlar sistemi (Enlem və Boylam) kimi yerlər üçün daha doğru seçimlər təqdim etməsini arzulayırdım. Bu şəkildə bu API, məsələn bir şəhər adı ilə təmin edilə bilər və bu əksər hallarda kifayətdir. Təəssüf ki, xüsusi şəhərimin nəticələri çoxsaylı testlərdə olduqca qərəzli idi və azan vaxtını API nəticələri ilə şəhərimdəki əsil azan vaxtı arasında müqayisə edərkən bir neçə dəqiqəlik fərq var idi. Digər tərəfdən, şimala yaxın bir şəhər verdiyimdə və ona yapışdığımda nəticələr mükəmməl uyğunlaşdı!
  • İstifadə etdiyim API url: https://muslimsalat.com/.json? Key =

Addım 4: Texniki məlumatlar: Avadanlıq

Texniki məlumatlar: Avadanlıq
Texniki məlumatlar: Avadanlıq

Sadəlik üçün, aparatı API ilə sinxronizasiya prosesindən və bu əməliyyatları mənim Ev Avtomatlaşdırma Sisteminə həvalə edərək vaxt hesablamasından kənarda qoyuram. API mənbəyini və hesablama alqoritmini düzəltmək istəsəm bu mənə daha çox nəzarət verəcək.

Bunu söylədikdən sonra WIFI və aktuator olaraq bir röle modulu vasitəsilə yerli şəbəkəyə qoşulmaq üçün ESP8266 (NodeMCU) istifadə etdim. NodeMCU, MQTT protokolundan istifadə edəcək və röleyi açmaq/söndürmək əmrlərini almaq üçün müəyyən bir mövzunu dinləyəcək. Bu qədər sadə!

Addım 5: Texniki Təfərrüatlar: Nöqtələri Bağlamaq | Ev avtomatlaşdırılması

Texniki Təfərrüatlar: Nöqtələrin Bağlanması | Ev avtomatlaşdırılması
Texniki Təfərrüatlar: Nöqtələrin Bağlanması | Ev avtomatlaşdırılması
Texniki Təfərrüatlar: Nöqtələrin Bağlanması | Ev avtomatlaşdırılması
Texniki Təfərrüatlar: Nöqtələrin Bağlanması | Ev avtomatlaşdırılması
Texniki Təfərrüatlar: Nöqtələrin Bağlanması | Ev avtomatlaşdırılması
Texniki Təfərrüatlar: Nöqtələrin Bağlanması | Ev avtomatlaşdırılması

Mənim RaspberryPi -də bu layihə üçün lazım olan hər şeyi idarə edə bilən düyünlü bir nümunə var. Mesajlarımızı dərc etmək üçün quraşdırılmış MQTT serveri də var.

Əvvəlcə API məlumatlarını gündəlik olaraq səhər 9 -da ala biləcəyimi və həm Fəcr, həm də Mahqrib azan vaxtlarını çıxara biləcəyimi və indiki vaxtı bu dəyişənlərlə müqayisə etməyə davam edə biləcəyimi düşündüm:

hər 30 saniyə:

əgər: Mahgrib <NOW <Fəcr doğru | işıqları yandır | göstərilən MQTT mövzusuna başqa bir açıq mesaj yayımlayın: söndürün

Vaxtı müqayisə etmək üçün, tarixin hissəsini tarixdə əhəmiyyətsiz bir tarix olaraq təyin edərək, hh: mm (AM/PM) saatından tam tarix formatına çevirirəm (məsələn, 1/1/1970), çünki vaxtı müqayisə edirik. yalnız cari saata (tarix hissəsi də çevrilir).

Təəssüf ki, bu yalnız düz vəziyyətdə işləyəcək. Fərz edək ki, elektrik enerjisi kəsildikdə və ya sistem planlaşdırılmamış səbəbdən yenidən işə düşür. Bu vəziyyət 12.00 -dan əvvəl baş verərsə, hələ də təhlükəsiz tərəfdəyik, ancaq 12AM -dan sonra bu sadə alqoritmimizi uğursuz edəcək.

Bir nümunə vermək üçün 19:30 da Məğrib Azanı və 4:10 da Fəcr namazını qılaq. Sistem açıldıqda, əvvəllər qeyd olunan məlumatları əldə etmək üçün yeni bir sorğu göndərəcək. Əgər indi saat 1: 45 -dirsə, alqoritmimizin gerçəyə dönməsini gözləyirik, amma əslində belə deyil, çünki 1:45 AM Sübhdən (4:10 AM) azdır, lakin Məğribdən (19:30 PM) daha böyük deyil. Tarixi bütün dəyişənlər arasında birləşdirdiyimiz üçün. Alqoritmin son versiyası (indiyə qədər) aşağıda verilmişdir:

hər 30 saniyə:

if ((magrib.getHours ()> = 12 && fajr.getHours () <= 12) || facr <maghrib) {fajr.setDate (fajr.getDate ()+1); // spanning days endTime if (now.getHours () <= 12) {now.setDate (now.getDate ()+1); // tutan günlər CurrentTime}} // aşağıda əvvəlki kod blokudur, əgər: Mahgrib <NOW <Fajr true | işıqları yandır | göstərilən MQTT mövzusuna başqa bir mesaj göndərin: yalan | söndür

Prosesin tam axını yuxarıdakı görüntüdə qeyd olunur.

UI baxımından, UI/interfeysə 2 açar əlavə etdim:

  1. Bu prosesi avtomatik və ya əl ilə çevirmək üçün bir keçid.
  2. İşıqları əl ilə açmaq/söndürmək üçün açar.

Addım 6: Sarma

Zaman heç vaxt xatırlanmır. Belə sadə 1 günlük layihələr etmək, bu sürətli zolaqda nəfəs almağa və zaman keçdikcə yumşaq bacarıqlarınızı canlandırmağa kömək edir.

Bütün dünyada sadə və təkrar istifadə oluna bilməsi üçün bu layihədə çox çalışdım.

Bu layihəyə layiq olduğunu düşünürsünüzsə, bu təlimatlandırıcıya səs verin.

Ramazan bayramınız mübarək!

Tövsiyə: