প্রকল্প সম্পর্কে
AlteriomPainlessMesh হলো painlessMesh লাইব্রেরির একটি ফর্ক যা ESP8266 এবং ESP32 ডিভাইসে স্ব-সংগঠিত মেশ নেটওয়ার্ক তৈরির জন্য ব্যবহৃত হয়। এটি মূল অ্যাড-হক নেটওয়ার্কিং মডেল ধরে রাখে — কোনো কেন্দ্রীয় কন্ট্রোলার বা রাউটার প্রয়োজন নেই, নোডগুলি 32-বিট চিপ আইডি দ্বারা চিহ্নিত, JSON-ভিত্তিক মেসেজিং, নোডগুলির মধ্যে সময় সিংক — এবং IoT স্থাপনার লক্ষ্যে কাঠামোবদ্ধ প্যাকেজ যুক্ত করে।
মূল মেশ আচরণ
- প্রকৃত অ্যাড-হক নেটওয়ার্কিং: এক বা একাধিক নোডের যেকোনো সেট স্ব-সংগঠিত হয়ে একটি মেশ গঠন করে; আকার মূলত কানেকশন বাফারের জন্য উপলব্ধ হিপ দ্বারা সীমাবদ্ধ।
- JSON মেসেজিং পাঠযোগ্যতা এবং ওয়েব/জাভাস্ক্রিপ্ট ফ্রন্ট-এন্ডের সাথে সহজ সংহতকরণের জন্য; README-তে কিছু কর্মক্ষমতা খরচ উল্লেখ করা হয়েছে এবং বাইনারি মেসেজিং একটি সম্ভাব্য কন্ট্রিবিউশন হতে পারে।
- নেটওয়ার্কিং ল্যাটেন্সির কারণে Arduino WiFi লাইব্রেরির পরিবর্তে নেটিভ ESP32/ESP8266 SDK লাইব্রেরি ব্যবহার করে।
- IP নেটওয়ার্কিং নয়: বার্তা ব্রডকাস্ট বা নির্দিষ্ট nodeId-তে পাঠানো হয়।
- নথিভুক্ত সতর্কতা: delay() এড়িয়ে চলুন (TaskScheduler ব্যবহার করুন), WiFi ইভেন্ট সাবস্ক্রিপশন দ্বন্দ্ব সম্পর্কে সতর্ক থাকুন, মেসেজ রেট রক্ষণশীল রাখুন এবং উচ্চ ট্রাফিকে সম্ভাব্য মেসেজ লস আশা করুন।
Alteriom এক্সটেনশন
ফর্কটি IoT সংহতকরণের জন্য mqtt-schema (v0.7.2/v0.7.3) এর সাথে সামঞ্জস্যপূর্ণ টাইপড প্যাকেজ, সিরিয়ালাইজেশন এবং JSON রূপান্তর যোগ করে:
- SensorPackage (200): তাপমাত্রা, আর্দ্রতা, চাপ, ব্যাটারি, সেন্সর আইডি, টাইমস্ট্যাম্প।
- StatusPackage (202): স্ট্যাটাস ফ্ল্যাগ, আপটাইম, ফ্রি মেমরি, WiFi শক্তি, ফার্মওয়্যার সংস্করণ।
- CommandPackage (400): JSON প্যারামিটার এবং ইউনিক আইডি সহ লক্ষ্যযুক্ত কমান্ড।
- MetricsPackage (204): CPU, মেমরি স্বাস্থ্য, নেটওয়ার্ক থ্রুপুট, প্যাকেট পরিসংখ্যান, লেটেন্সি, RSSI।
- HealthCheckPackage (605): স্বাস্থ্য স্কোরিং, সমস্যা ফ্ল্যাগ, মেমরি-লিক প্রবণতা বিশ্লেষণ, ভবিষ্যদ্বাণীমূলক রক্ষণাবেক্ষণ, ক্র্যাশ/রিবুট ট্র্যাকিং।
- MeshNodeListPackage (600), MeshTopologyPackage (601), MeshAlertPackage (602), MeshBridgePackage (603), EnhancedStatusPackage (604): নোড ইনভেন্টরি, লিংক কোয়ালিটি সহ টপোলজি গ্রাফ, অ্যালার্ট, প্রোটোকল ব্রিজিং এবং বিস্তারিত মেশ পরিসংখ্যান।
- ব্রিজ ফেইলওভার প্যাকেজ (610-614): ব্রিজ স্ট্যাটাস, ইলেকশন, টেকওভার, সমন্বয় এবং NTP সময় সিংক।
অপারেশনাল বৈশিষ্ট্য
- ব্রডকাস্ট OTA বিতরণ: README-তে দাবি করা হয়েছে 50+ নোডের মেশের ক্ষেত্রে প্রায় 98% নেটওয়ার্ক ট্রাফিক হ্রাস এবং 100+ নোড পর্যন্ত স্কেল করা সমান্তরাল আপডেট, একটি একক প্যারামিটার দ্বারা সক্রিয়।
- MQTT স্ট্যাটাস ব্রিজ: Grafana, InfluxDB এবং Prometheus-এর মতো মনিটরিং স্ট্যাকের জন্য মেশ স্ট্যাটাস/টপোলজি প্রকাশ করে, কনফিগারযোগ্য অন্তরালে।
- স্বয়ংক্রিয় ব্রিজ ফেইলওভার: RSSI-ভিত্তিক ইলেকশন (টাই ভাঙা হয় আপটাইম, ফ্রি মেমরি, নোড আইডি দ্বারা), হারিয়ে যাওয়া ব্রিজ সনাক্ত করতে হার্টবিট-ভিত্তিক ডিটেকশন, টেকওভারের পরে চ্যানেল ফলোয়িং, ডিস্ট্রিবিউটেড কনসেনসাস, এবং একসাথে একটি ইলেকশন, রোল পরিবর্তনের মধ্যে 60 সেকেন্ড হোল্ড এবং একক প্রার্থীর জন্য ন্যূনতম RSSI-এর মাধ্যমে স্প্লিট-ব্রেন প্রতিরোধ।
- মাল্টি-ব্রিজ সমন্বয়: একাধিক সমসাময়িক ব্রিজ যাদের অগ্রাধিকার স্তর (1-10), ভূমিকা (প্রাইমারি/সেকেন্ডারি/স্ট্যান্ডবাই), পিয়ার ডিসকভারি এবং লোড-ব্যালান্সিং কৌশল।
- অফলাইন মোডের জন্য মেসেজ কিউ: অগ্রাধিকার-ভিত্তিক কিউইং (CRITICAL/HIGH/NORMAL/LOW) যা সমালোচনামূলক বার্তা রক্ষা করে এমন ইভিকশন নিয়ম, স্বয়ংক্রিয় অনলাইন/অফলাইন সনাক্তকরণ এবং অটো-ফ্লাশ।
- শেয়ার্ড গেটওয়ে মোড: সব নোড একই রাউটারে সংযুক্ত হয় এবং ইন্টারনেটে রিলে করতে পারে, গেটওয়ে ইলেকশন, ডিডুপ্লিকেশন এবং ডেলিভারি নিশ্চিতকরণ সহ।
হার্ডওয়্যার ভ্যালিডেশন
README-তে বলা হয়েছে যে ফেইলওভার, রাউটিং, চ্যানেল ফলোয়িং এবং স্টেশন স্ক্যানের 2.0 পরিবর্তনগুলি একটি হার্ডওয়্যার-ইন-দ্য-লুপ রিগে বৈধ করা হয়েছে যা ESP32, ESP32-C3, ESP32-C5, ESP32-C6, ESP32-S3 এবং ESP8266-কে একটি আসল রাউটারের সাথে একত্রিত করে, সম্পূর্ণ স্যুটের তিনটি ধারাবাহিক ক্লিন রানের রিলিজ গেট সহ।
ESP8266 ক্ষমতা নোট
README-তে ESP8266-কে ছোট মেশ বা লিফ নোড হিসাবে উপযুক্ত বলে বর্ণনা করা হয়েছে, সাত-নোডের মেশে অভ্যন্তরীণ নোড হিসাবে কাজ করার সময় 10-13 KB ফ্রি হিপ রিপোর্ট করে এবং উল্লেখ করেছে যে একটি 8 KB প্যাকেজ বা একটি OTA অংশ সেই স্তরে বরাদ্দ করতে ব্যর্থ হতে পারে। এটি maxconn = 0 বা 1 সহ ESP8266-কে লিফ হিসাবে কনফিগার করার পরামর্শ দেয় এবং overCapacity() এবং apChildren() হেল্পার plus একটি পর্যায়ক্রমিক লো-মেমরি চেক প্রদান করে।
ইনস্টলেশন এবং নির্ভরতা
Arduino Library Manager-এ "Alteriom PainlessMesh" হিসাবে, PlatformIO-তে sparck75/AlteriomPainlessMesh হিসাবে (README-তে উল্লেখ করা হয়েছে যে alteriom/ মালিক এন্ট্রি 1.10.0-এ থেমে যায়), এবং npm-এ @alteriom/painlessmesh হিসাবে উপলব্ধ। নির্ভরতার মধ্যে রয়েছে ArduinoJson, TaskScheduler, এবং AsyncTCP (ESP32) বা ESPAsyncTCP (ESP8266)।
রিপোজিটরির উদাহরণগুলির মধ্যে রয়েছে একটি বেসিক সেন্সর নোড, অটো চ্যানেল ডিটেকশন সহ ব্রিজ-টু-ইন্টারনেট, ব্রিজ ফেইলওভার, শেয়ার্ড গেটওয়ে, MQTT ব্রিজ এবং স্ট্রাকচার্ড প্যাকেজ ব্যবহার করে একটি Alteriom সেন্সর নোড।
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.