ESP8266 মেশ নেটওয়ার্ক রুট নোড


11

আমি ESP8266 এর উপর ভিত্তি করে একটি জাল নেটওয়ার্কে কাজ করছি এবং এটি সমস্ত কোপিডিসের ইজিম্যাশ থেকে নমুনা কোড ব্যবহার করে দুর্দান্ত কাজ করছে বলে মনে হচ্ছে । তার উদাহরণে, 3 ইএসপি 8266 জালটিতে নথিভুক্ত এবং একটি সাধারণ ওয়েব ইন্টারফেস পরিবেশন করে। এটি আমার জন্যও নিখুঁতভাবে কাজ করছে।

তবে আমার সমাধানে, ইন্টারনেটে সংযুক্ত হওয়ার জন্য আমার এই নোডগুলির একটি দরকার যাতে পুরো মেশ এটির অ্যাক্সেস করতে পারে (বা কমপক্ষে জাল অ্যাক্সেস করতে পারে)। এটাও উল্লেখ করা হয় ESP8266 মেষ ব্যবহারকারী GUID থেকে নথিপত্র (পৃষ্ঠা 4) Espressif । আমি এগুলিতে বেশ কয়েকটি অন্যান্য নথিও পেয়েছি যা তারা এ সম্পর্কে সমস্ত কথা প্রকাশ করেছেন কারণ এটি কেবল সাধারণ তবে কোনও উদাহরণ কোড নেই যা আমি সহজেই বুঝতে পারি।

রাউটারের সাথে সংযোগ রাখতে আমি কীভাবে জালটি কনফিগার করব। জাল নেটওয়ার্কের জন্য একই এসএসআইডি এবং পাস কীটি ব্যবহার করার মতো আমি যেমন আমার Wi-Fi রাউটারে ব্যবহার করছি ততই সহজ বা Wi-Fi জালটির রাস্পবেরি পাই অংশের মতো কিছু তৈরি করার দরকার যা পরে সংযুক্ত হতে পারে? ইথারনেট সংযোগ দিয়ে আমার রাউটারে? আমি মনে করি না যে আমি যে গবেষণাটি করেছি তা থেকে পরবর্তীকালের প্রয়োজন হওয়া উচিত।

এর জন্য আমার হ্যালো ওয়ার্ল্ড স্যাম্পল কোড দরকার। আমি মনে করি এটি কমান্ডগুলি আমাকে সাহায্য করবে না।


1
৩ টি নোডের উদাহরণ সম্পর্কে, আপনি কি এই ভিডিওতে ফোনের মতো একটি ওয়েব ইন্টারফেসও চালিয়ে যাচ্ছেন এবং চালাচ্ছেন ?
বেনস কৌলিক্স

1
@ বেনসকোলিকস আমি এটি পরীক্ষা করে দেখিনি যেহেতু আমি আগে এটি করেছি এবং এটি আমার পক্ষে সমস্যা নয়। কেন জিজ্ঞাসা করছ? আমি ভাবছিলাম যে এটি একটি ফ্যালব্যাক বিকল্প হতে পারে যেখানে কোনও "সার্ভার" জালটিতে হোস্ট করা REST কলগুলির মাধ্যমে মেশ নেটওয়ার্কটি অ্যাক্সেস করতে পারে তবে আমি মূল নোড বিকল্পটি দ্বারা আগ্রহী, যা সঠিক আর্কিটেকচার (আইএমএইচও) এর মতো শোনাচ্ছে।
জিনার

1
আমি দেখি. আমি একই ভাবছিলাম যে এটি আপনার নেটওয়ার্ক অ্যাক্সেসের বিকল্প বিকল্প হতে পারে। যদিও সমাধান হিসাবে পরামর্শ দিচ্ছেন না, এটি কী ছিল তা কেবল একটি মন্তব্য। আমি জানতাম না যে আপনি ইতিমধ্যে এটি সম্পর্কে চিন্তাভাবনা করেছেন। ;)
বেনস কৌলিক্স

উত্তর:


6

সহজ জাল করার আরেকটি বিকল্প হ'ল ব্ল্যাকএডার দ্বারা বেদনাবিহীন মেশ ব্যবহার করা এবং সেখানে বাইরের বিশ্বে ডেটা স্থানান্তর করার জন্য একটি সেতু চালু করা।

বেদাহীনমেশ গিটল্যাবে জাল থেকে অন্য নেটওয়ার্কের সাথে সংযোগ দেওয়ার বিষয়ে একটি সমস্যা রয়েছে যা চারটি পৃথক সমাধান ব্যাখ্যা করে। সমাধানগুলি সম্ভবত ইজিশেশায়ও কাজ করে, কারণ সমস্যাটি প্রাথমিকভাবে সেখানে উত্থাপিত হয়েছিল তবে বেদনাহীনমেশে নিশ্চিতভাবেই।

আমি তাদের দিকে তাকিয়েছিলাম এবং সর্বাধিক কার্যক্ষম সমাধানগুলিকে বাইরের নেটওয়ার্কের প্রকৃত সংযোগটি হ্যান্ডেল করার জন্য জালটিতে দুটি অতিরিক্ত ডিভাইস প্রয়োজন।

প্রথমটি আপনার প্রকল্পের জন্য চতুর্থ esp8266 প্রবর্তন করবে। এটি ইন্টারনেটের সাথে সংযুক্ত হবে এবং সিরিয়াল সংযোগের মাধ্যমে আপনার নোডগুলির একটিতে যোগাযোগ করবে।

অন্যটি ডেটা সংগ্রহ করতে এবং অন্য নেটওয়ার্কের সাথে অন্য ওয়াইফাই কার্ডের সাথে সংযোগ স্থাপনের জন্য একটি রাস্পবেরি পিআই ডিভাইস ব্যবহার করবে।

অন্য দুটি ভাল ছিল না, একজন লেখক দ্বারা নিরুৎসাহিত হয়েছিলেন এবং অন্যটি এএসপি 8266 এর সাথে এতটাই জটিল এবং সীমাবদ্ধ ছিলেন যে আমার চেষ্টা করার দরকার নেই।

গীতলবে পুরো গাইড ।


5

আমি ইজিমেশনের বিদ্যমান বাস্তবায়নটিকে কিছুটা সংশোধন করব, কারণ বর্তমানে এটি নোডের ভূমিকা বাস্তবায়িত করে বলে মনে হচ্ছে না। প্রতিটি নোড সমান এবং তারা কেবল একে অপরের সাথে সংযোগ তৈরি করতে পারে। আমি দেখতে পাচ্ছি যে তাদের রাউটিং টেবিলগুলিতে একটি সার্ভার যুক্ত করার বা কোনও সার্ভারের সাথে সংযোগ আছে এমন টেবিলগুলিতে একটি নির্দিষ্ট সংযোগ রেকর্ড চিহ্নিত করার কোনও উপায় নেই।

নোডগুলি বার্তা রাউটিং / ফরোয়ার্ড করার জন্য একটি সংযোগ তালিকা ব্যবহার করে। আপনার যা দরকার তা হ'ল একটি নোড যা সার্ভারের সাথে একটি সংযোগ রেকর্ড রয়েছে, এটি হ'ল মূল নোড।

এখন, বর্তমানে যখন কোনও নোড চালিত হয় এটি উপলব্ধ এপিগুলি (অ্যাক্সেস পয়েন্টস) স্ক্যান করে, জাল উপসর্গ দিয়ে শুরু না করে এমনগুলি ফিল্টার করে এবং তারপরে সেরা আরএসএসআইয়ের সাথে এপিতে সংযুক্ত হয়। এছাড়াও প্রতিটি নোড একটি জাল উপসর্গ + নোড অনন্য চিপ আইডি দিয়ে নিজস্ব এপি তৈরি করে ।

যদি অন্য কোনও নোড উপলব্ধ না হয় তবে এটি অন্যদের সংযুক্ত হওয়ার জন্য কেবল অপেক্ষা করবে। এবং এটিই প্রথম পয়েন্ট যেখানে পরিবর্তনগুলি প্রয়োগ করা উচিত। আপনি হার্ডকোড করতে পারেন বা জাল উপসর্গ + "সার্ভার" এর মতো একটি নাম দিয়ে একটি অনন্য এপি কনফিগার করতে পারেন এবং যদি অন্য কোনও ইজিমেশ এপি না পাওয়া যায় তবে নোডকে এই এপিটির সাথে সংযুক্ত করা উচিত meshConnectionTypeএবং এর সংযোগ তালিকায় একটি প্রাক-সংজ্ঞায়িত বস্তু সংরক্ষণ করা উচিত ।

এই বস্তুর ফাইল করা সার্ভার এবং নোডের মধ্যে বার্তা বিনিময় দ্বারা নির্ধারিত হবে না তবে espconnক্ষেত্রটি বাদে স্থির মানগুলি স্থির করা যাবে । এটি অন্য ক্ষেত্রেগুলির মতো অর্জন করা উচিত। নিম্নলিখিত কাঠামোতে আপনার কেবল প্রথম সদস্যের সদস্যের পরিবর্তনশীল প্রয়োজন need

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

    (...)
};

chipIdজাল নেটওয়ার্কের মধ্যে সার্ভারের ঠিকানা হতে হবে। আপনার এমন একটি মান চয়ন করা উচিত যা ESP8266 চিপ আইডি হতে পারে না।

সুতরাং মূলত আপনার নেটওয়ার্কে পাওয়ার আপ করার প্রথম নোডটি হবে "রুট" নোড। যদি অন্য নোডগুলি সার্ভারে বার্তা প্রেরণ করতে চায় তবে ইন-ডাইরেক্ট সংযোগের ভিত্তিতে বার্তাটি "রুট" নোডে প্রেরণ করা হবে (কোডটিতে সাব-সংযোগগুলি বলা হয়) রেকর্ডস।

"রুট" নোডটি তখন জানতে পারবে যে এটির সার্ভারের সাথে (রাউটার / ইন্টারনেটের) সরাসরি সংযোগ রয়েছে এবং এটি সার্ভারের কাছে একটি বার্তা হিসাবে এটি এই বার্তাটিকে অন্য উপায়ে ফরোয়ার্ড করা উচিত (জালের মতো নয়) । স্পষ্টতই এখানে সার্ভারের আইপি ঠিকানা এবং ব্যবহৃত পোর্ট যেমন উদাহরণস্বরূপ অতিরিক্ত তথ্য প্রয়োজন। এগুলি ডিফল্ট বা কোনও কনফিগারেশন পদ্ধতিতে নোড (প্রতিটি নোডে) সংরক্ষণ করা উচিত।

সুতরাং শেষ পর্যন্ত "রুট" নোড সার্ভারে একটি আইপি বার্তা প্রেরণ করবে, এটি আপনার দ্বারা আবার প্রয়োগ করা উচিত।


টি এল; ডিআর; উপসংহার:

  • একটি সার্ভার এপি থাকা উচিত এবং প্রথম নোড (কেবল প্রথম নোড চালিত হওয়া) এর সাথে সংযুক্ত হওয়া উচিত, এটি হবে মূল নোড।
  • সার্ভারের একটি ঠিকানা ( destId) থাকা উচিত যা সার্ভারে বার্তা প্রেরণের সময় জাল নেটওয়ার্কে ব্যবহৃত হবে। এই তথ্যটি ডিফল্টরূপে সমস্ত নোডের কাছে পাওয়া উচিত।
  • রুট নোডটি জানা উচিত যে এটি সার্ভার / ইন্টারনেটের সাথে "সরাসরি" সংযুক্ত। destIdরুট নোডের সংযোগ তালিকায় সার্ভারের সাথে সংযোগ রেকর্ড যুক্ত করে এটি অর্জন করা যেতে পারে ।
  • এটি সার্ভারের সাথে সংযুক্ত কিনা জেনে রুট নোড ইন্টারনেটের মাধ্যমে বার্তাগুলি যথাযথভাবে ফরোয়ার্ড করতে পারে।

এটি কেবলমাত্র একটি তাত্ত্বিক ধারণা যা আমি ইজিমেশ বাস্তবায়নের মাধ্যমে পড়তে এসেছি। আমি সম্ভবত কিছু গুরুত্বপূর্ণ ঘটনা মিস করেছি যা এটি কার্যকর করা বা বাস্তবায়িত করা অসম্ভব করে তোলে। এছাড়াও এটি সমস্যা সমাধানের সবচেয়ে কার্যকর উপায় নাও হতে পারে। আমি কোনও জাল নেটওয়ার্ক বিশেষজ্ঞ নই।

নেটওয়ার্কে একটি রুট নোড থাকা জিজ্ঞাসা করে "যদি রুটটি সংযোগ বিচ্ছিন্ন হয়ে যায় তবে কী হবে? কীভাবে একটি নতুন মূল বেছে নেওয়া হবে?"

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.