You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
IoT-For-Beginners/translations/fa/1-getting-started/lessons/4-connect-internet/single-board-computer-comma...

4.9 KiB

کنترل چراغ خواب خود از طریق اینترنت - سخت‌افزار مجازی IoT و Raspberry Pi

در این بخش از درس، شما به دستورات ارسال‌شده از یک MQTT broker به Raspberry Pi یا دستگاه IoT مجازی خود اشتراک خواهید کرد.

اشتراک در دستورات

مرحله بعدی اشتراک در دستورات ارسال‌شده از MQTT broker و پاسخ به آن‌ها است.

وظیفه

اشتراک در دستورات.

  1. پروژه چراغ خواب را در VS Code باز کنید.

  2. اگر از یک دستگاه IoT مجازی استفاده می‌کنید، مطمئن شوید که ترمینال محیط مجازی را اجرا می‌کند. اگر از Raspberry Pi استفاده می‌کنید، نیازی به استفاده از محیط مجازی ندارید.

  3. کد زیر را بعد از تعریف‌های client_telemetry_topic اضافه کنید:

    server_command_topic = id + '/commands'
    

    server_command_topic موضوع MQTT است که دستگاه برای دریافت دستورات LED در آن اشتراک خواهد کرد.

  4. کد زیر را درست بالای حلقه اصلی، بعد از خط 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 که به تابع هندلر ارسال می‌شود، دریافت کنید.

  5. کد را به همان روشی که کد بخش قبلی تکلیف را اجرا کردید، اجرا کنید. اگر از یک دستگاه IoT مجازی استفاده می‌کنید، مطمئن شوید که برنامه CounterFit در حال اجرا است و حسگر نور و LED در پین‌های صحیح ایجاد شده‌اند.

  6. سطح نور تشخیص داده‌شده توسط دستگاه فیزیکی یا مجازی خود را تنظیم کنید. پیام‌های دریافت‌شده و دستورات ارسال‌شده در ترمینال نوشته خواهند شد. LED نیز بسته به سطح نور روشن و خاموش خواهد شد.

💁 شما می‌توانید این کد را در پوشه code-commands/virtual-device یا پوشه code-commands/pi پیدا کنید.

😀 شما با موفقیت دستگاه خود را برای پاسخ به دستورات از یک MQTT broker کدنویسی کردید.

سلب مسئولیت:
این سند با استفاده از سرویس ترجمه هوش مصنوعی Co-op Translator ترجمه شده است. در حالی که ما تلاش می‌کنیم دقت را حفظ کنیم، لطفاً توجه داشته باشید که ترجمه‌های خودکار ممکن است شامل خطاها یا نادرستی‌ها باشند. سند اصلی به زبان اصلی آن باید به عنوان منبع معتبر در نظر گرفته شود. برای اطلاعات حساس، توصیه می‌شود از ترجمه حرفه‌ای انسانی استفاده کنید. ما مسئولیتی در قبال سوء تفاهم‌ها یا تفسیرهای نادرست ناشی از استفاده از این ترجمه نداریم.