هذا المقال مقدّمة عن بروتوكولMQTT  (Message Queuing Telemetry Transport): نقل القياس عن بُعد لخدمة وضع الرسائل في قائمة انتظار، وهو بروتوكول بسيط لنقل الرسائل بين المخدّم والعميل، ومناسب لتحقيق الاتّصال بين أجهزة إنترنت الأشياء. صُمّم للأجهزة المتحكم بها التي تحتاج إلى عرض نطاق ترددي منخفض، أي هو الحل الأمثل لتبادل البيانات بين أجهزة إنترنت الأشياء المتعددة.

بروتوكول MQTT

يعتمد بروتوكول MQTT على نظام نشر/اشتراك، إذ تُرسِل أجهزة “النشر” رسائل حول موضوع معيّن إلى الأجهزة “المشترِكة” (أي المهتمة أو المرتبطة) بهذا الموضوع.

نظام نشر/اشتراك
نظام نشر/اشتراك (مصدر الصورة: موقع randomnerdtutorials)

تشمل تطبيقات البروتوكول الرئيسة إرسال رسائل للتحكم بالخرج (النواتج) وقراءة وتوزيع بيانات عقد الاستشعار، وغيرها الكثير.

المفاهيم الرئيسية لبروتوكول MQTT:

هناك بعض المفاهيم الأساسية في بروتوكول MQTT نحتاج فهمها:

  • نظام نشر/اشتراك
  • الرسائل
  • مواضيع الرسائل
  • المخدّم (وسيط الرسائل)

أولاً: نظام نشر/اشتراك:

يمكن أن يُرسِل الجهاز رسالةً تحوي موضوعاً، أو الاشتراك في موضوع معيّن لتلقّي الرسائل حوله عند توفّرها.

مخطط صندوقي لآلية عمل نظام نشر/اشتراك
مخطط صندوقي لآلية عمل نظام نشر/اشتراك (مصدر الصورة: موقع randomnerdtutorials)
  • على سبيل المثال، يرسل (ينشر) الجهاز (1) رسائل حول موضوع معين.
  • الجهاز (2) مشترك (مهتم) في نفس الموضوع الذي نشره الجهاز (1).
  • وهكذا يستقبل الجهاز (2) تلك الرسائل.

ثانياً: الرسائل:

الرسائل هي المعلومات التي تريد لأجهزتك أن تتبادلها، ويُمكن أن تكون أمراً أو بيانات كقراءات الحساسات (أجهزة الاستشعار).

ثالثاً: مواضيع الرسائل:

المواضيع هي طريقة تسجيل اهتمامك بنوع الرسائل الواردة أو كيفيّة تحديد مكان نشر الرسالة.

تُمثل المواضيع بكلمات مفصولة بشارطة مائلة للأمام (/)، وتشير كل إشارة إلى مستوى الموضوع، ونرى فيما يلي مثالاً عن كيفية إنشاء موضوع لمصباح في مكتب منزلك:

طريقة إنشاء موضوع عن مصباح المكتب
طريقة إنشاء موضوع عن مصباح المكتب (مصدر الصورة: موقع randomnerdtutorials)

ملاحظة:

مواضيع الرسائل حساسة لحالة الأحرف الإنجليزية المستخدمة ضمنها (كبيرةً كانت أم صغيرة)، فعلى سبيل المثال تعبر الصورة التالية عن موضوعين مختلفين:

كتابة نفس الموضوع السابق بطريقة مختلفة (مصدر الصورة: موقع randomnerdtutorials)

يُمكنك تخيّل حدوث السيناريو التالي إذا رغبت بتشغيل المصباح في مكتب منزلك باستخدام برتوكول MQTT:

خطوات تقنية MQTT لتشغيل مصباح المكتب خطوات تقنية MQTT لتشغيل مصباح المكتب
خطوات تقنية MQTT لتشغيل مصباح المكتب (مصدر الصورة: موقع randomnerdtutorials)
  • يُرسل (ينشر) جهازٌ رسائلَ ” تشغيل” و” إطفاء” ضمن موضوع منزل/مكتب/مصباح.
  • أنت تملك الجهاز المتحكم بالمصباح (يُمكن أن يكون ESP32 أو ESP8266، أو أي دارة إلكترونية أخرى أو جهاز)، وتكون الدارة الإلكترونية ESP32 المتحكِّمة بمصباحك مشترِكةً في نفس الموضوع منزل/مكتب/مصباح.
  • لذا، عندما تُنشر رسالة جديدة عن هذا الموضوع، تستقبل الدارة ESP32 رسائل “التشغيل” أو “الإطفاء” لتشغيل أو إطفاء المصباح.

يمكن استخدام الدارة ESP32 أو ESP8266 لتكون الجهاز “الناشر”، أو منصّة تحكُّم لأتمتة المنزل مدعومة بتقنية MQTT، مثل نود-ريد (Node-Red): هي أداة برمجية مرئية تُستخدم لبناء تطبيقات إنترنت الأشياء العاملة بتقنية MQTT، والمساعد المنزلي (وهو نظام مركزي مفتوح المصدر لأتمتة المنزل، يركّز على الخصوصية والتحكم المحلّي، ويتطلب وجود نظام أندرويد أو آيفون لاستخدامه)، ودوموتيكز(وهو نظام مؤتمِت للمنزل يسمح لنا بمراقبة وتهيئة الأجهزة المختلفة في المنزل)، وأوبين هاب (وهو نظام مؤتمِت مفتوح المصدر كُتب بلغة جافا، يوزّع في أماكن العمل ويتصل بالأجهزة والخدمات العائدة لبائعين مختلفين).

الأنظمة والدارات المختلفة التي تستخدم بروتوكول MQTT.
الأنظمة والدارات المختلفة التي تستخدم بروتوكول MQTT (مصدر الصورة: موقع randomnerdtutorials)

رابعاً: المخدّم (الوسيط):

المخدّم هو المسؤول عن استقبال الرسائل وتصنيفها (فرزها)، ليقرّر الأجهزة المهتمة بها وينشرها لجميع العملاء المشترِكين بها.

آلية عمل المخدّم (الوسيط)
آلية عمل المخدّم (الوسيط) (مصدر الصورة: موقع randomnerdtutorials)

هناك مخدّمات متنوّعة يمكن استخدامها، ففي مشاريع أتمتة المنازل نستخدم المخدّم موسكيتو، وهو مخدّم مفتوح المصدر صغير الحجم يُثبت ضمن الراسبيري باي، أو يمكنك تثبيته ضمن حاسوبك الشخصي (لكنّه ليس فعّالاً كتثبيته على الراسبيري باي، إذ يجب أن تُبقي حاسوبك قيد التشغيل طوال الوقت للحفاظ على الاتصال بين الأجهزة المزوّدة بتقنية MQTT).

أيقونة المخدّم موسكيتو
أيقونة المخدّم موسكيتو (مصدر الصورة: موقع randomnerdtutorials)

يسمح تثبيت مخدّم موسكيتو على الراسبيري باي لأجهزة إنترنت الأشياء ضمن شبكتك المحلّية والمتصلة أيضاً بنفس الشبكة بتبادل البيانات فيما بينها.

اتّبع البرنامج التعليمي أدناه لتثبيت مخدّم موسكيتو على الراسبيري باي:

Install Mosquitto Broker on Raspberry Pi

يمكن أيضاً تشغيل مخدّم موسكيتو بواسطة الحوسبة السحابية (الحوسبةُ السحابية هي مصطلحٌ يُشيرُ إلى المصادرِ والأنظمةِ الحاسوبيّة المتوافِرة تحت الطلب عبر الشبكة، والتي تستطيع توفير عددٍ من الخدمات الحاسوبية المتكاملة دون التقيد بالموارد المحلية بهدف التيسير على المستخدم، وتشمل تلك الموارد مساحة لتخزين البيانات والنسخ الاحتياطي والمزامنة الذاتية)، مما يسمح بربط عدة أجهزة لإنترنت الأشياء من أي مكان باستخدام شبكات مختلفة طوال اتصالها بالإنترنت، ولتنفيذ هذا تحقّق من البرنامج التعليمي أدناه:

كيفية استخدام تقنية MQTT في مشاريع أتمتة المنازل وإنترنت الأشياء:

يناسب بروتوكول MQTT مشاريع أتمتة المنازل وإنترنت الأشياء، ويبين المثال التالي كيفية استخدامه في نظام أتمتة المنازل المصمّم باستخدام دارات (لوحات) تطوير منخفضةِ التكلفة مثل راسبيري باي وESP32 وESP8266 وأردوينو:

استخدام مخدّم موسكيتو العامل ببروتوكول MQTT في مشروع أتمتة منزل
استخدام مخدّم موسكيتو العامل ببروتوكول MQTT في مشروع أتمتة منزل (مصدر الصورة: موقع randomnerdtutorials)
  • تشغّل الراسبيري باي مخدّم موسكيتو الضروري لعمل بروتوكول MQTT.
  • ثم تشغّل الراسبيري باي نود-ريد، وهي منصة أتمتة منزلية تدعم بروتوكول MQTT، مما يسمح للراسبيري الاشتراك في مواضيع محددة لتلقي ونشر الرسائل حولها من وإلى أجهزة أخرى لإنترنت الأشياء.
  • تسمح لك ريد-نود أيضاً ببناء واجهة تخاطب (واجهة مستخدم) بأزرار للتحكم بالمخارج والمخططات لعرض قراءات الحساسات.
  • يمكن أن تكون الأردوينو وESP32 وESP8266 عملاء (زبائن) لبروتوكولMQTT ينشرون حول بعض المواضيع ويشتركون فيها.
  • توصل هذه الدارات (اللوحات) بالمشغّلات مثل الليد أو الريليه، وبالحسّاسات مثل حسّاس درجة الحرارة وحسّاس الرطوبة وحسّاس الدخان وما شابه، وتستطيع نشر بيانات حالة الحسّاس ضمن موضوع معين تشترك فيه نود-ريد أيضاً، فتستقبل نود-ريد قراءات الحسّاس وتعرضها بواسطة واجهة المستخدم.
  • من ناحية أخرى، يمكن لنود-ريد نشرُ بياناتِ موضوعٍ محدّد للتحكّم بالخرج عند استخدامك لأزرار واجهة المستخدم، وتكون الدارات الاخرى مُشتركة في هذا الموضوع وتتحكم في الخرج بطريقة مشابهة.

تُظهر الصورة التالية مثال عن واجهة المستخدم لنود-ريد تسمح لك بالتحكم في أحد المخارج وعرض قراءات درجة الحرارة والرطوبة:

مثال عن واجهة مستخدم نود-ريد
مثال عن واجهة مستخدم نود-ريد (مصدر الصورة: موقع randomnerdtutorials)

فيما يلي ملخص سريع عن الخطوات الواجب اتّباعها لبناء مشروع كما وضّحنا سابقاً:

  • جهّز الراسبيري باي خاصتك، واتّبع خطوات دليل استخدامها للمبتدئين.
  • صِلْ وشغّل الراسبيري باي بواسطة بروتوكول النقل الآمن SSH (هو بروتوكولٌ شبكيٌّ يوفر للمستخدمين وصولاً آمناً إلى الحواسيب عبر الشبكة).
  • ثبّت نود-ريد ولوحة معلوماتها (dashboard) ضمن الراسبيري.
  • نصّب مخدّم موسكيتو ضمن الراسبيري باي.
  • أضِف دارة ESP32 أو ESP2866 إلى النظام، ويمكنك اتّباع البرنامج التعليمي التالي لفهم MQTT:
  • آلية عمل ESP32 ونود-ريد باستخدام بروتوكول MQTT – ناشر ومشترك
  • ESP32 and Node-RED with MQTT – Publish and Subscribe
  • آلية عمل ESP8266 ونود-ريد باستخدام بروتوكول MQTT – ناشر ومشترك
  • ESP8266 and Node-RED with MQTT – Publish and Subscribe

إذا أردت تعلّم المزيد حول هذه المواضيع، فلدينا هنا دورة مُخصصة عن كيفية صنع نظامك المؤتمت باستخدام الراسبيري باي وESP2866 وأردوينو ونود-ريد، فقط انقر على الرابط التالي:

كيفية صنع نظام مؤتمت خاص باستخدام أحد الدارات الإلكترونية

الخلاصة:

MQTT هو بروتوكول اتصال يعتمد على نظام نشر/اشتراك، إذ يَسمح للأجهزة بالاشتراك بموضوع أو نشر البيانات حوله، وأيضاً تتلقى الأجهزة الرسائل المنشورة حول المواضيع التي اشتركوا فيها، وهو بروتوكول سهل الاستخدام ومناسب لمشاريع إنترنت الأشياء وأتمتة المنازل.


المصدر: هنا.

ترجمة:رؤى عثمان، مراجعة: آلاء خالد محمد آغا، تصميم: علي العلي، تدقيق لغوي: حنين نضار غاليه، تحرير: رؤى حمود.