İçindekiler:

Ramazan Işıkları - Ev Otomasyonu IOT: 6 Adım
Ramazan Işıkları - Ev Otomasyonu IOT: 6 Adım

Video: Ramazan Işıkları - Ev Otomasyonu IOT: 6 Adım

Video: Ramazan Işıkları - Ev Otomasyonu IOT: 6 Adım
Video: Nesnelerin İnterneti (IOT) Nedir? - INTERNET OF THINGS 2024, Kasım
Anonim
Ramazan Işıkları | Ev Otomasyonu IoT
Ramazan Işıkları | Ev Otomasyonu IoT

Ramazan kapıyı çalarken, dünya çapında şehirler aydınlanıyor ve oruç ayına hazırlanıyor. Meydanlarda ve şehrin sokaklarında ve geceleri sabah güneş doğana kadar aydınlatılan evlerin dış duvarlarında ışıklar asılır.

Bu projede, bu süslemelerin aydınlatmasını Ezan saatlerine göre otomatikleştirip akıllı ev sistemime eklediğim katkımı paylaşmak istiyorum.

1. Adım: Teori

Temel olarak, örneğin güneş ışığının yoğunluğuna göre aydınlatmayı otomatikleştirmek daha kolay ve daha uygulanabilir. Ancak bunun kutsal ayın ruhuna sahip olmasını istiyorum, yani oruç ayında insanlara yemek yemelerine izin verildiği sürece ışıklar yanacak. Özellikle akşam ezanından başlayarak sabah ezanına kadar her gün hiçbir insan etkileşimi olmadan ışıklar yanmaktadır.

2. Adım: Tasarım

Aşağıda bu projenin gereksinimlerini/yeteneklerini listeleyeceğim:

  • Sistem, açılışta otomatik olarak işleyebilmelidir.
  • Sistem, karar (AÇMA/KAPAMA) algoritmasını periyodik olarak uygulayabilmelidir.
  • Sistem API'yi günlük bazda çağırabilmelidir.
  • Sistem, planlanmamış yeniden başlatmadan kurtarabilmelidir.
  • Sistem anında veri alındığında karar (AÇMA/KAPAMA) algoritmasını uygulamalıdır.
  • Sistem, otomatik pilot modunu (Otomatik mod) açmak için bir anahtar sağlamalıdır.
  • Sistem, ışıkları manuel olarak AÇMAK/KAPATMAK için bir anahtar sağlamalıdır.
  • Manuel anahtarın tetiklenmesi, manuel modu KAPALI olarak ayarlamalıdır.
  • Otomatik mod AÇIK olduğunda, karar algoritmasının sonucu manuel açma/kapama anahtarına yansıtılmalıdır.

3. Adım: Teknik Ayrıntılar: API

Teknik Detaylar: API
Teknik Detaylar: API

Teoriyi uygulanabilir kılmak için Ezan saatini değişkenliğinden itibaren günlük bazda bilmek ve ona göre hareket ederek ışıkları/süslemeleri açmak/kapatmak gerekir.

Bu amaçla, verileri sunmak için konum tabanlı bir API kullanmaya karar verdim (Ezan zamanı)

muslimsalat.com/api/#location

  • Bu API, yukarıdaki belge bağlantısında açıklanan çeşitli seçenekler ve yapılandırma parametreleri sağlar.
  • Kayıt sırasında ücretsiz olan kendi API_key'inizi kullanmanız önerilir.
  • Tasarımımda, günlük bir zaman çizelgesiyle ilgileniyorum.
  • Döndürülen zaman 12 saat formatındadır (AM/PM).
  • Konum açısından, bu API'nin koordinatlar coğrafi koordinat sistemi (Enlem ve Boylam) gibi konumlar için daha doğru seçenekler sunmasını diledim. Bu şekilde örneğin bu API'ye bir şehir adı verilebilir ve bu çoğu durumda oldukça yeterlidir. Ne yazık ki, belirli şehrimin sonuçları birden fazla testte oldukça önyargılıydı ve Ezan zamanı API sonuçları ile şehrimdeki gerçek Ezan zamanı arasında karşılaştırırken birkaç dakikalık fark vardı. Öte yandan, kuzeye yakın bir şehir sağladığımda ve ona bağlı kaldığımda sonuçlar mükemmel bir şekilde eşleşti!
  • Kullandığım API url'si:https://muslimsalat.com/.json?key=

4. Adım: Teknik Ayrıntılar: Donanım

Teknik Detaylar: Donanım
Teknik Detaylar: Donanım

Basit olması için, bu işlemleri Ev Otomasyon Sistemime devrederek, donanımı API ile senkronizasyon işleminin ve zaman hesaplamasının dışında bırakıyorum. API kaynağını ve hesaplama algoritmasını değiştirmek istersem bu bana daha fazla kontrol sağlayacaktır.

Bunu söyledikten sonra, yerel ağa WIFI üzerinden bağlanmak için bir ESP8266 (NodeMCU) ve aktüatör olarak bir röle modülü kullandım. NodeMCU, MQTT protokolünü kullanacak ve röleyi açma/kapama komutlarını almak için belirli bir konuyu dinleyecektir. Kadar basit!

Adım 5: Teknik Detaylar: Noktaları Birleştirme | Ev otomasyonu

Teknik Detaylar: Noktaları Birleştirme | Ev otomasyonu
Teknik Detaylar: Noktaları Birleştirme | Ev otomasyonu
Teknik Detaylar: Noktaları Birleştirme | Ev otomasyonu
Teknik Detaylar: Noktaları Birleştirme | Ev otomasyonu
Teknik Detaylar: Noktaları Birleştirme | Ev otomasyonu
Teknik Detaylar: Noktaları Birleştirme | Ev otomasyonu

RaspberryPi'm, bu proje için ihtiyacım olan her şeyi halledebilen düğümlü bir örneğe sahiptir. Ayrıca mesajlarımızı yayınlamak için kurulmuş bir MQTT sunucusuna sahiptir.

İlk başta, API verilerini günlük bazda sabah 9'da getirebileceğimi ve hem Sabah hem de Mahgrib Ezan vakitlerini çıkarabileceğimi ve şimdiki zamanı şu değişkenlerle karşılaştırmaya devam edebileceğimi düşündüm:

her 30 saniyede:

if: Mahgrib < ŞİMDİ < Fajr doğru | ışıkları aç | belirtilen MQTT konusuna bir AÇIK mesajı yayınlayın, aksi takdirde: kapatın

Zamanı karşılaştırmak için, zamanı karşılaştırdığımız için tarih bölümünü tarihte ihmal edilebilir bir tarihe ayarlayarak API tarafından sağlanan saatleri ss:dd(AM/PM)'den tam tarih formatına dönüştürüyorum. yalnızca geçerli saate (tarih kısmı da dönüştürülür).

Ne yazık ki, bu yalnızca düz ileri durumlarda işe yarar. Elektrik gücünün düştüğü veya planlanmamış bir nedenle sistemin yeniden başlatıldığı durumu varsayalım. Bu durum saat 12:00'den önce meydana gelirse, o zaman hala güvenli taraftayız, ancak saat 12:00'den sonra bu basit algoritmamız başarısız olacaktır.

Bir örnek vermek gerekirse, akşam 19:30'da Akşam Ezanı ve 04:10'da Sabah Namazı olsun. Sistem açıldığında, daha önce bahsedilen verileri almak için yeni bir istek gönderecektir. Şimdi saat 01:45 ise, algoritmamızın doğru dönmesini bekleriz, ancak aslında olmayacak çünkü 1:45AM Fajr'dan (4:10AM) daha az, ancak Magrib'den (7:30PM) daha büyük değil. Bunun nedeni tarihi tüm değişkenler arasında birleştirmemizdir. Algoritmanın son hali aşağıdadır (şimdiye kadar):

her 30 saniyede:

if ((magrib.getHours() >=12 && fajr.getHours() <=12) || sabah < akşam) { fajr.setDate(fajr.getDate()+1); // günleri kapsayan endTime if (now.getHours() <=12) { now.setDate(now.getDate()+1); // geçen günleri ele al currentTime } } // aşağıdaki durumlarda önceki kod bloğu: Mahgrib < NOW < Fajr true | ışıkları aç | belirtilen MQTT konusuna bir ON mesajı yayınlayın, aksi takdirde: false | kapat

İşlemin tam akışı yukarıdaki resimde açıklanmıştır.

UI açısından, UI/arayüze 2 anahtar ekledim:

  1. Bu işlemi Otomatik veya Manuel olarak değiştirmek için bir anahtar.
  2. Işıkları manuel olarak açmak/kapatmak için bir anahtar.

Adım 6: Sarma.

Zaman asla geri çağrılmamak üzere uçar. 1 günlük bu kadar basit projeler yapmak, bu hızlı kulvarda bir nefes almanızı sağlar ve zaman içinde yumuşak becerilerinizi canlandırmanıza yardımcı olur.

Bu projede, onu basit ve dünya çapında yeniden kullanılabilir kılmak için elimden geleni yaptım.

Bu projenin hak ettiğini düşünüyorsanız, lütfen bu talimat için oy verin.

Ramazan ayiniz kutlu olsun!

Önerilen: