جدول المحتويات:

اضواء رمضان - أتمتة المنزل IOT: 6 خطوات
اضواء رمضان - أتمتة المنزل IOT: 6 خطوات

فيديو: اضواء رمضان - أتمتة المنزل IOT: 6 خطوات

فيديو: اضواء رمضان - أتمتة المنزل IOT: 6 خطوات
فيديو: التحكم في أجهزة المنزل عن بعد و يدويا - ESP32 Home Automation 2024, يوليو
Anonim
اضواء رمضان | أتمتة المنزل IOT
اضواء رمضان | أتمتة المنزل IOT

مع قرع رمضان على الأبواب ، تضيء المدن في جميع أنحاء العالم وتستعد لشهر الصيام. يتم تعليق الأضواء في الساحات العامة وعبر شوارع المدينة وكذلك على الجدران الخارجية للمنازل المضاءة أثناء الليل حتى تشرق الشمس في الصباح.

في هذا المشروع ، أود أن أشارك مساهمتي ، والتي أقوم فيها بأتمتة إضاءة هذه الزخارف بناءً على أوقات الأذان وإضافتها إلى نظام منزلي الذكي.

الخطوة 1: النظرية

في الأساس ، من الأسهل والأكثر قابلية للتطبيق أتمتة الإضاءة بناءً على كثافة ضوء الشمس ، على سبيل المثال. ومع ذلك ، أود أن يكون هذا هو روح الشهر الكريم ، أي أن الأنوار ستضيء طالما يُسمح للناس بتناول الطعام خلال شهر الصيام. على وجه الخصوص ، تضاء الأنوار من مغرب أذان حتى فجر أذان كل يوم دون أي تفاعل بشري.

الخطوة الثانية: التصميم

أدناه سأدرج متطلبات / قدرات هذا المشروع:

  • يجب أن يكون النظام قادرًا على المعالجة تلقائيًا عند بدء التشغيل.
  • يجب أن يكون النظام قادرًا على تنفيذ خوارزمية القرار (ON / OFF) بشكل دوري.
  • يجب أن يكون النظام قادرًا على استدعاء API على أساس يومي.
  • يجب أن يكون النظام قادرًا على التعافي من إعادة التشغيل غير المخطط لها.
  • يجب أن يقوم النظام بتنفيذ خوارزمية القرار (ON / OFF) عند استلام البيانات على الفور.
  • يجب أن يوفر النظام مفتاحًا لتشغيل وضع الطيار الآلي (الوضع التلقائي).
  • يجب أن يوفر النظام مفتاحًا لتشغيل / إيقاف تشغيل المصابيح يدويًا.
  • يجب أن يؤدي تشغيل المفتاح اليدوي إلى ضبط الوضع اليدوي على OFF.
  • عندما يكون الوضع التلقائي قيد التشغيل ، يجب أن تنعكس نتيجة خوارزمية القرار على المفتاح اليدوي ON / OFF.

الخطوة 3: التفاصيل الفنية: API

التفاصيل الفنية: API
التفاصيل الفنية: API

لجعل النظرية قابلة للتطبيق ، يجب معرفة وقت الأذان على أسس يومية منذ متغيرها والعمل عليها لتشغيل / إطفاء الأنوار / الزخارف.

لهذا الغرض ، قررت استخدام واجهة برمجة تطبيقات تعتمد على الموقع لخدمة البيانات (وقت الأذان)

muslimsalat.com/api/#location

  • توفر واجهة برمجة التطبيقات هذه مجموعة متنوعة من الخيارات ومعلمات التكوين الموضحة في ارتباط التوثيق أعلاه.
  • يوصى باستخدام API_key الخاص بك والذي يكون مجانيًا عند التسجيل.
  • في تصميمي ، أنا مهتم بجدول زمني يومي.
  • الوقت الذي تم إرجاعه بتنسيق 12 ساعة (صباحًا / مساءً).
  • فيما يتعلق بالموقع ، تمنيت لو كان بإمكان واجهة برمجة التطبيقات هذه توفير خيارات أكثر دقة للمواقع مثل نظام الإحداثيات الجغرافية (خطوط الطول والعرض). بهذه الطريقة ، يمكن تزويد واجهة برمجة التطبيقات هذه باسم مدينة على سبيل المثال وهذا يكفي تمامًا في معظم الحالات. لسوء الحظ ، كانت نتائج مدينتي المحددة منحازة تمامًا في اختبارات متعددة وكان هناك اختلاف بسيط لمدة دقيقتين عند مقارنة وقت الأذان بين نتائج API والوقت الفعلي للأذان في مدينتي. من ناحية أخرى ، كانت النتائج متطابقة تمامًا عندما قدمت مدينة قريبة من الشمال وتمسكت بها!
  • عنوان url الخاص بواجهة برمجة التطبيقات الذي أستخدمه هو: https://muslimsalat.com/.json؟ key =

الخطوة 4: التفاصيل الفنية: الأجهزة

التفاصيل الفنية: الأجهزة
التفاصيل الفنية: الأجهزة

للتبسيط ، أترك الأجهزة خارج عملية المزامنة مع واجهة برمجة التطبيقات وحساب الوقت من خلال تفويض هذه العمليات إلى نظام أتمتة المنزل الخاص بي. سيعطيني هذا مزيدًا من التحكم إذا كنت أرغب في تعديل مصدر واجهة برمجة التطبيقات وخوارزمية الحساب.

بعد قولي هذا ، استخدمت ESP8266 (NodeMCU) للاتصال بالشبكة المحلية عبر WIFI ووحدة الترحيل كمشغل. ستستخدم NodeMCU بروتوكول MQTT وتستمع لموضوع معين للحصول على أوامر لتشغيل / إيقاف تشغيل الترحيل. بهذه البساطة!

الخطوة 5: التفاصيل الفنية: توصيل النقاط | أتمتة المنزل

التفاصيل الفنية: ربط النقاط | أتمتة المنزل
التفاصيل الفنية: ربط النقاط | أتمتة المنزل
التفاصيل الفنية: ربط النقاط | أتمتة المنزل
التفاصيل الفنية: ربط النقاط | أتمتة المنزل
التفاصيل الفنية: ربط النقاط | أتمتة المنزل
التفاصيل الفنية: ربط النقاط | أتمتة المنزل

يحتوي تطبيق My RaspberryPi على مثيل ذي إيماءات قادر على التعامل مع كل ما أحتاجه لهذا المشروع. كما أن لديها خادم MQTT مثبتًا لنشر رسائلنا.

في البداية ، اعتقدت أنه يمكنني إحضار بيانات واجهة برمجة التطبيقات على أسس يومية في الساعة 9 صباحًا واستخراج كل من أوقات الفجر ومغرب أذان ومواصلة مقارنة الوقت الحالي بهذه المتغيرات وهي:

كل 30 ثانية:

إذا: محجرب <الآن <صواب الفجر | أشعل الأضواء | نشر رسالة ON لموضوع MQTT المحدد وإلا: إيقاف

لمقارنة الوقت ، أقوم بتحويل الساعات التي توفرها واجهة برمجة التطبيقات من hh: mm (AM / PM) إلى تنسيق التاريخ الكامل عن طريق تعيين جزء التاريخ إلى تاريخ ضئيل في التاريخ ، على سبيل المثال (1/1/1970) نظرًا لأننا نقارن الوقت فقط إلى الوقت الحالي (يتم تحويل جزء التاريخ أيضًا).

لسوء الحظ ، لن يعمل هذا إلا في الحالات المستقيمة. افترض حالة انقطاع التيار الكهربائي أو إعادة تشغيل النظام لسبب غير مخطط له. إذا حدثت هذه الحالة قبل الساعة 12 صباحًا ، فنحن ما زلنا في الجانب الآمن ، ولكن بعد الساعة 12 صباحًا ، ستفشل خوارزميةنا البسيطة.

لإعطاء مثال ، لنحصل على Magrib Adhan في 7:30 مساءً والفجر في 4:10 صباحًا. عند بدء تشغيل النظام ، سيرسل طلبًا جديدًا لجلب البيانات المذكورة سابقًا. إذا كان الوقت الآن هو 1:45 صباحًا ، نتوقع أن تعود الخوارزمية لدينا صحيحة ، لكنها في الحقيقة لن تكون كذلك لأن 1:45 صباحًا أقل من الفجر (4:10 صباحًا) ولكنها ليست أكبر من Magrib (7:30 مساءً). هذا لأننا نوحد التاريخ بين جميع المتغيرات. فيما يلي الإصدار النهائي من الخوارزمية (حتى الآن):

كل 30 ثانية:

if ((magrib.getHours ()> = 12 && fajr.getHours () <= 12) || fajr <maghrib) {fajr.setDate (fajr.getDate () + 1)؛ // handle spanning days endTime if (now.getHours () <= 12) {now.setDate (now.getDate () + 1)؛ // handle spanning days currentTime}} // أدناه هو مقطع الكود السابق إذا: Mahgrib <NOW <Fajr true | أشعل الأنوار | نشر رسالة ON إلى موضوع MQTT المحدد وإلا: false | يطفىء

تم توضيح التدفق الكامل للعملية في الصورة أعلاه.

فيما يتعلق بواجهة المستخدم ، أضفت محولين إلى واجهة المستخدم / الواجهة:

  1. مفتاح لتحويل هذه العملية إلى تلقائي أو يدوي.
  2. مفتاح لتشغيل / إطفاء الأنوار يدويًا.

الخطوة السادسة: الختام

الوقت يمر بسرعة لا يمكن استدعاؤه. يتيح لك القيام بهذه المشاريع البسيطة التي تستغرق يومًا واحدًا التقاط أنفاسك في هذا المسار السريع ومساعدتك على إحياء مهاراتك الناعمة بمرور الوقت.

حاولت كثيرًا في هذا المشروع أن أبقيه بسيطًا وقابل لإعادة الاستخدام في جميع أنحاء العالم.

يرجى التصويت على هذه التعليمات إذا كنت تعتقد أن هذا المشروع يستحق.

رمضان سعيد!

موصى به: