5.4 KiB
Контролирайте нощната си лампа през Интернет - Виртуален IoT хардуер и Raspberry Pi
В тази част на урока ще се абонирате за команди, изпратени от MQTT брокер към вашия Raspberry Pi или виртуално IoT устройство.
Абониране за команди
Следващата стъпка е да се абонирате за командите, изпратени от MQTT брокера, и да реагирате на тях.
Задача
Абонирайте се за команди.
-
Отворете проекта за нощната лампа във 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 брокер.
Отказ от отговорност:
Този документ е преведен с помощта на AI услуга за превод Co-op Translator. Въпреки че се стремим към точност, моля, имайте предвид, че автоматизираните преводи може да съдържат грешки или неточности. Оригиналният документ на неговия роден език трябва да се счита за авторитетен източник. За критична информация се препоръчва професионален човешки превод. Ние не носим отговорност за каквито и да било недоразумения или погрешни интерпретации, произтичащи от използването на този превод.