# Контролирайте нощната си лампа през Интернет - Виртуален IoT хардуер и Raspberry Pi В тази част на урока ще се абонирате за команди, изпратени от MQTT брокер към вашия Raspberry Pi или виртуално IoT устройство. ## Абониране за команди Следващата стъпка е да се абонирате за командите, изпратени от MQTT брокера, и да реагирате на тях. ### Задача Абонирайте се за команди. 1. Отворете проекта за нощната лампа във VS Code. 1. Ако използвате виртуално IoT устройство, уверете се, че терминалът работи във виртуалната среда. Ако използвате Raspberry Pi, няма да използвате виртуална среда. 1. Добавете следния код след дефинициите на `client_telemetry_topic`: ```python server_command_topic = id + '/commands' ``` `server_command_topic` е MQTT темата, за която устройството ще се абонира, за да получава команди за LED. 1. Добавете следния код точно над основния цикъл, след реда `mqtt_client.loop_start()`: ```python 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`, предаден на функцията обработчик. 1. Стартирайте кода по същия начин, както стартирахте кода от предишната част на задачата. Ако използвате виртуално IoT устройство, уверете се, че приложението CounterFit работи и че светлинният сензор и LED са създадени на правилните пинове. 1. Регулирайте нивата на светлина, засечени от вашето физическо или виртуално устройство. Получените съобщения и изпратените команди ще бъдат изписани в терминала. LED светлината също ще се включва и изключва в зависимост от нивото на светлината. > 💁 Можете да намерите този код в папката [code-commands/virtual-device](../../../../../1-getting-started/lessons/4-connect-internet/code-commands/virtual-device) или в папката [code-commands/pi](../../../../../1-getting-started/lessons/4-connect-internet/code-commands/pi). 😀 Успешно програмирахте устройството си да реагира на команди от MQTT брокер. --- **Отказ от отговорност**: Този документ е преведен с помощта на AI услуга за превод [Co-op Translator](https://github.com/Azure/co-op-translator). Въпреки че се стремим към точност, моля, имайте предвид, че автоматизираните преводи може да съдържат грешки или неточности. Оригиналният документ на неговия роден език трябва да се счита за авторитетен източник. За критична информация се препоръчва професионален човешки превод. Ние не носим отговорност за каквито и да било недоразумения или погрешни интерпретации, произтичащи от използването на този превод.