विषयसूची:

रमजान लाइट्स - होम ऑटोमेशन IOT: 6 चरण
रमजान लाइट्स - होम ऑटोमेशन IOT: 6 चरण

वीडियो: रमजान लाइट्स - होम ऑटोमेशन IOT: 6 चरण

वीडियो: रमजान लाइट्स - होम ऑटोमेशन IOT: 6 चरण
वीडियो: Home Assistant. Урок 9.4 ADD-ON - Xiaomi Gateway 3, интеграция в zigbee2mqtt 2024, जुलाई
Anonim
रमजान लाइट्स | होम ऑटोमेशन IOT
रमजान लाइट्स | होम ऑटोमेशन IOT

जैसे ही रमजान दरवाजे पर दस्तक देता है, दुनिया भर के शहर रोशनी करते हैं और उपवास के महीने की तैयारी करते हैं। सार्वजनिक चौराहों और शहर की सड़कों के साथ-साथ घरों की बाहरी दीवारों पर रात में जब तक सूरज नहीं निकलता, तब तक रोशनी की जाती है।

इस परियोजना में, मैं अपना योगदान साझा करना चाहूंगा, जिसमें मैं अदन के समय के आधार पर इन सजावटों की रोशनी को स्वचालित कर रहा हूं और इसे अपने स्मार्ट होम सिस्टम में जोड़ रहा हूं।

चरण 1: सिद्धांत

मूल रूप से, उदाहरण के लिए, सूर्य के प्रकाश की तीव्रता के आधार पर प्रकाश को स्वचालित करना आसान और अधिक लागू होता है। हालाँकि, मैं चाहूंगा कि इसमें पवित्र महीने की भावना हो, यानी जब तक लोगों को उपवास के महीने में खाने की अनुमति है, तब तक रोशनी चालू रहेगी। विशेष रूप से, मग़रिब अज़ान से शुरू होकर फ़ज्र अज़ान तक प्रत्येक दिन बिना किसी मानवीय संपर्क के रोशनी होती है।

चरण 2: डिजाइन

नीचे मैं इस परियोजना की आवश्यकताओं/क्षमताओं की सूची दूंगा:

  • सिस्टम को बूट अप पर स्वचालित रूप से संसाधित करने में सक्षम होना चाहिए।
  • सिस्टम को समय-समय पर निर्णय (चालू/बंद) एल्गोरिथम निष्पादित करने में सक्षम होना चाहिए।
  • सिस्टम को दैनिक आधार पर एपीआई को कॉल करने में सक्षम होना चाहिए।
  • सिस्टम को अनियोजित पुनरारंभ से पुनर्प्राप्त करने में सक्षम होना चाहिए।
  • डेटा तुरंत प्राप्त होने पर सिस्टम को निर्णय (चालू/बंद) एल्गोरिदम निष्पादित करना चाहिए।
  • सिस्टम को ऑटोपायलट मोड (स्वचालित मोड) को चालू करने के लिए एक स्विच प्रदान करना चाहिए।
  • सिस्टम को मैन्युअल रूप से रोशनी को चालू/बंद करने के लिए एक स्विच प्रदान करना चाहिए।
  • मैन्युअल स्विच को ट्रिगर करने से मैन्युअल मोड को बंद पर सेट करना चाहिए।
  • जब स्वचालित मोड चालू होता है, तो निर्णय एल्गोरिथम का परिणाम मैन्युअल स्विच चालू/बंद पर प्रतिबिंबित होना चाहिए।

चरण 3: तकनीकी विवरण: एपीआई

तकनीकी विवरण: एपीआई
तकनीकी विवरण: एपीआई

सिद्धांत को लागू करने के लिए, यह आवश्यक है कि दैनिक आधार पर अज़ान के समय को उसके चर के रूप में जाना जाए और उस पर रोशनी / सजावट को चालू / बंद करने के लिए कार्य किया जाए।

इस उद्देश्य के लिए, मैंने डेटा की सेवा के लिए स्थान-आधारित एपीआई का उपयोग करने का निर्णय लिया (आधान के लिए समय)

muslimsalat.com/api/#location

  • यह एपीआई ऊपर दिए गए दस्तावेज़ीकरण लिंक में वर्णित विभिन्न प्रकार के विकल्प और कॉन्फ़िगरेशन पैरामीटर प्रदान करता है।
  • अपने स्वयं के API_key का उपयोग करने की अनुशंसा की जाती है जो पंजीकरण पर निःशुल्क है।
  • मेरे डिजाइन में, मुझे दैनिक समयरेखा में दिलचस्पी है।
  • लौटाया गया समय 12 घंटे के प्रारूप (AM/PM) में है।
  • स्थान के संदर्भ में, मैं चाहता हूं कि यह एपीआई भौगोलिक निर्देशांक प्रणाली (अक्षांश और देशांतर) निर्देशांक जैसे स्थानों के लिए अधिक सटीक विकल्प प्रदान कर सके। इस तरह, उदाहरण के लिए इस एपीआई को शहर का नाम दिया जा सकता है और यह ज्यादातर मामलों में काफी है। दुर्भाग्य से, मेरे विशिष्ट शहर के परिणाम कई परीक्षणों में काफी पक्षपाती थे और एपीआई परिणामों और मेरे शहर में अदन के वास्तविक समय के बीच अदन समय की तुलना करते समय कुछ मिनटों का अंतर था। दूसरी ओर, परिणाम पूरी तरह से मेल खाते थे जब मैंने उत्तर में एक करीबी शहर प्रदान किया और मैं उस पर कायम रहा!
  • मैं जिस एपीआई यूआरएल का उपयोग कर रहा हूं वह है:https://muslimsalat.com/.json?key=

चरण 4: तकनीकी विवरण: हार्डवेयर

तकनीकी विवरण: हार्डवेयर
तकनीकी विवरण: हार्डवेयर

सादगी के लिए, मैं इन कार्यों को मेरे होम ऑटोमेशन सिस्टम को सौंपकर एपीआई और समय की गणना के साथ सिंक करने की प्रक्रिया से हार्डवेयर को छोड़ रहा हूं। अगर मैं एपीआई स्रोत और गणना के एल्गोरिदम को बदलना चाहता हूं तो यह मुझे और अधिक नियंत्रण देगा।

ऐसा कहने के बाद, मैंने वाईफ़ाई के माध्यम से स्थानीय नेटवर्क से कनेक्ट करने के लिए एक ईएसपी 8266 (एनओडीएमसीयू) और एक एक्ट्यूएटर के रूप में एक रिले मॉड्यूल का उपयोग किया। NodeMCU MQTT प्रोटोकॉल का उपयोग करेगा और रिले को चालू/बंद करने के लिए कमांड प्राप्त करने के लिए एक विशिष्ट विषय को सुनेगा। कि जैसे ही आसान!

चरण 5: तकनीकी विवरण: बिंदुओं को जोड़ना | घर स्वचालन

तकनीकी विवरण: बिंदुओं को जोड़ना | घर स्वचालन
तकनीकी विवरण: बिंदुओं को जोड़ना | घर स्वचालन
तकनीकी विवरण: बिंदुओं को जोड़ना | घर स्वचालन
तकनीकी विवरण: बिंदुओं को जोड़ना | घर स्वचालन
तकनीकी विवरण: बिंदुओं को जोड़ना | घर स्वचालन
तकनीकी विवरण: बिंदुओं को जोड़ना | घर स्वचालन

माई रास्पबेरीपी में एक नोडर्ड इंस्टेंस है जो मुझे इस परियोजना के लिए आवश्यक सभी चीजों को संभालने में सक्षम है। हमारे संदेशों को प्रकाशित करने के लिए इसमें एक MQTT सर्वर भी स्थापित है।

सबसे पहले, मैंने सोचा था कि मैं सुबह 9 बजे एपीआई डेटा प्राप्त कर सकता हूं और फज्र और महग्रिब अदन दोनों समय निकाल सकता हूं और इन चरों के साथ वर्तमान समय की तुलना कर सकता हूं:

प्रत्येक 30 सेकंड:

अगर: महग्रिब <अब <फज्र सच | रोशनी चालू करो | निर्दिष्ट MQTT विषय पर एक ON संदेश प्रकाशित करें अन्यथा: बंद करें

समय की तुलना करने के लिए, मैं एपीआई द्वारा प्रदान किए गए घंटों को hh:mm(AM/PM) से पूर्ण तिथि प्रारूप में परिवर्तित कर रहा हूं, इतिहास में एक नगण्य तिथि के लिए दिनांक भाग सेट करके जैसे (1/1/1970) क्योंकि हम समय की तुलना कर रहे हैं केवल वर्तमान समय के लिए (दिनांक भाग भी परिवर्तित किया जाता है)।

दुर्भाग्य से, यह केवल सीधे आगे के मामलों में काम करेगा। मान लीजिए कि जब विद्युत शक्ति कम हो जाती है या सिस्टम एक अनियोजित कारण से पुनरारंभ होता है। यदि यह मामला 12AM से पहले होता है तो हम अभी भी सुरक्षित पक्ष में हैं, लेकिन 12AM के बाद यह हमारे सरल एल्गोरिथम को विफल कर देगा।

एक उदाहरण देने के लिए, आइए शाम 7:30 बजे मगरिब अज़ान और 4:10 बजे फज्र करें। जब सिस्टम बूट हो जाता है तो यह पहले बताए गए डेटा को लाने के लिए एक नया अनुरोध भेजेगा। यदि अब समय 1:45 AM है, तो हम उम्मीद करते हैं कि हमारा एल्गोरिथ्म सच हो जाएगा, लेकिन वास्तव में ऐसा नहीं होगा क्योंकि 1:45 AM फज्र (4:10 AM) से कम है, लेकिन मगरिब (7:30 PM) से अधिक नहीं है। ऐसा इसलिए है क्योंकि हम सभी चर के बीच की तारीख को एकजुट करते हैं। नीचे एल्गोरिथम का अंतिम संस्करण है (अब तक):

प्रत्येक 30 सेकंड:

अगर ((magrib.getHours() >=12 && fajr.getHours() <=12) || फज्र <मग़रिब) {fajr.setDate(fajr.getDate()+1); // फैले हुए दिनों को संभालें एंडटाइम अगर (अब। getHours () <=12) { now.setDate (now.getDate () +1); // फैले हुए दिनों को संभालें currentTime } } // नीचे पिछला कोड ब्लॉक है अगर: महग्रिब <अब < फज्र सच | रोशनी चालू करो | निर्दिष्ट MQTT विषय पर एक ON संदेश प्रकाशित करें अन्यथा: असत्य | बंद करें

प्रक्रिया का पूरा प्रवाह उपरोक्त छवि में एनोटेट किया गया है।

UI के संदर्भ में, मैंने UI/इंटरफ़ेस में 2 स्विच जोड़े:

  1. इस प्रक्रिया को स्वचालित या मैनुअल चालू करने के लिए एक स्विच।
  2. मैन्युअल रूप से रोशनी चालू / बंद करने के लिए एक स्विच।

चरण 6: रैपिंग अप

समय उड़ जाता है जिसे कभी याद नहीं किया जाता। इस तरह के सरल 1-दिवसीय प्रोजेक्ट करने से आप इस तेज़ लेन में सांस ले सकते हैं और समय के साथ अपने सॉफ्ट स्किल्स को पुनर्जीवित करने में मदद कर सकते हैं।

मैंने इस परियोजना में इसे दुनिया भर में सरल और पुन: प्रयोज्य रखने के लिए बहुत कुछ करने की कोशिश की।

कृपया इस निर्देश के लिए वोट करें यदि आपको लगता है कि यह परियोजना योग्य है।

रमजान मुबारक!

सिफारिश की: