فهرست مطالب:

چراغ ماه رمضان - اتوماسیون خانگی IOT: 6 مرحله
چراغ ماه رمضان - اتوماسیون خانگی IOT: 6 مرحله

تصویری: چراغ ماه رمضان - اتوماسیون خانگی IOT: 6 مرحله

تصویری: چراغ ماه رمضان - اتوماسیون خانگی IOT: 6 مرحله
تصویری: اسکرپ مکانیک - سری چهارم - Crashlander Mod - قسمت 05 2024, نوامبر
Anonim
چراغ ماه رمضان | اتوماسیون خانگی IOT
چراغ ماه رمضان | اتوماسیون خانگی IOT

با در زدن ماه رمضان ، شهرهای جهان روشن می شوند و خود را برای ماه روزه آماده می کنند. چراغ ها در میدان های عمومی و در سراسر خیابان های شهرستان و همچنین در دیوارهای بیرونی خانه های روشن در طول شب آویزان تا زمانی که خورشید می آید تا در صبح است.

در این پروژه، من می خواهم برای به اشتراک گذاشتن سهم من، که در آن من خودکار روشنایی تا این دکوراسیون بر اساس بار اذان و اضافه کردن این به سیستم خانه های هوشمند است.

مرحله 1: نظریه

اساساً ، خودکارسازی روشنایی بر اساس شدت نور خورشید ، به عنوان مثال ، آسان تر و کاربردی تر است. با این حال، من این را دوست دارند روح از ماه مبارک است که، چراغ را روشن تا زمانی که مردم اجازه در طول ماه روزه داری به غذا خوردن. به طور خاص ، چراغها از اذان مغرب تا اذان فجر هر روز بدون هیچ گونه تعامل انسانی روشن می شوند.

مرحله 2: طراحی

در زیر من الزامات/قابلیت های این پروژه را لیست می کنم:

  • سیستم باید بتواند هنگام راه اندازی بطور خودکار پردازش شود.
  • سیستم باید بتواند به صورت دوره ای الگوریتم تصمیم (ON/OFF) را اجرا کند.
  • سیستم باید بتواند به صورت روزانه API را فراخوانی کند.
  • سیستم باید بتواند پس از راه اندازی مجدد بدون برنامه بازیابی شود.
  • سیستم باید الگوریتم تصمیم (ON/OFF) را پس از دریافت فوری داده ها اجرا کند.
  • سیستم باید یک سوئیچ برای روشن کردن حالت خلبان خودکار (حالت خودکار) ارائه دهد.
  • سیستم باید یک سوئیچ برای روشن/خاموش کردن دستی چراغ ها ارائه دهد.
  • فعال کردن سوئیچ دستی باید حالت دستی را روی OFF تنظیم کند.
  • هنگامی که حالت اتوماتیک روشن است ، نتیجه الگوریتم تصمیم گیری باید روی کلید دستی ON/OFF منعکس شود.

مرحله 3: جزئیات فنی: API

جزئیات فنی: API
جزئیات فنی: API

برای کاربردی بودن این نظریه ، لازم است زمان اذان را به صورت روزانه از زمان متغیر آن بدانیم و برای روشن/خاموش کردن چراغها یا تزئینات بر اساس آن عمل کنیم.

برای این منظور ، تصمیم گرفتم از یک API مبتنی بر مکان برای ارائه اطلاعات استفاده کنم (زمان اذان)

muslimsalat.com/api/#location

  • این API گزینه ها و پارامترهای پیکربندی متنوعی را که در پیوند اسناد بالا توضیح داده شده است ، ارائه می دهد.
  • توصیه می شود از کلید API خود که هنگام ثبت نام رایگان است استفاده کنید.
  • در طراحی من ، من به جدول زمانی روزانه علاقه دارم.
  • زمان بازگشت در قالب 12 ساعت (AM/PM) است.
  • از نظر موقعیت ، من آرزو می کنم اگر این API بتواند گزینه های دقیق تری را برای مکان هایی مانند مختصات سیستم مختصات جغرافیایی (عرض جغرافیایی و طول جغرافیایی) ارائه دهد. به این ترتیب ، این API را می توان به عنوان نام شهر ارائه داد و این در اکثر موارد کاملاً کافی است. متأسفانه ، نتایج شهر خاص من در چندین آزمایش کاملاً مغرضانه بود و هنگام مقایسه زمان اذان بین نتایج API و زمان واقعی اذان در شهر من ، چند دقیقه تفاوت وجود داشت. از سوی دیگر ، وقتی یک شهر نزدیک به شمال را تهیه کردم و به آن پایبند بودم ، نتایج کاملاً مطابقت داشت!
  • آدرس API مورد استفاده من این است: https://muslimsalat.com/.json؟ key =

مرحله 4: جزئیات فنی: سخت افزار

مشخصات فنی: سخت افزار
مشخصات فنی: سخت افزار

برای سادگی، من دارم می روم سخت افزار به خارج از همگام سازی با API و محاسبه زمان با تفویض این عملیات به سیستم اتوماسیون خانه من است. اگر بخواهم منبع API و الگوریتم محاسبه را تغییر دهم ، کنترل بیشتری به من می دهد.

داشتن که گفت، من با استفاده از یک ESP8266 (NodeMCU) برای اتصال به شبکه محلی از طریق WIFI و یک ماژول رله به عنوان یک محرک است. NodeMCU از پروتکل MQTT استفاده می کند و به یک موضوع خاص گوش می دهد تا فرمان هایی برای روشن/خاموش شدن رله دریافت کند. به همین سادگی!

مرحله 5: جزئیات فنی: اتصال نقاط | اتوماسیون خانگی

جزئیات فنی: اتصال نقاط | اتوماسیون خانگی
جزئیات فنی: اتصال نقاط | اتوماسیون خانگی
جزئیات فنی: اتصال نقاط | اتوماسیون خانگی
جزئیات فنی: اتصال نقاط | اتوماسیون خانگی
جزئیات فنی: اتصال نقاط | اتوماسیون خانگی
جزئیات فنی: اتصال نقاط | اتوماسیون خانگی

RaspberryPi من دارای یک نمونه گره دار است که می تواند تمام نیازهای من برای این پروژه را برآورده کند. همچنین یک سرور MQTT برای انتشار پیام های ما نصب شده است.

در ابتدا ، من فکر کردم که می توانم داده های API را به صورت روزانه در 9 صبح واکشی کنم و هر دو زمان فجر و اذان محریب را استخراج کنم و زمان فعلی را با این متغیرها مقایسه کنم:

هر 30 ثانیه:

if: محگریب <اکنون <فجر درست | چراغ ها را روشن کن | یک پیام ON به موضوع MQTT مشخص شده منتشر کنید: خاموش

برای مقایسه زمان ، من ساعات ارائه شده توسط API را از hh: mm (AM/PM) به فرمت کامل تاریخ تبدیل می کنم و قسمت تاریخ را به تاریخ ناچیزی در تاریخ تبدیل می کنم (به عنوان مثال (1/1/1970) زیرا زمان را مقایسه می کنیم فقط به زمان فعلی (قسمت تاریخ نیز تبدیل می شود).

متأسفانه ، این فقط در موارد مستقیم کار می کند. فرض کنید در صورت قطع برق و یا راه اندازی مجدد سیستم به دلایلی برنامه ریزی نشده. اگر این مورد قبل از ساعت 12 صبح رخ دهد ، ما هنوز در حالت امن هستیم ، اما بعد از 12 صبح این الگوریتم ساده ما را شکست می دهد.

برای مثال ، بیایید مغرب اذان را در 7:30 بعد از ظهر و فجر را در 4:10 صبح بخوریم. هنگامی که سیستم بوت می شود ، درخواست جدیدی برای واکشی داده هایی که قبلاً ذکر شد ارسال می کند. اگر اکنون ساعت 1:45 صبح است ، ما انتظار داریم که الگوریتم ما درست بازگردد ، اما در واقع اینطور نخواهد بود زیرا 1:45 بامداد کمتر از فجر (4:10 صبح) است اما از مگریب (7:30 بعد از ظهر) بیشتر نیست. این به این دلیل است که ما تاریخ را بین همه متغیرها متحد می کنیم. در زیر آخرین نسخه الگوریتم (تا کنون) آمده است:

هر 30 ثانیه:

if ((magrib.getHours ()> = 12 && fajr.getHours () <= 12) || فجر <مغرب) {fajr.setDate (fajr.getDate ()+1) ؛ // دسته پوشا روز ENDTIME اگر (now.getHours () <= 12) {now.setDate (now.getDate () + 1)؛ // دستاوردهای روزهای جاری currentTime}} // در زیر بلوک کد قبلی آمده است: Mahgrib <NOW <Fajr true | چراغ ها را روشن کن | یک پیام ON به موضوع مشخص شده MQTT دیگری منتشر کنید: false | خاموش کردن

جریان کامل این فرآیند در تصویر بالا ذکر شده است.

از نظر UI ، 2 سوئیچ به UI/رابط اضافه کردم:

  1. یک سوئیچ برای تبدیل این فرآیند به صورت خودکار یا دستی.
  2. یک کلید برای روشن/خاموش کردن چراغ ها به صورت دستی.

مرحله 6: جمع بندی

زمان می گذرد که هرگز به یاد نمی آید. انجام چنین پروژه های ساده 1 روزه به شما امکان می دهد در این خط سریع نفس بکشید و به شما کمک می کند تا مهارت های نرم خود را در طول زمان احیا کنید.

من به همان اندازه در این پروژه سعی کردم به نگه داشتن آن ساده و قابل استفاده مجدد در سراسر جهان.

اگر فکر می کنید این پروژه شایسته این است ، لطفاً به این دستورالعمل رای دهید.

رمضان مبارک!

توصیه شده: