5.6 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-топик, на который устройство подпишется для получения команд управления светодиодом. -
Добавьте следующий код прямо перед основным циклом, после строки
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
, светодиод включается, в противном случае он выключается.MQTT-клиент подписывается на топик, по которому сервер будет отправлять сообщения, и устанавливает функцию
handle_command
для вызова при получении сообщения.💁 Обработчик
on_message
вызывается для всех топиков, на которые выполнена подписка. Если позже вы напишете код для прослушивания нескольких топиков, вы сможете получить топик, на который было отправлено сообщение, из объектаmessage
, переданного в функцию-обработчик. -
Запустите код так же, как вы запускали код из предыдущей части задания. Если вы используете виртуальное IoT-устройство, убедитесь, что приложение CounterFit запущено, а датчик света и светодиод созданы на правильных пинах.
-
Изменяйте уровень освещенности, который фиксирует ваше физическое или виртуальное устройство. Сообщения, которые принимаются и отправляются, будут отображаться в терминале. Светодиод также будет включаться и выключаться в зависимости от уровня освещенности.
💁 Этот код можно найти в папке code-commands/virtual-device или code-commands/pi.
😀 Вы успешно запрограммировали устройство для обработки команд от MQTT-брокера.
Отказ от ответственности:
Этот документ был переведен с помощью сервиса автоматического перевода Co-op Translator. Хотя мы стремимся к точности, пожалуйста, имейте в виду, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его родном языке следует считать авторитетным источником. Для получения критически важной информации рекомендуется профессиональный перевод человеком. Мы не несем ответственности за любые недоразумения или неправильные интерпретации, возникшие в результате использования данного перевода.