वेब ब्राउज़र में IoT उपकरणों का पता लगाना?


11

हाल ही में मैंने Xiaomi से एक दो wifi रिले खरीदे हैं। हालांकि वे अब तक ठोस हैं, मैं वास्तव में Xiaomi के ऐप को नापसंद करता हूं। लेकिन, मुझे यह विचार पसंद आया कि यह वास्तव में लैन और इंटरनेट दोनों पर काम करता है। जब लैन में वे बहुत जल्दी चालू और बंद होते हैं, तो Xiaomi के सर्वर चीन में हैं।

इसलिए मैं अपने ESP8266 आधारित रिले को रोल करना चाहता हूं (मुझे पता है कि मैं हार्डवेयर तैयार कर सकता हूं, ताकि यह एक बोनस हो)। मेरा मुद्दा यह है कि मैं वेब पेज से अपने नेटवर्क पर रिले का स्वचालित रूप से कैसे पता लगा सकता हूं?

एक "ऐप" से मैं चीजों का पता लगाने के लिए SSDP, mDNS-SD या UPNP का उपयोग कर सकता हूं। लेकिन मुझे वेबर पर जानकारी नहीं मिली है यह वेब ब्राउज़र (मूल रूप से एंड्रॉइड पर क्रोम) से संभव है। चूँकि मैंने अपने मौसम स्टेशन वेब पेज को एक प्रोग्रेसिव वेब ऐप के रूप में बदल दिया है, इसलिए मुझे हूक लगी है। मैं वास्तव में चीजों के विचार को पसंद करता हूं, बस वेबपेज और आपके द्वारा इंस्टॉल किए जाने वाले ऐप्स नहीं। और PWA ऑफ़लाइन मोड के साथ अंतर भी भरते हैं।

हालांकि यह अजीब है, कि "मुश्किल" भाग (लैन के बाहर से रिले को चालू और बंद करना) एक एमक्यूटीटी सर्वर के माध्यम से हल करने के लिए तुच्छ है। लेकिन मैं बाहरी MQTT सर्वर पर भरोसा नहीं करना पसंद करूंगा। यदि मैं लैन पर हूं, तो मैं सीधे रिले से बात करना चाहता हूं। यदि नहीं, तो MQTT के माध्यम से कमांड भेजें।

मैं निश्चित रूप से रिले को क्वेरी करने के लिए सर्वर पर भरोसा कर सकता हूं, लेकिन उस स्थिति में मुझे इंटरनेट कनेक्शन की आवश्यकता होगी (यदि मेरा एमक्यूटीटी सर्वर "क्लाउड" पर है), या होम होस्टेड सर्वर। मेरे पास घर पर एक सर्वर है, और यहां तक ​​कि अगर मैं नहीं था, तो एक रास्पबेरी पाई आसानी से अंतर को भर सकती है। लेकिन लैन (इस मामले में वाईफ़ाई) पर उपकरणों से बात करते समय आदर्श को सर्वर की आवश्यकता भी नहीं होगी। मैं इसे यथासंभव यथासंभव पी 2 पी रखना पसंद करता हूं, और जब मैं वान (एमक्यूटीटी सीजी-एनएटी और पोर्ट फॉरवर्डिंग की समस्याओं को हल करता हूं) के लिए एमक्यूटीटी का उपयोग केवल एक गिरावट के रूप में करता हूं।


1
साइट में आपका स्वागत है, hjf! वर्तमान में, आपका प्रश्न काफी व्यापक है। यदि आप थोड़ा अधिक विशिष्ट हो सकते हैं तो यह मदद करेगा: उदाहरण के लिए, वर्तमान में आप किन भाषाओं का उपयोग कर रहे हैं और आप किन त्रुटियों / विशिष्ट मुद्दों में भाग रहे हैं?
anonymous2

1
@ अनाम 2 अच्छी तरह से यह एक बहुत ही सामान्य प्रश्न है। मैं विशेष रूप से पूछना नहीं चाहता "क्या मैं ब्राउज़र से सीधे mDNS प्रश्न बना सकता हूं?" क्योंकि उत्तर नहीं है। इसके बारे में एक मानक है लेकिन कोई कार्यान्वयन नहीं है। मैं विकल्प या समान कार्यक्षमता की तलाश कर रहा हूं।
hjf

ज्ञात MDNS होस्टनाम OSX या ऑपरेटिंग सिस्टम जैसे ऑपरेटिंग सिस्टम पर चलने वाले ब्राउज़र से ठीक काम करते हैं जो उनका समर्थन करते हैं, हालांकि ब्राउज़िंग शायद काम नहीं करता है। और निश्चित रूप से वे विंडोज या एंड्रॉइड जैसे ऑपरेटिंग सिस्टम पर काम नहीं करते हैं जो कि उनका समर्थन नहीं करते हैं, जब तक कि अतिरिक्त क्षमता स्थापित न हो।
क्रिस स्ट्रैटन

जवाबों:


6

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

मैं 2 चीजों के बारे में सोच सकता हूं जो करीब आती हैं:

  1. क्रोमकास्ट खोजनीयता क्रोम में बेक हो गई। इसमें रोल करने से पहले इसका एक अलग प्लगइन हुआ करता था। लेकिन इसके लिए अभी भी एक मैनुअल स्टेप की आवश्यकता होती है, जहाँ उपयोगकर्ता किसी खोज को चलाता है और फिर मैनुअल विवरण को पृष्ठ / जावास्क्रिप्ट पर वापस पारित करने के लिए डिवाइस विवरण का चयन करता है। (यह कवर iirc के तहत SSDP का उपयोग करता है)

  2. WebBluaxy स्कैन समर्थन। यह क्रोमकास्ट खोज के लिए एक समान मॉडल का अनुसरण करता है, उपयोगकर्ता को स्कैन शुरू करना होता है, फिर उन्हें मैन्युअल रूप से ब्राउज़र द्वारा पाए गए उपकरणों से चुनना होता है जो विवरण पृष्ठ में जावास्क्रिप्ट में वापस आ जाते हैं।

मैंने एक स्थानीय प्रकाश स्विच की खोज के लिए वेबब्लूटूथ दृष्टिकोण का उपयोग किया है (मेरे पास एक बिली ऐप है जो बिली वीमो बल्ब https://github.com/hardillb/physical-web-lightswitch को नियंत्रित करने वाले पीआई शून्य पर है )। यह काम करता है, लेकिन यह सहज नहीं है क्योंकि इसे एकल डिवाइस की खोज के लिए कम से कम 2 उपयोगकर्ता इंटरैक्शन की आवश्यकता होती है।

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


अच्छा उत्तर। ऐसा नहीं था मैं देख रहा था, लेकिन यह वही है जिसकी मुझे उम्मीद थी। W3C से NSD API है लेकिन केवल कार्यान्वयन Google Chrome ऐप्स के लिए है। I
hjf

ऐसा लग रहा है कि NSD API को doc से मार दिया गया है: w3.org/TR/discovery-api
hardillb

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

2

यदि आपके पास एक उपकरण पर एक वेब इंटरफ़ेस है, और इसे MDNS होस्टनर के माध्यम से MDNS होस्टनाम जैसे कि bonjour या avahi से कॉन्फ़िगर करने के लिए कॉन्फ़िगर करें, तो फीचरफुल ऑपरेटिंग सिस्टम से आप बस अपने ब्राउज़र को इंगित कर सकते हैं

https: //livingroomlight.local

या जो भी आपने इसे कॉल करने के लिए कॉन्फ़िगर किया है।

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

हालाँकि, यह विंडोज से तब तक काम नहीं करेगा जब तक कि आप ऐड-ऑन एमडीएनएस समर्थन स्थापित नहीं करते हैं, और यह स्टॉक एंड्रॉइड ब्राउज़र के साथ काम नहीं करेगा, हालांकि एंड्रॉइड के लिए कस्टम ब्राउज़र ऐप बनाना संभव है जो इसका समर्थन करते हैं।

नेटवर्क पर अज्ञात उदाहरणों की खोज आमतौर पर एक ब्राउज़र द्वारा समर्थित नहीं है, लेकिन आमतौर पर ऑपरेटिंग सिस्टम एपीआई और कमांड लाइन टूल जैसे dns-sd(ओएसएक्स) और avahi-browse(लिनक्स) के माध्यम से समर्थित है ।

इसलिए जब यह स्पष्ट नहीं होता है कि कोई ब्राउज़र आपके डिवाइसों को खोज सकता है, यदि आप बस यह याद रख सकते हैं कि आपने उनमें से एक को क्या कहा है जिसे आप इससे कनेक्ट कर सकते हैं, और यह संभवतः आपके सभी साथियों के लिंक को दिखा सकता है, एक एमडीएनएस करके खुद को खोजो।

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


1
कितनी शर्म की बात है। यह एक विकल्प हो सकता है अगर समर्थित हो। मुझे आश्चर्य है कि ब्राउज़रों में mdns-sd का समर्थन नहीं करने का औचित्य क्या है? वैसे भी, मुझे लगता है कि चीजों के लिए मज़बूती से काम करने का एकमात्र तरीका केवल एक खोज विधि के रूप में एमक्यूटीटी का उपयोग करना होगा। किसी प्रकार की "घोषणा" अंतिम बिंदु पर हों जहां डिवाइस स्वयं रिपोर्ट करें, और उन उत्तरों को कैश करें।
hjf

यह ब्राउज़र ऐसा करने वाला कोई भी नहीं है - यह ऑपरेटिंग सिस्टम का DNS का विस्तृत कार्यान्वयन है, जिसका अर्थ है कि ब्राउज़र (या कुछ और) liveroomlight.local MQTT जैसे नाम का उपयोग कर सकता है, जो वास्तव में आपकी मदद नहीं करेगा - कुछ होने वाला है परिणाम एकत्र करने और उन्हें पेश करने के लिए, भले ही यह एक हार्डवेयर बॉक्स, पीसी पर एक डेमन या मानव हो।
क्रिस स्ट्रैटन

1
लेकिन एंड्रॉइड "ऐप्स" में mDNS का समर्थन करता है। ऐप्स के माध्यम से mDNS प्रश्न भेजना, और प्रतिक्रियाएं प्राप्त करना संभव है। कैसे कोई भी mDNS- एसडी को लागू नहीं कर रहा है और इसे जेएस को उजागर कर रहा है? एक मानक था जो केवल खींचा गया था और केवल आंशिक रूप से लागू किया गया था, विशेष रूप से क्रोमकास्ट का पता लगाने के लिए।
hjf

1
फिर से, क्योंकि कोई भी वेब ब्राउज़र में एमडीएनएस के साथ सौदा नहीं करता है; यह ज्ञात होस्टनामों के लिए काम करता है जहां अंतर्निहित ऑपरेटिंग सिस्टम के DNS को इसका समर्थन करने के लिए बढ़ाया जाता है। एंड्रॉइड ऐसा नहीं है, हालांकि यह एक अलग, एंड्रॉइड-यूनिक एपीआई के माध्यम से एप्लिकेशन को एमडीएनएस क्षमताओं की पेशकश करता है, जिसका डोमेन नामों को हल करने के साथ कुछ भी नहीं है।
क्रिस स्ट्रैटन

1
यही मेरा सवाल है। इसके लिए कोई जोर क्यों नहीं लगा रहा है? IoT के अधिक से अधिक सामान्य होने के साथ, यह कैसे संभव है कि इस तरह के एपीआई विक्रेता विशिष्ट लॉक-इन हैं और W3C ने मानक खींच लिया है?
hjf
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.