विषयसूची:

MQTT और Wifi संचालित मेलबॉक्स फ्लैग: 7 कदम (चित्रों के साथ)
MQTT और Wifi संचालित मेलबॉक्स फ्लैग: 7 कदम (चित्रों के साथ)

वीडियो: MQTT और Wifi संचालित मेलबॉक्स फ्लैग: 7 कदम (चित्रों के साथ)

वीडियो: MQTT और Wifi संचालित मेलबॉक्स फ्लैग: 7 कदम (चित्रों के साथ)
वीडियो: Solar Weather Station [WiFi, MQTT, Smart Home, ESP8266] 2024, जुलाई
Anonim
एमक्यूटीटी और वाईफाई संचालित मेलबॉक्स फ्लैग
एमक्यूटीटी और वाईफाई संचालित मेलबॉक्स फ्लैग

नोट: नए फर्मवेयर के साथ अपडेट किया गया, एक योजनाबद्ध और एक प्रोग्रामर के लिए एक टिप्स।

कुछ सालों में मैंने अपना होम ऑटोमेशन प्रोजेक्ट शुरू किया। यह बहुत सारे सस्ते PT2262 आधारित रिमोट स्विच को स्विच करने के लिए एक Arduino के साथ एक सर्वर नियंत्रित 433 मेगाहर्ट्ज ट्रांसमीटर बिल्ड के निर्माण से शुरू हुआ। बाद में मैंने अपने मौसम स्टेशन के लिए एक Arduino आधारित रिसीवर जोड़ा, अपने EV चार्जर, वगैरह के नियंत्रण संपर्क को जोड़ा। चीजें अधिक से अधिक परस्पर जुड़ी हुई (और जटिल!) इसलिए, कुछ महीने पहले मैंने मैसेजिंग के लिए MQTT, ऑटोमेशन के लिए Node-RED (दोनों एक ही रास्पबेरी पाई B+ पर चल रहे हैं) और MariaDb लॉगिंग के लिए (मेरे Synology NAS पर चल रहा है) के आधार पर सब कुछ मानकीकृत करने का निर्णय लिया। बाद में मैंने MQTT ब्रोकर (मच्छर) और Node-RED को NAS पर भी स्थानांतरित कर दिया।

यह निर्देशयोग्य इस होम इन्फ्रास्ट्रक्चर में मेरे स्ट्रीट माउंटेड मेलबॉक्स को हुक करने वाली एक मूर्खतापूर्ण परियोजना का वर्णन करता है। विचार यह है कि अगर कोई सामने के दरवाजे से लगभग 10 मीटर की दूरी पर बाड़ पर लगे मेलबॉक्स को खोलता है, तो यह मुझे मेरे फोन और संभवतः अन्य उपकरणों पर संकेत देता है।

चरण 1: रूपरेखा, पूर्वापेक्षाएँ और भाग

रेखांकित करें

उच्च स्तर पर, मेलबॉक्स खोले जाने पर, ब्रोकर को एक अद्वितीय MQTT संदेश भेजना चाहिए, ताकि उस विषय के ग्राहकों को सूचित किया जा सके। नोड-रेड सदस्यता भी लेता है और कुछ स्वचालन करता है, इस मामले में मेरे फोन पर एक ईमेल और/या एक पुश संदेश भेजना।

मेलबॉक्स बैटरी पर चलना चाहिए और कम से कम एक वर्ष तक चलना चाहिए, और ऐसा मेरे वाईफाई नेटवर्क का उपयोग करके करना चाहिए। चूंकि माइक्रो-कंट्रोलर को जगाने और वाईफाई नेटवर्क से जुड़ने में कई सेकंड लग सकते हैं, इसलिए मैं बिजली काटने के लिए एक्टिवेशन स्विच का उपयोग नहीं कर सका। इसके बजाय, मेलबॉक्स का ढक्कन पहले ही बंद हो जाने के बाद प्रोसेसर को अपना व्यवसाय समाप्त करने की अनुमति दी जानी चाहिए।

पूर्वापेक्षाएँ

मुझे लगता है कि आपके पास मामूली सोल्डरिंग कौशल है, Arduino IDE के साथ थोड़ा काम किया है, और बोर्ड प्रबंधक का उपयोग करके ESP8266 बोर्ड स्थापित किए हैं। माइक्रो-कंट्रोलर को प्रोग्राम करने के लिए आपके पास 3.3 वोल्ट का USB सीरियल अडैप्टर भी होना चाहिए।

मैं यह भी मानता हूं कि आपके पास एक MQTT ब्रोकर और एक Node-RED सर्वर चल रहा है। यदि नहीं, तो इंटरनेट पर कई निर्देश हैं, लेकिन मैं आलसी मार्ग लेने और पीटर स्कारगिल की उत्कृष्ट इंस्टाल स्क्रिप्ट का उपयोग करने की सलाह दूंगा यदि आप इसे किसी भी पाई या उबंटू पर चलाना चाहते हैं, या पाई ज़ीरो डब्ल्यू के लिए एंड्रियास स्पाइस की छवि का उपयोग करें। उस वीडियो के विवरण में लिंक), जो आपको चल रहे इंस्टॉलेशन स्क्रिप्ट को देखने में कुछ घंटों की बचत करेगा। वैकल्पिक रूप से, आप फर्मवेयर को सीधे एक ईमेल भेज सकते हैं, लेकिन ऐसा करने से आप बहुत अधिक लचीलापन खो देंगे।

पार्ट्स

  • 1 बंद, 3 एए बैटरी बॉक्स
  • 2 एए बैटरी
  • 1 ईएसपी8266 मॉड्यूल। इस परियोजना के लिए मैंने एक ESP-01. का इस्तेमाल किया
  • 1 माइक्रो-स्विच
  • 1 47K रोकनेवाला
  • 1 4M7 रोकनेवाला
  • 1 2.2uF संधारित्र
  • 1 पतली प्लास्टिक ट्यूब। मैंने एक कलम का इस्तेमाल किया
  • 1 मोटी, लंबी माचिस या लॉलीपॉप स्टिक। इसे आसानी से फिट होना चाहिए और प्लास्टिक ट्यूब में चलना चाहिए

चरण 2: हार्डवेयर: बॉक्स, स्विच और वायरिंग

हार्डवेयर: बॉक्स, स्विच और वायरिंग
हार्डवेयर: बॉक्स, स्विच और वायरिंग
हार्डवेयर: बॉक्स, स्विच और वायरिंग
हार्डवेयर: बॉक्स, स्विच और वायरिंग
हार्डवेयर: बॉक्स, स्विच और वायरिंग
हार्डवेयर: बॉक्स, स्विच और वायरिंग

मैंने एक पुराने बैटरी बॉक्स के साथ एक ख़राब क्रिसमस डेकोरेशन से शुरुआत की। इसे तीन AA आकार की बैटरी के लिए डिज़ाइन किया गया था। जैसा कि ESP8266 3 वोल्ट पर अच्छी तरह से चलेगा, मैं दो बैटरी का उपयोग कर सकता था और माइक्रो-कंट्रोलर के लिए तीसरी स्थिति का उपयोग कर सकता था। ध्यान दें कि कैसे बॉक्स में एक छोटा अतिरिक्त कम्पार्टमेंट था जिसे मैं सक्रियण स्विच के लिए उपयोग कर सकता था। मैंने चित्रों में दिखाए गए एक बहुत ही सामान्य प्रकार के स्विच का उपयोग किया, लेकिन उस स्प्रिंग को हटा दिया जो इसे चालू या बंद स्थिति में रखता है। मैंने दो पतले तारों को NC संपर्कों में मिलाया और इसे सुपर गोंद की एक छोटी बूंद के साथ बॉक्स में चिपका दिया।

इसके बाद, मैंने बॉल पेन से ली गई प्लास्टिक ट्यूब से मेल खाते हुए शीर्ष कवर में एक छेद ड्रिल किया। छेद बिल्कुल स्विच के साथ संरेखित होता है और एक मोटी माचिस की तीली से बने प्लंजर को गाइड करता है।

अंत में, मैंने बैटरी संपर्कों में दो और तारों को मिलाया और सभी चार तारों को तीसरी बैटरी की स्थिति में निर्देशित किया, जहां माइक्रो-नियंत्रक होने वाला था।

चरण 3: हार्डवेयर: ESP-01

हार्डवेयर: ESP-01
हार्डवेयर: ESP-01
हार्डवेयर: ESP-01
हार्डवेयर: ESP-01
हार्डवेयर: ESP-01
हार्डवेयर: ESP-01

वाईफाई की आवश्यकता को देखते हुए, पूरा प्रोजेक्ट ESP8266 चिल्लाता है। यह छोटा वाईफाई कंट्रोलर एक मॉड्यूल के रूप में टिंकरिंग समुदाय का पसंदीदा वर्कहॉर्स बन गया है जिसे EUR 2.50 के तहत खरीदा जा सकता है और एक पूर्ण वाईफाई और टीसीपी / आईपी स्टैक को एकीकृत करता है, जिसमें आपके अपने प्रोग्राम चलाने के लिए पर्याप्त क्षमता से अधिक है। Arduino IDE (या PlatformIO प्लगइन के साथ एटम) पूरी तरह से ESP8266 का समर्थन करता है।

मैं आमतौर पर एक ESP-12F लेता था, लेकिन मेरे पास एक छोटा ESP-01 बोर्ड था जो काम के लिए एकदम सही था और बैटरी बॉक्स में अच्छी तरह से फिट बैठता था। एकमात्र समस्या यह है कि ESP-01 में फर्मवेयर फ्लैश करना काफी जटिल है। उसके बारे में अगले चरण में। बनाने के लिए एक संशोधन है: आपको बोर्ड से लाल शक्ति एलईडी को हटाना होगा, क्योंकि यह लगातार 3mA खींचता है। एलईडी हटा दिए जाने के साथ, मॉड्यूल डीपस्लीप मोड में केवल कुछ दसियों यूए का उपयोग करता है जो इसे दो गुणवत्ता वाली एए बैटरी पर एक वर्ष से अधिक समय तक बनाए रखेगा।

यह पता चला कि मैं कुछ अतिरिक्त घटकों पर 4 पिन महिला हेडर और सोल्डर के दो स्ट्रिप्स का उपयोग मुफ्त रूप में कर सकता हूं ताकि मैं फर्मवेयर को अपडेट करने के लिए ईएसपी -01 को हटा सकूं, जबकि यह अभी भी तीसरे बैटरी डिब्बे में फिट होगा।

ईएसपी को सही ढंग से तार करना बहुत महत्वपूर्ण है। उपरोक्त चीट शीट का उपयोग करके, इसे निम्नानुसार वायर करें।

  1. Vcc (D2), CH_PD (B2), RXD (D1), GPIO0 (C1), GPIO2 (B1) और एक 47K रोकनेवाला के लिए बैटरी प्लस।
  2. बैटरी माइनस से GND (A1) और स्विच का एक तार।
  3. स्विच का दूसरा तार एक 100nF संधारित्र और एक 4M7 रोकनेवाला के लिए।
  4. प्रतिरोधों और संधारित्र दोनों के खुले सिरे RST (C2) के लिए।
  5. TXD (A2) असंबद्ध रह सकता है।

संपादित करें: मुझे ESP-01 को बदलना पड़ा क्योंकि मैंने एक मूर्खतापूर्ण गलती की और इसे नष्ट कर दिया। पता चला कि मेरे आश्चर्य के लिए नया ESP-01 मूल 100nF संधारित्र के साथ रीसेट नहीं हुआ। इसका डिज़ाइन शायद थोड़ा अलग है। मैंने इसे 2.2 यूएफ से बदल दिया और अब यह फिर से काम करता है।

जब किया जाता है, तो सब कुछ बॉक्स में रखा जा सकता है, लेकिन रुको, पहले हमें मॉड्यूल को प्रोग्राम करने की आवश्यकता है।

चरण 4: ESP-01 प्रोग्रामिंग

ESP-01 प्रोग्रामिंग
ESP-01 प्रोग्रामिंग
ESP-01 प्रोग्रामिंग
ESP-01 प्रोग्रामिंग
ESP-01 प्रोग्रामिंग
ESP-01 प्रोग्रामिंग

अपने ESP-01 पर फर्मवेयर फ्लैश करने के लिए, आप या तो एक छोटा रिग बना सकते हैं या लगभग 1 यूरो में एक (लगभग) पूर्ण प्रोग्रामर खरीद सकते हैं।

प्रोग्रामिंग हार्डवेयर रिग

ESP-01 के लिए फिर से दो महिला हेडर के साथ एक छोटा रिग बनाएं। इसके अलावा, आपको एक यूएसबी सीरियल मॉड्यूल की आवश्यकता है, जो 3.3 वोल्ट प्रदान करने में सक्षम हो। ध्यान दें कि ESP8266 चिप 5 वोल्ट कठोर नहीं है, इसलिए यहां एक गलती आपके मॉड्यूल को मार सकती है। वैसे भी, फिर से चीट शीट का उपयोग करके, अपने रिग को इस प्रकार तार करें:

  1. 3.3V USBSerial मॉड्यूल से Vcc, CH_PD, RST और GPIO2 में।
  2. USBSerial मॉड्यूल का GND GND और GPIO0।
  3. USBSerial मॉड्यूल का TXD से RXD तक।
  4. TXD के लिए USBSerial मॉड्यूल का RDX।

प्री-बिल्ड प्रोग्रामर

अपना सामान बनाने में जितना मज़ा आता है, उतना ही आसान तरीका है अपनी पसंदीदा नीलामी साइट से ESP-01-से-सीरियल इंटरफ़ेस प्राप्त करना, ऊपर चित्र देखें। यह रिग की तुलना में बहुत आसान, अधिक कॉम्पैक्ट और अधिक विश्वसनीय है। हालांकि, इनमें से कुछ प्रोग्रामर नहीं हैं, केवल सीरियल इंटरफेस हैं। आपको इंटरफ़ेस के पीछे GND (पिन A1) और GPIO0 (पिन C1) के बीच एक वायर ब्रिज मिलाप करने की आवश्यकता है, दूसरी तस्वीर देखें। ध्यान दें कि ESP-01 को USB प्लग के सामने वाले एंटीना के साथ प्लग इन किया जाना चाहिए, न कि इसके विपरीत!

नोट: वे भी एक स्विच के साथ मौजूद हैं, तीसरी तस्वीर देखें, बहुत अच्छा।

फर्मवेयर लोड करें

1.8.3 या बाद के एक Arduino IDE को मानते हुए, टूल्स> बोर्ड का चयन करें और आपके पास मौजूद बोर्ड का चयन करें। एक ईएसपी -01 के लिए जैसे मैंने इस्तेमाल किया, "जेनेरिक ईएसपी 8266 मॉड्यूल" चुनें, और निम्नलिखित विकल्प सेट करें (यह सभी डिफ़ॉल्ट होना चाहिए):

  1. फ्लैश मोड: डीआईओ
  2. फ्लैश फ्रीक्वेंसी: 40 मेगाहर्ट्ज
  3. सीपीयू आवृत्ति: 80 मेगाहर्ट्ज
  4. फ्लैश का आकार: 512KB (64KB SPIFFS) नोट: यदि आप काले ESP-01 बोर्ड का उपयोग करते हैं, तो 1MB (64KB SPIFFS) चुनें
  5. डिबग पोर्ट: अक्षम
  6. डीबग स्तर: कोई नहीं
  7. रीसेट विधि: सीके
  8. अपलोड गति 115200
  9. पोर्ट: उस पोर्ट का चयन करें जो आपके यूएसबी सीरियल इंटरफेस से जुड़ा है। मेरे उबंटू पीसी के लिए जो /dev/ttyUSB0. था

रिग/प्रोग्रामर को हुक करें, स्केच लोड करें जो आप यहां https://gitlab.com/jeroenmeijer/Mailbox.git पा सकते हैं। config.h में अपने वाईफाई और एमक्यूटीटी ब्रोकर क्रेडेंशियल्स और अपने आईपी कॉन्फ़िगरेशन की आपूर्ति करें और अपलोड चुनें।

चरण 5: यह सब इकट्ठा करना

यह सब इकट्ठा करना
यह सब इकट्ठा करना

मैंने अपने मेलबॉक्स के भीतरी ढक्कन में प्लास्टिक ट्यूब के लिए एक छेद ड्रिल किया, जहां तक संभव हो टिका के करीब, फिर उस ढक्कन के नीचे बैटरी बॉक्स को गर्म-चिपकाया। आगे मैंने प्लंजर के रूप में एक मोटी माचिस का इस्तेमाल किया। मैंने मैच को लंबाई में काटने के लिए एक स्निप का उपयोग किया ताकि बाहरी ढक्कन बंद होने पर स्विच खुल जाए। मैंने MQTT संदेशों की निगरानी के लिए mosquitto_sub चलाते समय ढक्कन खोलकर कनेक्टिविटी की जाँच की (mqttbroker, उपयोगकर्ता और पासवर्ड को अपने MQTT कॉन्फ़िगरेशन से बदलें):

$ mosquitto_sub -h mqttbroker -v -t "stat/#" -u उपयोगकर्ता -P पासवर्ड

बाहरी ढक्कन खुलने के लगभग छह सेकंड बाद निम्नलिखित MQTT संदेश प्रकाशित होता है। समय का उपयोग माइक्रो-कंट्रोलर को जगाने और वाईफाई और ब्रोकर कनेक्शन स्थापित करने के लिए किया जाता है।

स्टेट/मेलबॉक्स/ट्रिगर {"vcc":3050, "flap":true, "prev":0, "RSSI":29, "version": "005"}

इस समय के दौरान, माइक्रो-नियंत्रक ने लगभग 70mA का उपयोग किया। जब किया जाता है, तो यह गहरी नींद में चला जाता है और मेरे मामले में यह 20uA से कम का उपयोग करता है। "फ्लैप" हमेशा सत्य होता है, "vcc" एमवी में बैटरी वोल्टेज बताता है और "पिछला" 0 होना चाहिए। यदि यह 1 या 2 है, तो इसका मतलब है कि मेलबॉक्स पहले संदेश भेजने में असमर्थ था, या तो क्योंकि यह कनेक्ट नहीं हो सका वाईफाई, या क्योंकि यह एमक्यूटीटी ब्रोकर से कनेक्ट नहीं हो सका। "RSSI" वाईफाई सिग्नल की ताकत है। दोनों समस्याओं का निदान करने के लिए बहुत उपयोगी हैं।

यह सुनिश्चित करने के लिए कुछ दिनों के लिए बैटरी वोल्टेज की निगरानी करना एक अच्छा विचार है कि डिवाइस इरादे के अनुसार काम करता है और किसी कारण से इसकी बैटरी खत्म नहीं होती है।

फर्मवेयर खुद को ओवर द एयर (OTA) अपडेट करने में सक्षम है, लेकिन यह इस निर्देश के दायरे से थोड़ा परे है। रुचि रखने वालों के लिए, OTA कॉन्फ़िगरेशन भी config.h में है।

चरण 6: MQTT संदेश पर कार्य करने के लिए Node-RED का उपयोग करना

MQTT संदेश पर कार्य करने के लिए Node-RED का उपयोग करना
MQTT संदेश पर कार्य करने के लिए Node-RED का उपयोग करना

अंत में, मैंने नोड-रेड में एक सरल प्रवाह बनाया। पहला नोड मेलबॉक्स (स्टेट/पोस्टबॉक्स/ट्रिगर) के विषय की सदस्यता लेता है। जब कोई संदेश प्राप्त होता है, तो दूसरा नोड ईमेल को प्रारूपित करता है *)। अंतिम नोड एसएमटीपी सर्वर के रूप में जीमेल का उपयोग करके इसे मेरे जीमेल पते पर भेजता है। मेरा फोन तब मुझे नए मेल की सूचना देगा।

मैंने नोड-रेड प्रवाह को एक गिटलैब स्निपेट में जोड़ा है ताकि आप इसे अपने नोड-रेड प्रवाह में आयात कर सकें।

बेशक आप कुछ और नोड्स जोड़ सकते हैं, उदाहरण के लिए मारियाडीबी या एसक्ललाइट में मेलबॉक्स ईवेंट लॉग करने के लिए, या बैटरी वोल्टेज 2.7 वोल्ट से नीचे जाने पर अतिरिक्त अलार्म बनाएं।

हैप्पी मेल-शिकार!

*) अगला पृष्ठ देखें, मैं ईमेल के बजाय अब पुशबुलेट का उपयोग कर रहा हूं।

चरण 7: विचार के बाद

यह भावना हमेशा बनी रहती है कि चीजें बेहतर की जा सकती थीं।

स्विच

मैं कुछ अनाड़ी प्लंजर दृष्टिकोण के बजाय एक (सुपर) चुंबक और एक रीड संपर्क का उपयोग करना पसंद करता। दो कारण थे। एक यह है कि जब बॉक्स खोला गया था, तो संपर्क बंद होने के साथ मैं यह काम नहीं कर सकता था, और इसे हमेशा बंद रखने का मतलब था कि एक छोटा करंट हमेशा बहता रहेगा। रेट्रोस्पेक्ट में, 4M7 रेसिस्टर के माध्यम से बहने वाला 1uA से कम बैटरी जीवन के मामले में कोई बड़ी बात नहीं होती। दूसरा अधिक व्यावहारिक था। मैंने शनिवार को इस परियोजना को बनाया और सॉफ्टवेयर लिखा, इसे रविवार को जो कुछ भी बिछा रहा था, उससे इसे बनाएं। मेरे पास जंक बॉक्स में रीड संपर्क नहीं था।

नोट: जैसा कि diy_bloke ने टिप्पणी की, रीड कॉन्टैक्ट्स में लंबे समय तक चुम्बकित होने पर चिपचिपे होने की प्रवृत्ति होती है, इसलिए शायद प्लंजर इतना बुरा विचार नहीं था। हम देख लेंगे। *)

खाली करने पर संदेश

मेलबॉक्स इसे खाली करते समय भी एक संदेश भेजता है। यह कोई बड़ी बात नहीं है, लेकिन घर में और अधिक लोगों को चेतावनी मिलने के साथ, मेलबॉक्स के पूरे उद्देश्य को धता बताते हुए एक लूप में समाप्त हो सकता है! इसके इर्द-गिर्द कुछ तरीके हैं, जैसे कि जाँच करना कि क्या भीतरी ढक्कन उठा हुआ है, और यदि ऐसा है, तो संदेश न भेजें। या लिड स्विच का उपयोग करने के बजाय, मेलबॉक्स के नीचे एक डिटेक्टर स्थापित करें। या एक छोटा रीसेट बटन जिसे खाली करते समय दबाया जाना है। हालांकि, सभी चीजों को जटिल बना देंगे और शायद विश्वसनीयता को खराब कर देंगे।

संदेश

ईमेल भेजना चेतावनी देने का एक प्रभावी लेकिन कच्चा तरीका है। एक अधिक सुंदर तरीका एक फोन ऐप होगा, लेकिन मुझे एक एंड्रॉइड एमक्यूटीटी डैशबोर्ड ऐप नहीं मिला है जिसे एक निश्चित संदेश प्राप्त होने पर ऑपरेटिंग सिस्टम अलर्ट ट्रिगर करने के लिए कॉन्फ़िगर किया जा सकता है। अगर कोई आसपास है, तो कृपया टिप्पणियों में जोड़ें। **)

*) संचालन में एक वर्ष से अधिक समय के बाद, यह पता चला है कि मैंने लॉलीपॉप स्टिक का उपयोग किया है, मूल रूप से हार्ड रोल्ड पेपर, स्विच स्प्रिंग के निरंतर दबाव के तहत छोटा करने की प्रवृत्ति है। कुछ समस्या निवारण के बाद मैंने इसे लकड़ी की छड़ी से बदल दिया।

**) मैं MQTT डैशबोर्ड से अलग, पुश संदेशों के लिए अब PushBullet का उपयोग कर रहा हूं। एपीआई के लिए एक छोटा नोड-रेड कम इंटरफेस यहां पाया जा सकता है। सुनिश्चित करें कि आप "पुशबुलेट के लिए तैयार करें" नोड में एक्सेस टोकन और नोड "पुन: प्रयास करें" में फ़ॉलबैक उद्देश्यों के लिए अपना ईमेल पता प्रदान करते हैं।

सिफारिश की: