DeviceHive v 0.3 फर्मवेयर में ESP8266 का वायरलेस कॉन्फ़िगरेशन



सबके लिए अच्छी खबर है! ESP8266 के लिए डिवाइसहाइव फर्मवेयर का एक नया संस्करण जारी किया गया है। हमने उपकरणों को जोड़ने के लिए सबसे लोकप्रिय इंटरफेस के लिए समर्थन लागू किया है: GPIO, ADC, PWM, UART, I2C, SPI, 1-वायर। अब आप इन इंटरफेस के साथ उपकरणों को आसानी से हमारी क्लाउड सेवा से जोड़ सकते हैं। और सबसे महत्वपूर्ण बात - फर्मवेयर को वायरलेस रूप से कॉन्फ़िगर करने की क्षमता दिखाई दी है (नीचे स्क्रीनशॉट देखें)। हम आज इस बारे में बात करेंगे।



ट्रिपल रिसेट, या "चलो चलें!"


जब एक वायरलेस कनेक्शन के साथ IoT डिवाइस बनाते हैं, तो आप अक्सर एक अप्रिय समस्या का सामना कर सकते हैं: डिवाइस को अंतिम उपयोगकर्ता तक सेट करना उतना आसान नहीं है जितना कि लगता है। ऐसे उपकरण आमतौर पर स्क्रीन और कीबोर्ड से सुसज्जित नहीं होते हैं, इसलिए प्रारंभिक सेटिंग्स (वाई-फाई नेटवर्क डेटा, उदाहरण के लिए) सेट करना एक उपयुक्त केबल और विशेष सॉफ़्टवेयर के बिना काम नहीं करेगा। हमने नए फर्मवेयर संस्करण में इस समस्या को हल करने की कोशिश की।

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

इस तरह, दोनों समस्याएं एक ही बार में हल हो जाती हैं - आपको केबल या विशेष सॉफ़्टवेयर की आवश्यकता नहीं होगी। ब्राउज़र के अलावा ... लेकिन क्या आपके पास एक ब्राउज़र है? RESET बटन अक्सर डिवाइस के शरीर पर सीधे स्थित होता है, इसे तीन बार दबाने पर यह काफी सरल होना चाहिए।

इसके अलावा, आधुनिक मोबाइल OS में, आपको एक ब्राउज़र भी नहीं खोलना है, क्योंकि उनमें से अधिकांश कैप्टिव पोर्टल प्रमाणीकरण का समर्थन करते हैं। Apple उपकरणों पर, डेटा प्रविष्टि पृष्ठ स्वचालित रूप से खुलता है। Android पर क्लिक करके एक सूचना दिखाई देगी, जिस पर आप खुद को इस पेज पर पाएंगे।

नीचे दिए गए वीडियो में आप देख सकते हैं कि नए फर्मवेयर और एंड्रॉइड डिवाइस के साथ सब कुछ कैसे काम करता है।



यह स्वयं करो


आइए देखें कि इस तरह की एक सेटअप प्रणाली मूल रूप से कैसे काम करती है, क्योंकि इसे वाई-फाई के साथ किसी अन्य वायरलेस डिवाइस के लिए लागू किया जा सकता है।

आरंभ करने के लिए, हम सामान्य वाई-फाई नेटवर्क बढ़ाते हैं। इसमें, हम एक डीएचसीपी सर्वर बनाते हैं जो कनेक्टेड डिवाइसों को आईपी एड्रेस वितरित करेगा। लेकिन एक DNS सर्वर के रूप में, यह "चालाक" DNS के आईपी पते को पास करता है। चाल यह है कि HTTP सर्वर का एक ही आईपी पता जिसके साथ हम डिवाइस को कॉन्फ़िगर कर सकते हैं हमेशा किसी भी DNS क्वेरी "A" रिकॉर्ड पर वापस आ जाएगा। ESP8266 के मामले में, डीएचसीपी, डीएनएस और एचटीटीपी सर्वर सीधे चिप पर काम करते हैं। एक बहुत ही मूल संस्करण में, यह पर्याप्त है - ब्राउज़र में किसी भी पृष्ठ को खोलना, हम सेटिंग्स के साथ एक पृष्ठ देखेंगे। लेकिन, सुंदर होने के लिए, आप डेटा को दर्ज करने की आवश्यकता के बारे में अधिसूचना प्रदर्शित करने के लिए पोर्टल प्रमाणीकरण का समर्थन करने वाले उपकरणों को बाध्य कर सकते हैं।

पोर्टल प्रमाणीकरण आमतौर पर डेटा दर्ज करने और / या होटल, होटल और अन्य वाई-फाई हॉटस्पॉट में उपयोग समझौते को प्रदर्शित करने के लिए उपयोग किया जाता है। हम अपने पेज को प्रदर्शित करने के लिए इस तकनीक का उपयोग करते हैं।

एंड्रॉइड जब एक वाई-फाई नेटवर्क से कनेक्ट होता है, तो वह क्लाइंट3 . google.com/generate_204 पर जाने का प्रयास करेगा
Apple डिवाइस captive.apple.com से जुड़ने की कोशिश कर रहे हैं

वहाँ एक अनुरोध भेजने के बाद, आपको फ़ॉर्म की प्रतिक्रिया प्राप्त होगी:

$ curl http://clients3.google.com/generate_204 -i
HTTP/1.1 204 No Content
Content-Length: 0
Date: Mon, 07 Sep 2015 14:58:21 GMT
Server: GFE/2.0


$ curl http://captive.apple.com -i
HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 68
Date: Mon, 07 Sep 2015 15:00:32 GMT
Connection: keep-alive

<HTML><HEAD><TITLE>Success</TITLE></HEAD><BODY>Success</BODY></HTML>


यही है, HTTP अनुरोध के जवाब में, वे स्थिति 2xx के साथ प्रतिक्रिया देते हैं। इन अनुरोधों के लिए धन्यवाद, डिवाइस यह निर्धारित करते हैं कि वे इंटरनेट से जुड़े हैं या नहीं। पोर्टल प्रमाणीकरण को लागू करने के लिए, इन अनुरोधों के जवाब में कोड 302 स्थानांतरित के साथ एक प्रतिक्रिया भेजना आवश्यक है (या सिर्फ उन सभी अनुरोधों के लिए जो हमारे लिए रुचि के हैं) और हेडर में हमारे पते के साथ स्थान फ़ील्ड को इंगित करें, अर्थात उत्तर इस तरह अनुमानित होना चाहिए:

HTTP/1.1 302 Moved Temporarily
Content-Length: 0
Location: http://example.com


इस उत्तर को प्राप्त करने के बाद, डिवाइस यह समझेंगे कि निर्दिष्ट पते पर सेटिंग्स पृष्ठ प्रदर्शित करना आवश्यक है - Apple डिवाइस इस पृष्ठ को स्वयं स्क्रीन पर खोलेंगे, और एंड्रॉइड एक अधिसूचना प्रदर्शित करेगा। पोर्टल प्रमाणीकरण के लिए समर्थन के बिना ऑपरेटिंग सिस्टम में, यह ब्राउज़र के एड्रेस बार में "http: //" से शुरू होने वाले किसी भी पते में लिखने के लिए पर्याप्त है - ब्राउज़र सेटिंग्स पृष्ठ को खोल देगा। उसी समय, आप उपयोगकर्ता को गुमराह नहीं करेंगे, क्योंकि सेटिंग्स के साथ पृष्ठ का पता पता बार में प्रदर्शित होगा। ESP8266 के लिए फर्मवेयर हम पते का उपयोग devicehive.config

हम आशा करते हैं कि यह सब आपके लिए उपयोगी है। अपने स्वयं के IoT समाधान बनाने के लिए शुभकामनाएँ!

निकोलाई खाबरोव, वरिष्ठ एंबेडेड डेवलपर द्वारा पोस्ट किया गया

Source: https://habr.com/ru/post/hi383881/


All Articles