استضافة خادم MQTT على Raspberry Pi

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


ماذا ستحتاج

  1. التوت بي (أي نموذج يحمل دعم GPIO ، على سبيل المثال ، PI 3 ، PI 4)
  2. بطاقة microSD (8 جيجابايت على الأقل ، الفئة 10 أو أفضل)
  3. مزود الطاقة (5 فولت ، 2.5A الحد الأدنى لـ PI 3 ؛ 5V ، 3A لـ PI 4)
  4. التوت PI OS (Lite أو إصدار سطح المكتب)
  5. اتصال الإنترنت
  6. عملاء MQTT (على سبيل المثال ، أدوات برمجيات ESP8266 أو ESP32 أو MQTT)

الخطوة 1: تحديث Raspberry Pi

  1. تأكد من تحديث Raspberry Pi الخاص بك:
    sudo apt update && sudo apt upgrade -y
    

الخطوة 2: تثبيت الوسيط MoSquitto MQTT

البعوض هو وسيط MQTT خفيف الوزن ويستخدم على نطاق واسع.

  1. تثبيت البعوض وأدوات العميل الخاصة به:

    sudo apt install -y mosquitto mosquitto-clients
    
  2. تمكين البعوض من البدء في الحذاء:

    sudo systemctl enable mosquitto
    
  3. ابدأ خدمة البعوض:

    sudo systemctl start mosquitto
    

الخطوة 3: اختبار وسيط MQTT

  1. افتح نوافذ طرفية أو جلسات SSH إلى Raspberry Pi.

  2. في المحطة الأولى ، اشترك في موضوع الاختبار:

    mosquitto_sub -h localhost -t test/topic
    
  3. في المحطة الثانية ، نشر رسالة اختبار:

    mosquitto_pub -h localhost -t test/topic -m "Hello, MQTT!"
    
  4. يجب أن ترى الرسالة "مرحبًا ، mqtt!" في المحطة الأولى.


الخطوة 4: تكوين البعوض للاتصالات الخارجية

  1. افتح ملف تكوين البعوض:

    sudo nano /etc/mosquitto/mosquitto.conf
    
  2. أضف الأسطر التالية للسماح بالاتصالات الخارجية:

    listener 1883
    allow_anonymous true
    

    ملحوظة: بالنسبة لبيئات الإنتاج ، قم بإعداد مصادقة المستخدم بدلاً من السماح بالوصول المجهول.

  3. أعد تشغيل خدمة البعوض لتطبيق التغييرات:

    sudo systemctl restart mosquitto
    
  4. اختبر الاتصال من جهاز آخر على نفس الشبكة باستخدام أداة عميل MQTT (على سبيل المثال ، MQTT.FX أو MQTT Explorer).


الخطوة 5: تأمين وسيط MQTT (اختياري)

  1. تمكين مصادقة كلمة المرور:

    sudo mosquitto_passwd -c /etc/mosquitto/passwd <username>
    
    • أدخل وتأكيد كلمة مرور للمستخدم.
  2. قم بتحديث ملف تكوين البعوض لاستخدام ملف كلمة المرور:

    allow_anonymous false
    password_file /etc/mosquitto/passwd
    
  3. أعد تشغيل خدمة البعوض:

    sudo systemctl restart mosquitto
    
  4. اختبر الاتصال باستخدام اسم المستخدم وكلمة المرور.


الخطوة 6: قم بتوصيل أجهزة إنترنت الأشياء إلى وسيط MQTT

  1. لـ ESP8266/ESP32: استخدم Arduino IDE لبرمجة أجهزة إنترنت الأشياء الخاصة بك لنشر/الاشتراك في مواضيع في وسيط Raspberry Pi MQTT الخاص بك.

    #include <ESP8266WiFi.h>
    #include <PubSubClient.h>
    
    const char* ssid = "YourSSID";
    const char* password = "YourPassword";
    const char* mqtt_server = "<raspberry-pi-ip>";
    
    WiFiClient espClient;
    PubSubClient client(espClient);
    
    void setup() {
      WiFi.begin(ssid, password);
      client.setServer(mqtt_server, 1883);
    }
    
    void loop() {
      if (!client.connected()) {
        client.connect("ESPClient");
      }
      client.loop();
      client.publish("test/topic", "Hello from ESP8266!");
      delay(1000);
    }
    
  2. لعملاء البرامج: استخدم mqtt.fx أو mqtt explorer أو python مع paho-mqtt مكتبة.

    import paho.mqtt.client as mqtt
    
    def on_connect(client, userdata, flags, rc):
        print("Connected with result code "+str(rc))
        client.subscribe("test/topic")
    
    def on_message(client, userdata, msg):
        print(msg.topic+" "+str(msg.payload))
    
    client = mqtt.Client()
    client.on_connect = on_connect
    client.on_message = on_message
    
    client.connect("<raspberry-pi-ip>", 1883, 60)
    
    client.loop_forever()
    

استكشاف الأخطاء وإصلاحها

  1. لا يمكن الاتصال بـ MQTT Broker:

    • تأكد من تشغيل البعوض: sudo systemctl status mosquitto
    • تحقق من إعدادات جدار الحماية على Raspberry Pi.
  2. أخطاء المصادقة:

    • تحقق من اسم المستخدم وكلمة المرور في تكوين البعوض وإعداد العميل.
  3. رفض اتصال:

    • تأكد من أن الجهاز على نفس الشبكة مثل Raspberry Pi.
    • تحقق من أن المنفذ 1883 مفتوح.

تطبيقات MQTT

  1. الاتصالات جهاز إنترنت الأشياء
  2. أنظمة أتمتة المنزل
  3. تدفق البيانات في الوقت الحقيقي
  4. المراقبة والتحكم عن بعد

خاتمة

يعد استضافة خادم MQTT على Raspberry Pi وسيلة ممتازة لتمكين التواصل الخفيف والموثوق لمشاريع إنترنت الأشياء. باتباع هذا الدليل ، يمكنك إعداد وتأمين وسيط MoSquitto MQTT ، وتوصيل أجهزة إنترنت الأشياء ، والبدء في بناء تطبيقات قوية. تجربة مع تكوينات مختلفة لاستكشاف الإمكانات الكاملة لـ MQTT!

اترك تعليقًا

Notice an Issue? Have a Suggestion?
If you encounter a problem or have an idea for a new feature, let us know! Report a problem or request a feature here.