İçindekiler:
- 1. Adım: Teori
- 2. Adım: Tasarım
- 3. Adım: Teknik Ayrıntılar: API
- 4. Adım: Teknik Ayrıntılar: Donanım
- Adım 5: Teknik Detaylar: Noktaları Birleştirme | Ev otomasyonu
- Adım 6: Sarma.
Video: Ramazan Işıkları - Ev Otomasyonu IOT: 6 Adım
2024 Yazar: John Day | [email protected]. Son düzenleme: 2024-01-30 13:19
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
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
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
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:
- Bu işlemi Otomatik veya Manuel olarak değiştirmek için bir anahtar.
- 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:
Cortana ve Arduino ile Ses Kontrol Işıkları Elektronik RGB Led Şeritler ve Daha Fazlası Ev Otomasyonu: 3 Adım
Sesle Kontrol Işıkları Elektronik RGB Led Şeritler ve Cortana ve Arduino ile Daha Fazlası Ev Otomasyonu: Bir şeyleri sesinizle kontrol etme fikrini beğendiniz mi? Ya da ışıkları kapatmak için yataktan çıkmaktan hoşlanmıyor musunuz? Ancak google home gibi mevcut tüm çözümler çok mu pahalı? Şimdi 10 doların altına kendiniz yapabilirsiniz. Ve daha da iyisi, çok kolay
Etkileşimli Avlu Işıkları, Geçit Işıkları: 3 Adım
Etkileşimli Avlu Işıkları, Geçit Işıkları: Arka bahçem için bir çeşit etkileşimli avlu ışığı yapmak istedim. Fikir, birisi bir yöne yürüdüğünde, yürüdüğünüz yönde bir animasyon başlatacaktı. Dollar General 1.00$ güneş ışığıyla başladım
IoT Şebeke Denetleyicisi. Bölüm 9: IoT, Ev Otomasyonu: 10 Adım (Resimlerle)
IoT Şebeke Denetleyicisi. Bölüm 9: IoT, Ev Otomasyonu: Sorumluluk Reddi ÖNCE BUNU OKUYUNBu Talimat, ana güç kullanan bir projeyi (bu örnekte UK 240VAC RMS) detaylandırır, ancak güvenli uygulama ve iyi tasarım ilkelerini kullanmak için her türlü özen gösterilmiş olsa da her zaman potansiyel olarak ölümcül olma riski vardır. seç
WiFi IoT Sıcaklık ve Nem Sensörü. Bölüm: 8 IoT, Ev Otomasyonu: 9 Adım
WiFi IoT Sıcaklık ve Nem Sensörü. Bölüm: 8 IoT, Ev Otomasyonu: ÖnsözBu makale, daha önceki bir Eğitilebilir Dosyanın pratik sağlamlaştırılmasını ve ileriye dönük gelişimini belgelemektedir: ilk IoT WiFi Cihazınızı 'Pimping'. Bölüm 4: Başarılı olmak için gerekli tüm yazılım işlevselliğini içeren IoT, Ev Otomasyonu
Kendin Yap Noel Işıkları Müziğe Ayarlandı - Koreograflı Ev Işıkları: 15 Adım (Resimlerle)
Kendin Yap Noel Işıkları Müziğe Ayarlandı - Koreograflı Ev Işıkları: Müzik Ayarlı DIY Noel Işıkları - Koreograflı Ev Işıkları Bu yeni başlayan bir DIY DEĞİLDİR. Elektronik, devre, BASIC programlama ve elektrik güvenliği ile ilgili genel zeka konularında sağlam bir kavrayışa ihtiyacınız olacak. Bu DIY, deneyimli bir kişi içindir, yani