इस प्रोजेक्ट के बारे में

AlteriomPainlessMesh, ESP8266 और ESP32 डिवाइसों पर स्व-संगठित मेश नेटवर्क बनाने के लिए painlessMesh लाइब्रेरी का एक फ़ोर्क है। यह मूल ad-hoc नेटवर्किंग मॉडल को बनाए रखता है — कोई केंद्रीय नियंत्रक या राउटर आवश्यक नहीं, नोड्स की पहचान 32-बिट चिप IDs से होती है, JSON-आधारित मैसेजिंग, नोड्स के बीच समय समकालन — और IoT तैनातियों के लिए संरचित पैकेज जोड़ता है। मुख्य मेश व्यवहार: - वास्तविक ad-hoc नेटवर्किंग: एक या अधिक नोड्स का कोई भी समूह स्वयं को मेश में व्यवस्थित करता है; आकार मुख्य रूप से कनेक्शन बफ़र्स के लिए उपलब्ध heap द्वारा सीमित होता है। - JSON मैसेजिंग पठनीयता और वेब/JavaScript फ्रंट एंड के साथ आसान एकीकरण के लिए; README कुछ प्रदर्शन लागत बताता है और कहता है कि बाइनरी मैसेजिंग एक संभावित योगदान हो सकती है। - नेटवर्किंग विलंबता के कारण Arduino WiFi लाइब्रेरीज़ के बजाय मूल ESP32/ESP8266 SDK लाइब्रेरीज़ का उपयोग करती है। - IP नेटवर्किंग नहीं: मैसेज ब्रॉडकास्ट या विशिष्ट nodeId को भेजे जाते हैं। - प्रलेखित सावधानियाँ: delay() से बचें (TaskScheduler का उपयोग करें), WiFi इवेंट सब्सक्रिप्शन विरोधों से सावधान रहें, मैसेज दरों को रूढ़िवादी रखें, और उच्च ट्रैफ़िक में संभावित मैसेज हानि की अपेक्षा करें। Alteriom विस्तार: फ़ोर्क में क्रमबद्धता (serialization) और JSON रूपांतरण के साथ टाइप किए गए पैकेज जोड़े गए हैं, जो IoT एकीकरण के लिए mqtt-schema (v0.7.2/v0.7.3) के अनुरूप हैं: - SensorPackage (200): तापमान, आर्द्रता, दबाव, बैटरी, सेंसर ID, टाइमस्टैम्प। - StatusPackage (202): स्टेटस फ़्लैग, अपटाइम, मुक्त मेमोरी, WiFi शक्ति, फ़र्मवेयर संस्करण। - CommandPackage (400): JSON पैरामीटर और अद्वितीय IDs के साथ लक्षित कमांड। - MetricsPackage (204): CPU, मेमोरी स्वास्थ्य, नेटवर्क थ्रूपुट, पैकेट आँकड़े, विलंबता, RSSI। - HealthCheckPackage (605): स्वास्थ्य स्कोरिंग, समस्या फ़्लैग, मेमोरी-लीक प्रवृत्ति विश्लेषण, अनुमानित रखरखाव, क्रैश/रीबूट ट्रैकिंग। - MeshNodeListPackage (600), MeshTopologyPackage (601), MeshAlertPackage (602), MeshBridgePackage (603), EnhancedStatusPackage (604): नोड इन्वेंट्री, लिंक गुणवत्ता के साथ टोपोलॉजी ग्राफ़, अलर्ट, प्रोटोकॉल ब्रिजिंग, और विस्तृत मेश आँकड़े। - ब्रिज फेलओवर पैकेज (610-614): ब्रिज स्टेटस, चुनाव (election), अधिग्रहण (takeover), समन्वय, और NTP समय सिंक। संचालन सुविधाएँ: - ब्रॉडकास्ट OTA वितरण: README का दावा है कि 50+ नोड्स के मेश के लिए लगभग 98% नेटवर्क ट्रैफ़िक में कमी आती है और 100+ नोड्स तक समानांतर अपडेट संभव हैं, जो एक ही पैरामीटर द्वारा सक्षम होते हैं। - MQTT स्टेटस ब्रिज: Grafana, InfluxDB और Prometheus जैसे मॉनिटरिंग स्टैक के लिए मेश स्टेटस/टोपोलॉजी प्रकाशित करता है, कॉन्फ़िगर करने योग्य अंतराल के साथ। - स्वचालित ब्रिज फेलओवर: RSSI-आधारित चुनाव (टाई अपटाइम, मुक्त मेमोरी, नोड ID द्वारा तोड़े जाते हैं), खोए हुए ब्रिज का पता लगाने के लिए हार्टबीट-आधारित जाँच, अधिग्रहण के बाद चैनल फ़ॉलोइंग, वितरित सहमति, और एक समय में एक चुनाव, भूमिका परिवर्तनों के बीच 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 मुक्त heap की रिपोर्ट करता है, और नोट करता है कि उस स्तर पर एक एकल 8 KB पैकेज या एक OTA भाग आवंटित करने में विफल हो सकता है। यह ESP8266 को maxconn = 0 या 1 के साथ लीफ के रूप में कॉन्फ़िगर करने का सुझाव देता है, और overCapacity() और apChildren() हेल्पर्स तथा एक आवधिक कम-मेमोरी जाँच प्रदान करता है। स्थापना और निर्भरताएँ: Arduino Library Manager पर "Alteriom PainlessMesh" के रूप में, PlatformIO पर sparck75/AlteriomPainlessMesh के रूप में (README नोट करता है कि alteriom/ स्वामी प्रविष्टि 1.10.0 पर रुकती है), और npm पर @alteriom/painlessmesh के रूप में उपलब्ध है। निर्भरताओं में ArduinoJson, TaskScheduler, और AsyncTCP (ESP32) या ESPAsyncTCP (ESP8266) शामिल हैं। रिपॉजिटरी में मौजूद उदाहरणों में एक बुनियादी सेंसर नोड, स्वचालित चैनल पहचान के साथ ब्रिज-टू-इंटरनेट, ब्रिज फेलओवर, साझा गेटवे, MQTT ब्रिज, और संरचित पैकेजों का उपयोग करने वाला एक Alteriom सेंसर नोड शामिल हैं।