সুচিপত্র:

রমজান লাইট - হোম অটোমেশন IOT: 6 টি ধাপ
রমজান লাইট - হোম অটোমেশন IOT: 6 টি ধাপ

ভিডিও: রমজান লাইট - হোম অটোমেশন IOT: 6 টি ধাপ

ভিডিও: রমজান লাইট - হোম অটোমেশন IOT: 6 টি ধাপ
ভিডিও: বিদেশি টর্চ লাইট কিনুন রমজান অফারে।torch light price in BD 2023 2024, নভেম্বর
Anonim
রমজান লাইট | হোম অটোমেশন আইওটি
রমজান লাইট | হোম অটোমেশন আইওটি

রমজান দরজায় কড়া নাড়ার সাথে সাথে বিশ্বব্যাপী শহরগুলি আলোকিত হয় এবং রোজার মাসের জন্য প্রস্তুত হয়। পাবলিক স্কোয়ারে এবং শহরের রাস্তায় এবং রাতের বেলায় ঘরের বাইরের দেয়ালে আলো জ্বালানো হয় যতক্ষণ না সকালে সূর্য ওঠে।

এই প্রকল্পে, আমি আমার অবদান ভাগ করতে চাই, যেখানে আমি এই সজ্জাগুলির আলোকে স্বয়ংক্রিয়ভাবে আধান সময়ের উপর ভিত্তি করে এবং আমার স্মার্ট হোম সিস্টেমে এটি যুক্ত করছি।

ধাপ 1: তত্ত্ব

মূলত, সূর্যালোকের তীব্রতার উপর ভিত্তি করে আলো স্বয়ংক্রিয় করা সহজ এবং আরো প্রযোজ্য, উদাহরণস্বরূপ। যাইহোক, আমি চাই এই পবিত্র মাসের চেতনা থাকতে হবে, যতক্ষণ পর্যন্ত রোজার মাসে মানুষকে খেতে দেওয়া হবে ততক্ষণ লাইট জ্বলবে। বিশেষ করে, মাগরিব আযান থেকে শুরু করে ফজরের আযান পর্যন্ত প্রতিটি দিন কোনো রকম মানুষের যোগাযোগ ছাড়াই লাইট জ্বালানো হয়।

ধাপ 2: নকশা

নীচে আমি এই প্রকল্পের প্রয়োজনীয়তা/ক্ষমতা তালিকাভুক্ত করব:

  • সিস্টেম স্বয়ংক্রিয়ভাবে বুট আপ প্রক্রিয়া করতে সক্ষম হওয়া উচিত।
  • সিস্টেমটি পর্যায়ক্রমে সিদ্ধান্ত (ON/OFF) অ্যালগরিদম কার্যকর করতে সক্ষম হওয়া উচিত।
  • সিস্টেমটি দৈনিক ভিত্তিতে API এ কল করতে সক্ষম হওয়া উচিত।
  • সিস্টেমটি অপরিকল্পিত পুনartসূচনা থেকে পুনরুদ্ধার করতে সক্ষম হওয়া উচিত।
  • তাত্ক্ষণিকভাবে ডেটা পাওয়ার পরে সিস্টেমের সিদ্ধান্ত (চালু/বন্ধ) অ্যালগরিদম কার্যকর করা উচিত।
  • অটোপাইলট মোড (স্বয়ংক্রিয় মোড) চালু করার জন্য সিস্টেমের একটি সুইচ প্রদান করা উচিত।
  • সিস্টেমটি ম্যানুয়ালি লাইট চালু/বন্ধ করার জন্য একটি সুইচ প্রদান করা উচিত।
  • ম্যানুয়াল সুইচ ট্রিগার করা ম্যানুয়াল মোড বন্ধ করতে হবে।
  • যখন স্বয়ংক্রিয় মোড চালু থাকে, সিদ্ধান্ত অ্যালগরিদমের ফলাফল ম্যানুয়াল সুইচ অন/অফে প্রতিফলিত হওয়া উচিত।

ধাপ 3: প্রযুক্তিগত বিবরণ: API

প্রযুক্তিগত বিবরণ: API
প্রযুক্তিগত বিবরণ: API

তত্ত্বটি প্রযোজ্য করার জন্য, দৈনিক ভিত্তিতে তার পরিবর্তনশীল সময় থেকে আধানের সময় জানতে হবে এবং লাইট/সজ্জা চালু/বন্ধ করার জন্য এটিতে কাজ করতে হবে।

এই উদ্দেশ্যে, আমি ডেটা পরিবেশন করার জন্য একটি অবস্থান-ভিত্তিক API ব্যবহার করার সিদ্ধান্ত নিয়েছি (আযানের সময়)

muslimsalat.com/api/#location

  • এই API বিভিন্ন ডকুমেন্টেশন লিঙ্কে বর্ণিত বিভিন্ন বিকল্প এবং কনফিগারেশন প্যারামিটার সরবরাহ করে।
  • আপনার নিজের API_key ব্যবহার করার পরামর্শ দেওয়া হয় যা নিবন্ধনের পরে বিনামূল্যে।
  • আমার ডিজাইনে, আমি একটি দৈনিক টাইমলাইনে আগ্রহী।
  • ফিরে আসা সময় 12 ঘন্টা ফরম্যাটে (AM/PM)।
  • অবস্থানের পরিপ্রেক্ষিতে, আমি কামনা করি যদি এই API স্থানের জন্য আরও সঠিক বিকল্প প্রদান করতে পারে যেমন স্থানাঙ্ক ভৌগলিক স্থানাঙ্ক সিস্টেম (অক্ষাংশ এবং দ্রাঘিমাংশ)। এই পদ্ধতির জন্য, এই API উদাহরণস্বরূপ একটি শহরের নাম প্রদান করা যেতে পারে এবং এটি বেশিরভাগ ক্ষেত্রেই যথেষ্ট। দুর্ভাগ্যক্রমে, আমার নির্দিষ্ট শহরের ফলাফল একাধিক পরীক্ষায় বেশ পক্ষপাতদুষ্ট ছিল এবং এপিআই ফলাফল এবং আমার শহরে আযানের প্রকৃত সময়ের মধ্যে আধনের সময় তুলনা করার সময় কয়েক মিনিটের পার্থক্য ছিল। অন্যদিকে, ফলাফলগুলি পুরোপুরি মিলে গিয়েছিল যখন আমি উত্তরে একটি ঘনিষ্ঠ শহর সরবরাহ করেছিলাম এবং আমি এটিকে আটকে রেখেছিলাম!
  • আমি যে API url ব্যবহার করছি তা হল: https://muslimsalat.com/.json? Key =

ধাপ 4: প্রযুক্তিগত বিবরণ: হার্ডওয়্যার

প্রযুক্তিগত বিবরণ: হার্ডওয়্যার
প্রযুক্তিগত বিবরণ: হার্ডওয়্যার

সরলতার জন্য, আমি হার্ডওয়্যারটিকে API- এর সাথে সিঙ্ক করার প্রক্রিয়া থেকে বাদ দিচ্ছি এবং এই অপারেশনগুলিকে আমার হোম অটোমেশন সিস্টেমে অর্পণ করে। যদি আমি API উৎস এবং গণনার অ্যালগরিদম পরিবর্তন করতে চাই তবে এটি আমাকে আরও নিয়ন্ত্রণ দেবে।

এটা বলার পর, আমি একটি ESP8266 (NodeMCU) ব্যবহার করে স্থানীয় নেটওয়ার্কের সাথে ওয়াইফাই এবং একটি রিলে মডিউলকে অ্যাকচুয়েটর হিসাবে সংযুক্ত করতে। NodeMCU MQTT প্রোটোকল ব্যবহার করবে এবং রিলে চালু/বন্ধ করার জন্য একটি নির্দিষ্ট বিষয় শুনবে। এর মত সহজ!

ধাপ 5: প্রযুক্তিগত বিবরণ: বিন্দু সংযোগ | অধিবাস স্বয়ংক্রিয়তা

প্রযুক্তিগত বিবরণ: বিন্দু সংযোগ | অধিবাস স্বয়ংক্রিয়তা
প্রযুক্তিগত বিবরণ: বিন্দু সংযোগ | অধিবাস স্বয়ংক্রিয়তা
প্রযুক্তিগত বিবরণ: বিন্দু সংযোগ | অধিবাস স্বয়ংক্রিয়তা
প্রযুক্তিগত বিবরণ: বিন্দু সংযোগ | অধিবাস স্বয়ংক্রিয়তা
প্রযুক্তিগত বিবরণ: বিন্দু সংযোগ | অধিবাস স্বয়ংক্রিয়তা
প্রযুক্তিগত বিবরণ: বিন্দু সংযোগ | অধিবাস স্বয়ংক্রিয়তা

আমার রাস্পবেরিপি একটি নোডারেড দৃষ্টান্ত ধারণ করে যা এই প্রকল্পের জন্য আমার যা প্রয়োজন তা পরিচালনা করতে সক্ষম। আমাদের বার্তা প্রকাশের জন্য এটিতে একটি MQTT সার্ভারও রয়েছে।

প্রথমে, আমি ভেবেছিলাম যে আমি প্রতিদিন সকাল at টায় এপিআই ডেটা আনতে পারি এবং ফজর এবং মাহগরিব আযান উভয় সময় বের করতে পারি এবং বর্তমান সময়ের সাথে এই ভেরিয়েবলের সাথে তুলনা করতে পারি:

প্রতি 30 সেকেন্ড:

যদি: মাহগরিব <এখন <ফজর সত্য | লাইট জ্বালান | নির্দিষ্ট MQTT বিষয়ের উপর একটি অন মেসেজ প্রকাশ করুন: বন্ধ করুন

সময়ের তুলনা করার জন্য, আমি API দ্বারা প্রদত্ত ঘন্টাগুলি hh: mm (AM/PM) থেকে তারিখের অংশকে ইতিহাসের একটি নগণ্য তারিখ হিসাবে সেট করে পূর্ণ তারিখের ফর্ম্যাট রূপান্তর করছি যেমন (1/1/1970) যেহেতু আমরা সময় তুলনা করছি শুধুমাত্র বর্তমান সময়ে (তারিখ অংশও রূপান্তরিত হয়)।

দুর্ভাগ্যক্রমে, এটি কেবল স্ট্রেইট ফরোয়ার্ড ক্ষেত্রে কাজ করবে। ধরুন যখন বৈদ্যুতিক শক্তি কমে যায় বা অপরিকল্পিত কারণে সিস্টেম পুনরায় চালু হয়। যদি এই ঘটনাটি 12AM এর আগে ঘটে তবে আমরা এখনও নিরাপদ দিকে আছি, কিন্তু 12AM এর পরে এটি আমাদের সহজ অ্যালগরিদমকে ব্যর্থ করবে।

একটি উদাহরণ দিতে, আসুন সন্ধ্যা সাড়ে at টায় মাগরিব আযান এবং ভোর: টা ১০ মিনিটে ফজর। যখন সিস্টেম বুট হবে তখন এটি পূর্বে উল্লেখিত ডেটা আনার জন্য একটি নতুন অনুরোধ পাঠাবে। যদি এখন সময় 1:45 AM হয় তবে আমরা আশা করি আমাদের অ্যালগরিদম সত্য হবে, কিন্তু আসলে তা হবে না কারণ 1:45 AM ফজরের (4:10 AM) থেকে কম কিন্তু মাগরিব (7:30 PM) এর চেয়ে বড় নয়। এর কারণ হল আমরা সমস্ত ভেরিয়েবলের মধ্যে তারিখটি একত্রিত করি। নীচে অ্যালগরিদমের চূড়ান্ত সংস্করণ (এখন পর্যন্ত):

প্রতি 30 সেকেন্ড:

যদি ((magrib.getHours ()> = 12 && fajr.getHours () <= 12) || ফজর <মাগরিব) {fajr.setDate (fajr.getDate ()+1); // হ্যান্ডেল বিস্তৃত দিন শেষ সময় যদি (now.getHours () <= 12) {now.setDate (now.getDate ()+1); // হ্যান্ডেল স্প্যানিং ডে কারেন্টটাইম}} // নিচে পূর্বের কোড ব্লক দেওয়া আছে যদি: মাহগ্রিব <এখন <ফজর সত্য | লাইট জ্বালান | নির্দিষ্ট MQTT বিষয়ের উপর একটি অন মেসেজ প্রকাশ করুন: মিথ্যা | বন্ধ কর

প্রক্রিয়ার সম্পূর্ণ প্রবাহ উপরের ছবিতে টীকা দেওয়া হয়েছে।

UI এর পরিপ্রেক্ষিতে, আমি UI/ইন্টারফেসে 2 টি সুইচ যুক্ত করেছি:

  1. এই প্রক্রিয়াটি স্বয়ংক্রিয় বা ম্যানুয়াল চালু করার জন্য একটি সুইচ।
  2. ম্যানুয়ালি লাইট চালু/বন্ধ করার জন্য একটি সুইচ।

ধাপ 6: মোড়ানো

সময় উড়ে যায় কখনই প্রত্যাহার করা যায় না। এই ধরনের 1 দিনের সহজ প্রকল্পগুলি আপনাকে এই দ্রুত গলিতে একটি শ্বাস নিতে এবং সময়ের সাথে সাথে আপনার নরম দক্ষতা পুনরুজ্জীবিত করতে সহায়তা করে।

আমি বিশ্বব্যাপী এটিকে সহজ এবং পুনরায় ব্যবহারযোগ্য করার জন্য এই প্রকল্পে যতটা চেষ্টা করেছি।

যদি আপনি মনে করেন যে এই প্রকল্পটি প্রাপ্য।

শুভ রমযান!

প্রস্তাবিত: