- المكونات مطلوبة
- مخطط الرسم البياني
- تثبيت MQTT Cloud Libraries على Raspberry Pi
- شرح الترميز للتحكم في Raspberry Pi GPIO باستخدام MQTT
ناقشنا في البرنامج التعليمي السابق بروتوكول MQTT وقمنا بتثبيت خادم MQTT المحلي على Raspberry Pi الخاص بنا للتحكم في GPIO محليًا. لكن عيب خادم MQTT المحلي هو أننا لا نستطيع التحكم في GPIOs من أي مكان في العالم ، فهو يوفر الخدمات محليًا فقط. ولكن إذا كان خادم MQTT مستضافًا على بعض السحابة ، فيمكن التحكم في أي أجهزة متصلة بـ Raspberry Pi على مستوى العالم.
هنا ، في هذا البرنامج التعليمي ، سوف نستخدم Adafruit IO كوسيط MQTT للتحكم في جهاز AC متصل بـ Raspberry Pi GPIO. تحقق أيضًا من البرامج التعليمية الأخرى لأتمتة المنزل التي يتم التحكم فيها عن طريق إنترنت الأشياء:
- أتمتة المنزل التي يتم التحكم فيها بالصوت على أساس IOT باستخدام ESP8266 وتطبيق Android
- التحكم في أتمتة المنزل باستخدام الهاتف الذكي باستخدام Arduino
- أتمتة المنزل القائمة على إنترنت الأشياء والتي يتم التحكم فيها عبر الإنترنت باستخدام متحكم PIC و Adafruit IO
- أتمتة المنزل القائمة على إنترنت الأشياء والتي يتم التحكم فيها عبر الويب باستخدام Raspberry Pi
- أتمتة المنزل التي يتم التحكم فيها بالصوت من Google باستخدام DIY Arduino Wi-Fi Shield
المكونات مطلوبة
- Raspberry Pi مع Raspbian Stretch مثبتة فيه.
- وحدة الترحيل
- مصباح
- أسلاك توصيل
هنا ، سوف نستخدم SSH للوصول إلى Raspberry Pi على الكمبيوتر المحمول. يمكنك استخدام اتصال VNC أو Remote Desktop على الكمبيوتر المحمول ، أو يمكنك توصيل Raspberry pi بشاشة. تعرف على المزيد حول إعداد Raspberry Pi بدون رأس هنا بدون شاشة.
مخطط الرسم البياني
مخطط الدائرة لهذه الأجهزة المنزلية التي يتم التحكم فيها بإنترنت الأشياء مع سحابة MQTT و Raspberry Pi بسيط ، ما عليك سوى توصيل المصباح بوحدة الترحيل في GPIO pin 35 من Raspberry Pi.
تثبيت MQTT Cloud Libraries على Raspberry Pi
هنا يتم استخدام منصة Adafruit IO مع Raspberry Pi كوسيط MQTT. نظرًا لأننا استخدمنا منصة Adafruit IO عدة مرات في دروسنا السابقة وبالمثل يمكننا استخدامها في Raspberry Pi.
ما عليك سوى إنشاء حساب على منصة Adafruit IO وإنشاء موجز ، إذا كنت لا تعرف كيفية إنشاء موجز وتخصيص لوحة معلومات Adafruit ، فاتبع الرابط.
بعد إنشاء لوحة القيادة ، قم بتثبيت بعض المكتبات في Raspberry Pi لتبدأ مع MQTT.
1. أولاً ، قم بتحديث Pi و Python بإصدار الأوامر التالية
sudo apt-get update sudo apt-get Upgrade sudo pip3 install - ترقية setuptools
2. الآن ، قم بتثبيت مكتبات Rpi.gpio و Adafruit باستخدام الأوامر التالية
sudo pip3 تثبيت RPI.GPIO sudo pip3 تثبيت adafruit-blinka
3. قم بتثبيت مكتبة Adafruit IO باستخدام الأمر أدناه
sudo pip3 تثبيت adafruit-io
4. استنساخ أمثلة adafruit من github باستخدام الأمر أدناه
استنساخ بوابة https://github.com/adafruit/Adafruit_IO_Python.git
5. ثم انتقل إلى مجلد الأمثلة عن طريق إدخال الأمر التالي في الجهاز:
cd Adafruit_IO_Python / أمثلة / أساسيات
إذا لم تكن متأكدًا من الدليل الذي تتواجد فيه ، فيمكنك التحقق من ذلك عن طريق تشغيل pwd.
6. لجميع الأمثلة في هذا المجلد ، ستحتاج إلى تعيين ADAFRUIT_IO_KEY و ADAFRUIT_IO_USERNAME ، والتي يمكن العثور عليها من لوحة معلومات Adafruit. كما هو مبين أدناه
قم بتبديل الزر الموجود على لوحة معلومات Adafruit IO ، وسترى ما يلي في محطة Pi الخاصة بك.
7. الآن ، افتح ملف subscribe.py باستخدام محرر nano . اكتب الأمر التالي لفتحه
sudo نانو Subscribe.py
يتعين علينا تعديل هذا البرنامج للتحكم في أي GPIO من لوحة القيادة.
شرح الترميز للتحكم في Raspberry Pi GPIO باستخدام MQTT
أولاً ، قم باستيراد جميع المكتبات المطلوبة لاستخدام دبابيس GPIO وعميل Adafruit MQTT.
استيراد RPi.GPIO مثل GPIO استيراد sys من Adafruit_IO استيراد MQTTClient
الآن ، اضبط وضع GPIO وحدد رقم دبوس LED وقم بتعيينه كإخراج.
GPIO.setmode (GPIO.BOARD) GPIO.setwarnings (False) ledPin = 12 GPIO.setup (ledPin ، GPIO.OUT)
بعد ذلك ، يتعين علينا تعيين مفتاح AIO واسم المستخدم اللذين وجدناهما أثناء إنشاء لوحة القيادة.
ADAFRUIT_IO_KEY = "YOUR_AIO_KEY" ADAFRUIT_IO_USERNAME = "YOUR_AIO_USERNAME"
أدخل اسم الخلاصة الذي قدمته لتشغيل وإطفاء الضوء. هنا ، إنه "نور".
FEED_ID = "خفيف"
الآن ، حدد الوظيفة التي سيتم استدعاؤها عندما يكون هناك حدث. لذلك ، سنقوم بالاشتراك في الخلاصة باستخدام client.subscribe (FEED_ID)
def متصل (العميل): client.subscribe (FEED_ID) طباعة ("في انتظار بيانات التغذية…")
بعد الاشتراك في الخلاصة ، يتعين علينا التحقق من القيمة الجديدة وتخزينها في متغير الحمولة . لهذه الرسالة وظيفة تسمى. لذلك ، عندما يكون هناك "1" في متغير الحمولة النافعة ، اجعل دبوس LED مرتفعًا وللحالة "0" اجعله منخفضًا.
def message (client، feed_id، payload): print (تلقت "Feed {0} قيمة جديدة: {1}". تنسيق (feed_id، payload)) إذا كانت الحمولة == 1: GPIO.output (ledPin، GPIO.HIGH) وإلا: GPIO.output (ledPin ، GPIO.LOW)
الآن ، قم بإنشاء عميل MQTT للاتصال بمنصة Adafruit IO وإرسال الرسائل جيئة وذهابا.
العميل = MQTTClient (ADAFRUIT_IO_USERNAME ، ADAFRUIT_IO_KEY) client.on_connect = عميل متصل .on_disconnect = غير متصل
أيضًا ، احرص على المسافة البادئة المناسبة في الكود وإلا فسيظهر خطأ. يتم إعطاء رمز Python الكامل في نهاية البرنامج التعليمي.
أخيرًا ، احفظ البرنامج باستخدام ctrl + x واضغط على Enter. الآن ، علينا تشغيل البرنامج النصي للاشتراك في الرسائل. لذلك في المحطة اكتب python subscribe.py واضغط على enter.
python subscribe.py
سترى رسالة في انتظار بيانات التغذية … كما هو موضح أدناه لقطة.
الآن ، تأكد من توصيل وحدة الترحيل بدبوس GPIO الخاص بـ Raspberry Pi ثم انتقل إلى لوحة معلومات Adafruit IO وقم بتغيير تغذية الضوء. و يجب أن تتحول لمبة في حين "1" وتلقى إيقاف عندما "0" تلقي كما هو مبين أدناه.
بهذه الطريقة يمكننا التحكم في أي جهاز من أي مكان في العالم باستخدام Raspberry Pi و MQTT cloud