عن المشروع
AlteriomPainlessMesh هو فرع من مكتبة painlessMesh لبناء شبكات مترابطة ذاتية التنظيم على أجهزة ESP8266 وESP32. يحافظ على نموذج الشبكات المخصصة (ad-hoc) الأصلي — دون الحاجة إلى وحدة تحكم مركزية أو موجه، وتُعرَّف العقد بمعرّفات شرائح 32 بت، ورسائل JSON، ومزامنة الوقت عبر العقد — ويضيف فوقه حزمًا منظمة تستهدف تطبيقات إنترنت الأشياء.
سلوك الشبكة الأساسي
- شبكات مخصصة حقيقية: أي مجموعة من عقدة واحدة أو أكثر تنظم نفسها ذاتيًا في شبكة؛ الحجم محدود أساسًا بالذاكرة المتاحة لمخازن الاتصال.
- رسائل JSON لسهولة القراءة والتكامل مع الواجهات الأمامية للويب/جافاسكربت؛ يلاحظ README بعض التكلفة الأدائية وأن الرسائل الثنائية قد تكون مساهمة محتملة.
- تستخدم الشبكات مكتبات SDK الأصلية لـ ESP32/ESP8266 بدلاً من مكتبات Arduino WiFi، لأسباب تتعلق بزمن الاستجابة.
- ليست شبكات IP: تُبث الرسائل أو تُرسل إلى nodeId محدد.
- تحذيرات موثقة: تجنب delay() (استخدم TaskScheduler)، واحذر من تعارضات اشتراك أحداث WiFi، وحافظ على معدلات الرسائل متحفظة، وتوقع فقدانًا محتملًا للرسائل تحت حركة المرور العالية.
امتدادات Alteriom
يضيف الفرع حزمًا مكتوبة مع تسلسل وتحويل JSON، بما يتماشى مع mqtt-schema (v0.7.2/v0.7.3) لتكامل إنترنت الأشياء:
- 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 تقليل حركة مرور الشبكة بنحو 98% لشبكات تضم أكثر من 50 عقدة، وتحديثات متوازية تتوسع إلى أكثر من 100 عقدة، عبر معامل واحد.
- جسر حالة MQTT: ينشر حالة/طوبولوجيا الشبكة لأكوام مراقبة مثل Grafana وInfluxDB وPrometheus، بفواصل زمنية قابلة للتهيئة.
- تبديل الجسر التلقائي عند الفشل: انتخاب قائم على RSSI (تُكسر الروابط بالتساوي عبر زمن التشغيل والذاكرة الحرة ومعرّف العقدة)، وكشف فقدان الجسر عبر نبضات القلب، وتتبّع القناة بعد الاستيلاء، وإجماع موزع، ومنع انقسام الدماغ عبر انتخاب واحد في كل مرة، واحتجاز 60 ثانية بين تغييرات الأدوار، وحد أدنى من RSSI للمرشح المنفرد.
- تنسيق الجسور المتعددة: جسور متزامنة متعددة بمستويات أولوية (1-10)، وأدوار (أساسي/ثانوي/احتياطي)، واكتشاف الأقران، واستراتيجيات موازنة الحمل.
- طابور الرسائل للوضع دون اتصال: طابور قائم على الأولوية (CRITICAL/HIGH/NORMAL/LOW) مع قواعد إخلاء تحمي الرسائل الحرجة، وكشف تلقائي للاتصال/عدم الاتصال، وتفريغ تلقائي.
- وضع البوابة المشتركة: تتصل جميع العقد بنفس الموجه ويمكنها الترحيل إلى الإنترنت، مع انتخاب بوابة، وإزالة التكرار، وتأكيد التسليم.
التحقق من العتاد
يذكر README أن تغييرات الإصدار 2.0 في التبديل، والتوجيه، وتتبع القناة، ومسح المحطة تم التحقق منها على منصة اختبار hardware-in-the-loop تجمع بين ESP32 وESP32-C3 وESP32-C5 وESP32-C6 وESP32-S3 وESP8266 مع موجه حقيقي، مع بوابة إصدار تتمثل في ثلاثة تشغيلات نظيفة متتالية للمجموعة الكاملة.
ملاحظة سعة ESP8266
يصف README جهاز ESP8266 بأنه مناسب للشبكات الصغيرة أو كعقدة طرفية، مشيرًا إلى وجود 10-13 كيلوبايت من الذاكرة الحرة عند العمل كعقدة داخلية في شبكة من سبع عقد، ويلاحظ أن حزمة واحدة بحجم 8 كيلوبايت أو جزء 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 باستخدام الحزم المنظمة.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.