Isi kandungan:

Lampu Ramadan - Automasi Rumah IOT: 6 Langkah
Lampu Ramadan - Automasi Rumah IOT: 6 Langkah

Video: Lampu Ramadan - Automasi Rumah IOT: 6 Langkah

Video: Lampu Ramadan - Automasi Rumah IOT: 6 Langkah
Video: Inspirahoms Ep.23: Rumah Kecil 75m2 Full Pake Smarthome ft. Zahrenaa 2024, November
Anonim
Lampu Ramadan | Automasi Rumah IOT
Lampu Ramadan | Automasi Rumah IOT

Ketika Ramadan mengetuk pintu, kota-kota di seluruh dunia menyala dan bersiap untuk bulan puasa. Lampu digantung di dataran umum dan di seberang jalan kota serta di dinding luar rumah yang dinyalakan pada waktu malam hingga matahari terbit pada waktu pagi.

Dalam projek ini, saya ingin berkongsi sumbangan saya, di mana saya mengautomasikan pencahayaan hiasan ini berdasarkan masa Adhan dan menambahkannya ke sistem rumah pintar saya.

Langkah 1: Teori

Pada dasarnya, lebih mudah dan lebih berkesan untuk mengautomasikan pencahayaan berdasarkan intensiti cahaya matahari, misalnya. Namun, saya ingin agar semangat bulan suci itu, lampu akan menyala selagi orang dibenarkan makan pada bulan puasa. Khususnya, lampu mulai dari Maghrib Adhan hingga Fajr Adhan pada setiap hari tanpa interaksi manusia.

Langkah 2: Reka bentuk

Di bawah ini saya akan menyenaraikan keperluan / keupayaan projek ini:

  • Sistem harus dapat memproses secara automatik semasa boot up.
  • Sistem harus dapat menjalankan algoritma keputusan (ON / OFF) secara berkala.
  • Sistem harus dapat memanggil API setiap hari.
  • Sistem harus dapat pulih dari mulakan semula yang tidak dirancang.
  • Sistem harus melaksanakan algoritma keputusan (ON / OFF) setelah menerima data dengan serta-merta.
  • Sistem harus menyediakan suis untuk menghidupkan mod autopilot (Mod automatik).
  • Sistem harus menyediakan suis untuk menyalakan / mematikan lampu secara manual.
  • Memicu suis manual harus menetapkan mod manual ke MATI.
  • Apabila mod Automatik AKTIF, hasil algoritma keputusan harus dicerminkan pada suis manual ON / OFF.

Langkah 3: Butiran Teknikal: API

Butiran Teknikal: API
Butiran Teknikal: API

Untuk membuat teori itu berlaku, perlu mengetahui waktu Adhan pada setiap hari sejak pemboleh ubahnya dan bertindak untuk menghidupkan / mematikan lampu / hiasan.

Untuk tujuan ini, saya memutuskan untuk menggunakan API berdasarkan lokasi untuk melayani data (waktu untuk Adhan)

muslimsalat.com/api/#lokasi

  • API ini menyediakan pelbagai pilihan dan parameter konfigurasi yang dijelaskan dalam pautan dokumentasi di atas.
  • Sebaiknya gunakan API_key anda sendiri yang percuma semasa pendaftaran.
  • Dalam reka bentuk saya, saya berminat dengan garis masa harian.
  • Masa yang dikembalikan adalah dalam format 12 jam (AM / PM).
  • Dari segi lokasi, saya berharap sekiranya API ini dapat memberikan pilihan yang lebih tepat untuk lokasi seperti sistem koordinat geografi koordinat (Lintang dan Bujur). Dengan cara ini, API ini dapat dibekalkan dengan nama bandar misalnya dan ini cukup banyak dalam kebanyakan kes. Malangnya, keputusan bandar khusus saya agak berat sebelah dalam beberapa ujian dan terdapat beberapa minit perbezaan ketika membandingkan waktu Adhan antara hasil API dan waktu sebenar Adhan di bandar saya. Sebaliknya, hasilnya sangat sesuai ketika saya menyediakan bandar yang dekat dengan utara dan saya tetap berpegang teguh!
  • Url API yang saya gunakan ialah: https://muslimsalat.com/.json? Key =

Langkah 4: Butiran Teknikal: Perkakasan

Butiran Teknikal: Perkakasan
Butiran Teknikal: Perkakasan

Untuk kesederhanaan, saya meninggalkan perkakasan dari proses penyegerakan dengan API dan pengiraan masa dengan mendelegasikan operasi ini ke Sistem Automasi Rumah saya. Ini akan memberi saya lebih banyak kawalan sekiranya saya ingin mengubah sumber API dan algoritma pengiraan.

Setelah itu, saya menggunakan ESP8266 (NodeMCU) untuk menyambung ke rangkaian tempatan melalui WIFI dan modul relay sebagai penggerak. NodeMCU akan menggunakan protokol MQTT dan mendengar topik tertentu untuk mendapatkan arahan untuk menghidupkan / mematikan geganti. Semudah itu!

Langkah 5: Butiran Teknikal: Menghubungkan Titik | Automasi Rumah

Butiran Teknikal: Menghubungkan Titik | Automasi Rumah
Butiran Teknikal: Menghubungkan Titik | Automasi Rumah
Butiran Teknikal: Menghubungkan Titik | Automasi Rumah
Butiran Teknikal: Menghubungkan Titik | Automasi Rumah
Butiran Teknikal: Menghubungkan Titik | Automasi Rumah
Butiran Teknikal: Menghubungkan Titik | Automasi Rumah

RaspberryPi saya memegang contoh yang mengangguk yang mampu menangani semua yang saya perlukan untuk projek ini. Ia juga mempunyai pelayan MQTT yang dipasang untuk menerbitkan mesej kami.

Pada mulanya, saya berpendapat bahawa saya dapat mengambil data API di pangkalan harian pada pukul 09:00 dan mengekstrak waktu Fajr dan Mahgrib Adhan dan terus membandingkan masa sekarang dengan pemboleh ubah berikut:

setiap 30 saat:

jika: Mahgrib <SEKARANG <Fajr benar | hidupkan lampu | terbitkan mesej ON ke topik MQTT yang ditentukan yang lain: matikan

Untuk membandingkan masa, saya menukar jam yang disediakan oleh API dari jam: mm (AM / PM) ke format tarikh penuh dengan menetapkan bahagian tarikh menjadi tarikh yang tidak dapat diabaikan dalam sejarah misalnya (1/1/1970) kerana kita membandingkan masa hanya ke waktu semasa (bahagian tarikh juga ditukar).

Malangnya, ini hanya akan berfungsi dalam kes lurus ke hadapan. Anggap kes berlaku semasa kuasa elektrik turun atau sistem dimulakan semula kerana alasan yang tidak dirancang. Sekiranya kes ini berlaku sebelum jam 12:00, maka kita masih berada di tempat yang selamat, tetapi selepas jam 12:00 ini akan gagal algoritma mudah kita.

Untuk memberi contoh, mari kita Magrib Adhan pada 7:30 PM dan Fajr pada 4:10 AM. Apabila sistem boot, ia akan menghantar permintaan baru untuk mengambil data yang disebutkan sebelumnya. Sekiranya waktunya sekarang adalah 1:45 AM, kami menjangkakan algoritma kami akan benar, tetapi sebenarnya tidak akan berlaku kerana 1:45 AM kurang dari Fajr (4:10 AM) tetapi tidak lebih besar daripada Magrib (7:30 PM). Ini kerana kita menyatukan tarikh antara semua pemboleh ubah. Berikut adalah versi terakhir algoritma (setakat ini):

setiap 30 saat:

jika ((magrib.getHours ()> = 12 && fajr.getHours () <= 12) || fajr <maghrib) {fajr.setDate (fajr.getDate () + 1); // atur rentang hari endTime if (now.getHours () <= 12) {now.setDate (now.getDate () + 1); // menangani rentang hari sekarangTime}} // di bawah ini adalah blok kod sebelumnya jika: Mahgrib <SEKARANG <Fajr true | hidupkan lampu | menerbitkan mesej ON ke topik MQTT yang ditentukan yang lain: false | matikan

Aliran lengkap proses dijelaskan dalam gambar di atas.

Dari segi UI, saya menambahkan 2 suis ke UI / antara muka:

  1. Suis untuk menghidupkan proses ini Automatik atau Manual.
  2. Suis untuk menghidupkan / mematikan lampu secara manual.

Langkah 6: Mengemas

Masa berlalu tidak dapat dikenang. Melakukan projek 1 hari yang mudah ini membolehkan anda menarik nafas lega di jalan pantas ini dan membantu anda menghidupkan kembali kemahiran insaniah anda dari masa ke masa.

Saya berusaha seberapa banyak dalam projek ini untuk menjadikannya mudah dan boleh digunakan semula di seluruh dunia.

Mohon Undian untuk arahan ini jika anda rasa projek ini layak.

Selamat menyambut Ramadan!

Disyorkan: