4.9 KiB
کنترل چراغ خواب خود از طریق اینترنت - سختافزار مجازی IoT و Raspberry Pi
در این بخش از درس، شما به دستورات ارسالشده از یک MQTT broker به Raspberry Pi یا دستگاه IoT مجازی خود اشتراک خواهید کرد.
اشتراک در دستورات
مرحله بعدی اشتراک در دستورات ارسالشده از MQTT broker و پاسخ به آنها است.
وظیفه
اشتراک در دستورات.
-
پروژه چراغ خواب را در VS Code باز کنید.
-
اگر از یک دستگاه IoT مجازی استفاده میکنید، مطمئن شوید که ترمینال محیط مجازی را اجرا میکند. اگر از Raspberry Pi استفاده میکنید، نیازی به استفاده از محیط مجازی ندارید.
-
کد زیر را بعد از تعریفهای
client_telemetry_topic
اضافه کنید:server_command_topic = id + '/commands'
server_command_topic
موضوع MQTT است که دستگاه برای دریافت دستورات LED در آن اشتراک خواهد کرد. -
کد زیر را درست بالای حلقه اصلی، بعد از خط
mqtt_client.loop_start()
اضافه کنید:def handle_command(client, userdata, message): payload = json.loads(message.payload.decode()) print("Message received:", payload) if payload['led_on']: led.on() else: led.off() mqtt_client.subscribe(server_command_topic) mqtt_client.on_message = handle_command
این کد یک تابع به نام
handle_command
تعریف میکند که یک پیام را بهعنوان یک سند JSON میخواند و مقدار ویژگیled_on
را بررسی میکند. اگر مقدار آنTrue
باشد، LED روشن میشود، در غیر این صورت خاموش میشود.کلاینت MQTT در موضوعی که سرور پیامها را ارسال خواهد کرد اشتراک میکند و تابع
handle_command
را تنظیم میکند تا هنگام دریافت پیام فراخوانی شود.💁 هندلر
on_message
برای تمام موضوعاتی که در آنها اشتراک دارید فراخوانی میشود. اگر بعداً کدی بنویسید که به چندین موضوع گوش دهد، میتوانید موضوعی که پیام به آن ارسال شده است را از شیءmessage
که به تابع هندلر ارسال میشود، دریافت کنید. -
کد را به همان روشی که کد بخش قبلی تکلیف را اجرا کردید، اجرا کنید. اگر از یک دستگاه IoT مجازی استفاده میکنید، مطمئن شوید که برنامه CounterFit در حال اجرا است و حسگر نور و LED در پینهای صحیح ایجاد شدهاند.
-
سطح نور تشخیص دادهشده توسط دستگاه فیزیکی یا مجازی خود را تنظیم کنید. پیامهای دریافتشده و دستورات ارسالشده در ترمینال نوشته خواهند شد. LED نیز بسته به سطح نور روشن و خاموش خواهد شد.
💁 شما میتوانید این کد را در پوشه code-commands/virtual-device یا پوشه code-commands/pi پیدا کنید.
😀 شما با موفقیت دستگاه خود را برای پاسخ به دستورات از یک MQTT broker کدنویسی کردید.
سلب مسئولیت:
این سند با استفاده از سرویس ترجمه هوش مصنوعی Co-op Translator ترجمه شده است. در حالی که ما تلاش میکنیم دقت را حفظ کنیم، لطفاً توجه داشته باشید که ترجمههای خودکار ممکن است شامل خطاها یا نادرستیها باشند. سند اصلی به زبان اصلی آن باید به عنوان منبع معتبر در نظر گرفته شود. برای اطلاعات حساس، توصیه میشود از ترجمه حرفهای انسانی استفاده کنید. ما مسئولیتی در قبال سوء تفاهمها یا تفسیرهای نادرست ناشی از استفاده از این ترجمه نداریم.