ESP8266 जाल नेटवर्क रूट नोड


11

मैं ESP8266 के आधार पर एक जाल नेटवर्क पर काम कर रहा हूं और यह सब कूपरिस द्वारा EasyMesh से नमूना कोड का उपयोग करके ठीक काम कर रहा है । उसके उदाहरण में, मेष में 3 ESP8266 का नामांकन और एक साधारण वेब इंटरफ़ेस है। यह मेरे लिए भी पूरी तरह से काम कर रहा है।

हालांकि मेरे समाधान में, मुझे इन नोड्स में से एक को इंटरनेट से कनेक्ट करने की आवश्यकता है ताकि पूरा मेष इसे एक्सेस कर सके (या कम से कम मेष एक्सेस किया जा सके)। यह भी में बताया गया है ESP8266 मेष उपयोगकर्ता Guid से प्रलेखन (पेज 4) Espressif । मुझे कुछ अन्य दस्तावेज़ भी मिले हैं जो वे इस बारे में बात करते हुए प्रकाशित करते हैं क्योंकि यह सामान्य है लेकिन बिना किसी उदाहरण कोड के जिसे मैं आसानी से समझ सकता हूं।

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

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


1
3 नोड्स उदाहरण के बारे में, क्या आपके पास इस वीडियो में फोन पर एक वेब इंटरफेस के साथ-साथ चल रहा है ?
बेंस कौलिक्स

1
@BenceKaulics मैंने विशेष रूप से इसका परीक्षण नहीं किया है क्योंकि मैंने पहले भी ऐसा किया है और यह मेरे लिए कोई समस्या नहीं है। तुमने क्यों पूछा? मैं सोच रहा था कि यह एक गिरावट का विकल्प हो सकता है, जहां "सर्वर" मेष पर होस्ट किए गए कॉल के माध्यम से केवल जाल नेटवर्क तक पहुंच सकता है, लेकिन मैं रूट नोड विकल्प द्वारा साज़िश कर रहा हूं, जो सही वास्तुकला (आईएमएचओ) की तरह लगता है।
गाइनर

1
समझा। मैं यही सोच रहा था कि यह आपके नेटवर्क तक पहुँचने का एक वैकल्पिक विकल्प हो सकता है। एक समाधान के रूप में सुझाव नहीं दे रहा है, इस प्रकार सिर्फ एक टिप्पणी है कि यह क्या था। मुझे नहीं पता था कि आप पहले से ही इसके बारे में सोच चुके हैं। ;)
बेंस कौलिक्स

जवाबों:


6

आसान जाल के लिए एक और विकल्प ब्लैकएडर द्वारा दर्दरहित उपयोग करना है और बाहरी दुनिया में डेटा को लाने के लिए एक पुल का परिचय देना है।

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

मैंने उन्हें देखा और बाहरी नेटवर्क के वास्तविक कनेक्शन को संभालने के लिए सबसे अधिक काम करने वाले समाधानों के लिए दोनों अतिरिक्त उपकरणों की आवश्यकता थी।

पहले वाला आपके प्रोजेक्ट के लिए चौथा एस्प 8266 पेश करेगा। यह इंटरनेट से जुड़ा होगा और सीरियल कनेक्शन के माध्यम से आपके नोड्स में से एक को संचार करेगा।

एक और रास्पबेरी पीआई डिवाइस का उपयोग डेटा एकत्र करने और दूसरे वाईफाई कार्ड के साथ अन्य नेटवर्क से जुड़ने के लिए किया जाएगा।

अन्य दो अच्छे नहीं थे, एक लेखक द्वारा हतोत्साहित किया गया था और अन्य इतने जटिल और esp8266 के साथ सीमित थे कि मेरे पास कोशिश नहीं होगी।

Gitlab में पूरी गाइड ।


5

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

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

अब, वर्तमान में जब एक नोड संचालित होता है तो यह उपलब्ध APs (एक्सेस पॉइंट्स) को स्कैन करेगा, लोगों को फ़िल्टर करेगा जो कि मेष उपसर्ग से शुरू नहीं होते हैं और फिर सर्वश्रेष्ठ RSSI के साथ AP से कनेक्ट होते हैं। इसके अलावा हर नोड एक नाम जाल उपसर्ग + नोड अद्वितीय चिप आईडी के साथ अपना एपी बनाता है ।

यदि कोई अन्य नोड उपलब्ध नहीं है, तो यह बस दूसरों के कनेक्ट होने की प्रतीक्षा करेगा। और यह पहला बिंदु है जहां परिवर्तन लागू किए जाने चाहिए। आप हार्डकोड या किसी भी तरह से एक अद्वितीय एपी को जोड़ सकते हैं , जैसे कि मेष उपसर्ग + "सर्वर" नाम से meshConnectionType

इस ऑब्जेक्ट को दायर सर्वर और नोड के बीच संदेश विनिमय द्वारा निर्धारित नहीं किया जाएगा, लेकिन espconnफ़ील्ड को छोड़कर, निश्चित मान हो सकते हैं । कि अन्य मामलों की तरह एक का अधिग्रहण किया जाना चाहिए। निम्नलिखित संरचना में आपको केवल पहले सदस्य चर की आवश्यकता होगी।

struct meshConnectionType {
    espconn             *esp_conn;
    uint32_t            chipId = 0;
    String              subConnections;
    timeSync            time;
    uint32_t            lastRecieved = 0;
    bool                newConnection = true;

    (...)
};

chipIdजाल नेटवर्क में सर्वर के पते के लिए किया जाएगा। आपको एक मान चुनना चाहिए जो ESP8266 चिप आईडी नहीं हो सकता है।

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

"रूट" नोड तब पता लगाएगा कि इसका सर्वर (राउटर / इंटरनेट) से सीधा संबंध है और जैसा कि यह सर्वर को संदेश है कि उसे इस संदेश को अन्य तरीके से अग्रेषित करना चाहिए (जैसे मेष नहीं) । स्पष्ट रूप से अतिरिक्त जानकारी की आवश्यकता यहाँ सर्वर के आईपी पते और उदाहरण के लिए उपयोग किए गए पोर्ट की तरह है। इन्हें डिफ़ॉल्ट रूप से या कुछ कॉन्फ़िगरेशन विधि द्वारा एक नोड (प्रत्येक नोड पर) संग्रहीत किया जाना चाहिए।

तो अंत में "रूट" नोड सर्वर को एक आईपी संदेश भेजेगा, इसे आपके द्वारा फिर से लागू किया जाना चाहिए।


टी एल; डॉ; निष्कर्ष:

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

यह केवल एक सैद्धांतिक विचार है जिसे मैं ईज़ीमेश के कार्यान्वयन के माध्यम से पढ़कर आता हूं। मुझे कुछ महत्वपूर्ण तथ्य याद आ सकते हैं जो इसे लागू करना कठिन या असंभव बना देंगे। इसके अलावा यह समस्या को हल करने का सबसे कारगर तरीका नहीं हो सकता है। मैं एक जाल नेटवर्क विशेषज्ञ नहीं हूं।

नेटवर्क में रूट नोड होने से पूछता है कि "क्या होगा यदि रूट डिस्कनेक्ट हो जाता है? एक नई रूट कैसे चुना जाएगा?"।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.