اقرأ في هذا المقال
- أساسيات بروتوكول MQTT
- خصائص بروتوكول MQTT
- وظيفة بروتوكول MQTT في إنترنت الأشياء IoT
- وظيفة بروتوكول MQTT في بروتوكول HTTP
- نموذج النشر والاشتراك في بروتوكول MQTT
بينما يوجد حالياً عدد من تقنيات وبروتوكولات إنترنت الأشياء المتنافسة قيد التشغيل، فإنّ الحمل الخفيف للغاية أي بداية “2 بايت” ونموذج النشر أو الاشتراك، والقدرات ثنائية الاتجاه لـ “MQTT” مناسبة بشكل فريد لتلبية متطلبات أنظمة التحكم الصناعية، وهو معيار “OASIS” مفتوح وخالي من حقوق الملكية.
أساسيات بروتوكول MQTT
تم تكوين “MQTT” بهدف جمع البيانات من العديد من الأجهزة ثم إرسال تلك البيانات إلى البنية التحتية لتكنولوجيا المعلومات، وإنّه خفيف الوزن وبالتالي فهو مثالي للمراقبة عن بعد خاصةً في اتصالات “M2M” التي تتطلب أثر رمز صغير أو حيث يكون عرض النطاق الترددي للشبكة محدوداً.
- “MQTT” هي اختصار لـ “MQ Telemetry Transport”.
- “M2M” هي اختصار لـ “Machine-to-machine”.
- “OASIS” هي اختصار لـ “Objectives, Audience, Strategy, Implementation and Sustainment”.
خصائص بروتوكول MQTT
- إنّه بروتوكول من آلة إلى آلة أي أنّه يدعم الاتصال بين الأجهزة.
- يمكنه توزيع المعلومات بشكل أكثر كفاءة.
- يتم استخدامه لزيادة قابلية التوسع.
- يمكنه تقليل استهلاك النطاق الترددي للشبكة بشكل كبير.
- يمكنه تقليل معدلات التحديث إلى ثوانٍ.
- إنّه مناسب جداً للاستشعار والتحكم عن بُعد.
- يمكنه زيادة عرض النطاق الترددي المتاح.
- يتم استخدامه للوزن الخفيف للغاية.
- إنّه آمن للغاية مع أمان قائم على الإذن.
- يتم استخدامه في صناعة النفط والغاز وأمازون وفيسبوك وغيرها من الشركات المهمة.
- يمكن أن يوفر وقت التطوير.
- “MQTT” هو بروتوكول شبكة مرن وخفيف الوزن يحقق التوازن الصحيح لمطوري إنترنت الأشياء.
- يسمح البروتوكول الخفيف الوزن بتنفيذه على كل من أجهزة الجهاز المقيدة بشدة وكذلك شبكات النطاق الترددي المحدود أو زمن الوصول العالي.
- يسمح بروتوكول “MQTT” لنظام “SCADA” الخاص بك بالوصول إلى بيانات إنترنت الأشياء.
- تقليل معدلات التحديث إلى ثوان.
ملاحظة:“SCADA” هي اختصار لـ “Supervisory Control and Data Acquisition”.
وظيفة بروتوكول MQTT في إنترنت الأشياء IoT
بالنسبة لأجهزة إنترنت الأشياء “IoT” يُعد الاتصال بالإنترنت أحد المتطلبات، ويتيح الاتصال بالإنترنت للأجهزة العمل مع بعضها البعض ومع خدمات الواجهة الخلفية، وبروتوكول الشبكة الأساسي للإنترنت هو “TCP / IP” وتم تصميمه للنقل عن بُعد لقائمة ترقب الرسائل “MQTT” على رأس بروتوكول “TCP / IP” وأصبح معياراً لاتصالات إنترنت الأشياء.
يمكن أيضاً تشغيل “MQTT” على “SSL / TLS”، وهو بروتوكول آمن مبني على “TCP / IP” للتأكد من أنّ جميع اتصالات البيانات بين الأجهزة مشفرة وآمنة، كما يُعد بأنّه بروتوكول مراسلة يدعم الاتصال غير المتزامن بين الأطراف، ويعمل بروتوكول المراسلة غير المتزامن على إلغاء ترابط مرسل الرسالة ومستقبلها في كل من المكان والزمان، وبالتالي يكون قابلاً للتطوير في بيئات الشبكة غير الموثوق بها وعلى الرغم من اسمه إلّا أنّه في الواقع لا علاقة له بقوائم انتظار الرسائل ويستخدم نموذج النشر والاشتراك بدلاً من ذلك.
وظيفة بروتوكول MQTT في بروتوكول HTTP
في أواخر عام 2014م أصبح رسمياً معياراً مفتوحاً لـ “OASIS” وهو مدعوم بلغات البرمجة الشائعة باستخدام تطبيقات متعددة مفتوحة المصدر، والعديد من المطورين على معرفة بالفعل بخدمات “HTTP” على الويب ويمكن للجهاز إرسال بياناته كطلب “HTTP“، وتلقي التحديثات من النظام كاستجابة “HTTP” وهناك بعض القيود الشديدة على نمط الطلب والاستجابة هذا:
- “HTTP” هو بروتوكول متزامن.
- ينتظر العميل حتى يستجيب الخادم، وهذا مطلب لمتصفحات الويب لكنّه يأتي على حساب ضعف قابلية التوسع.
- في عالم إنترنت الأشياء تسبب العدد الكبير من الأجهزة، وعلى الأرجح شبكة غير موثوقة أو عالية الكمون في حدوث مشكلة في الاتصال المتزامن.
- يُعد بروتوكول المراسلة غير المتزامن أكثر ملاءمة لتطبيقات إنترنت الأشياء.
- يمكن لأجهزة الاستشعار إرسال قراءات، والسماح للشبكة بتحديد المسار والتوقيت الأمثل للتسليم إلى الأجهزة والخدمات الوجهة.
ملاحظة: “IoT” هي اختصار لـ “Internet of Things” و”HTTP” هي اختصار لـ “Hypertext Transfer Protocol”.
ملاحظة: “TLS” هي اختصار لـ “Transport Layer Security” و”SSL” هي اختصار لـ “Secure Sockets Layer”.
ملاحظة:“TCP / IP” هي اختصار لـ “Transmission Control Protocol/Internet Protocol”.
2- HTTP هو اتجاه واحد
- يجب على العميل بدء الاتصال.
- في تطبيق إنترنت الأشياء، تُعد الأجهزة أو المستشعرات في العادة عملاء ممّا يدل على أنّه لا يستطيعون استلام أوامر من الشبكة بشكل عكسي.
3- “HTTP” هو بروتوكول 1-1
يقوم العميل بتقديم طلب ويستجيب الخادم. يعد بث رسالة إلى جميع الأجهزة الموجودة على الشبكة أمراً صعباً ومكلفاً، وهي حالة شائعة للاستخدام في تطبيقات إنترنت الأشياء.
4- HTTP هو بروتوكول ذو وزن ثقيل يحتوي على العديد من العناوين والقواعد
- إنّها ليست مناسبة للشبكات المقيدة، وتستخدم معظم الأنظمة القابلة للتطوير عالية الأداء ناقل رسائل غير متزامن، بدلاً من خدمات الويب لتبادل البيانات الداخلية.
- ويُطلق على بروتوكول المراسلة الأكثر شيوعاً المستخدم في أنظمة البرامج الوسيطة للمؤسسات اسم بروتوكول وضع الرسائل في قائمة انتظار المتقدم “AMQP”، ومع ذلك في بيئة الأداء العالي لا تُعد قوة الحوسبة وزمن انتقال الشبكة مصدر قلق في العادة، وتم تصميم “AMQP” لضمان الموثوقية وقابلية التشغيل البيني في تطبيقات المؤسسة، ويحتوي على مجموعة ميزات غنية ولكنّه غير مناسب لتطبيقات إنترنت الأشياء ذات الموارد المحدودة.
- إلى جانب “AMQP” هناك بروتوكولات مراسلة شائعة أخرى، وعلى سبيل المثال بروتوكول الرسائل والتواجد القابل للتوسيع “XMPP” هو بروتوكول مراسلة فورية “IM” من نظير إلى نظير وإنّه ثقيل على الميزات التي تدعم حالات استخدام المراسلة الفورية، مثل التواجد ومرفقات الوسائط، وبالمقارنة مع “MQTT” فهي تتطلب الكثير من الموارد على كل من الجهاز والشبكة.
ملاحظة:“AMQP” هي اختصار لـ “Advanced Message Queuing Protocol”.
ملاحظة:“IM” هي اختصار لـ “instant message” و”XMPP” هي اختصار لـ “Extensible Messaging and Presence Protocol”.
نموذج النشر والاشتراك في بروتوكول MQTT
السمة الرئيسية لبروتوكول “MQTT” هي نموذج النشر والاشتراك الخاص به، كما هو الحال مع جميع بروتوكولات المراسلة فإنّه يفصل بين الناشر والمستهلك للبيانات، ويحدد بروتوكول “MQTT” نوعين من الكيانات في الشبكة وهما وسيط الرسائل وعدد من العملاء، والوسيط هو خادم يتلقى جميع الرسائل من العملاء ثم يوجه تلك الرسائل إلى عملاء الوجهة ذات الصلة.
أمّا العميل هو أي شيء يمكنه التفاعل مع الوسيط لإرسال الرسائل واستلامها، كما يمكن أن يكون العميل عبارة عن مستشعر إنترنت الأشياء في الميدان، أو تطبيق في مركز البيانات الذي يعالج بيانات إنترنت الأشياء، والعميل يتصل بالوسيط. يمكنه الاشتراك في أي رسالة “موضوع” في الوسيط ويمكن أن يكون هذا الاتصال اتصال “TCP / IP” عادياً أو اتصال “TLS” مشفراً للرسائل الحساسة.
ينشر العميل الرسائل ضمن موضوع عن طريق إرسال الرسالة والموضوع إلى الوسيط، ويقوم الوسيط بعد ذلك بإعادة توجيه الرسالة إلى جميع العملاء المشتركين في هذا الموضوع، ونظراً لأنّ رسائل “MQTT” يتم تنظيمها حسب الموضوعات، يتمتع مطور التطبيق بالمرونة لتحديد أن عملاء معينين يمكنهم فقط التفاعل مع رسائل معينة.
وعلى سبيل المثال ستنشر المستشعرات قراءاتها تحت موضوع “sensor_data” وتشترك في موضوع “config_change”، وستشترك تطبيقات معالجة البيانات التي تحفظ بيانات المستشعر في قاعدة بيانات خلفية في موضوع “sensor_data”، ويمكن أن يتلقى تطبيق وحدة تحكم المشرف أوامر مسؤول النظام لضبط تكوينات المستشعرات مثل الحساسية وعينة التردد ونشر تلك التغييرات في موضوع “config_change”.