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/ru/1-getting-started/lessons/4-connect-internet/single-board-computer-comma...

5.6 KiB

Управляйте ночником через Интернет - Виртуальное IoT-устройство и Raspberry Pi

В этой части урока вы научитесь подписываться на команды, отправляемые с MQTT-брокера на ваш Raspberry Pi или виртуальное IoT-устройство.

Подписка на команды

Следующий шаг — подписаться на команды, отправляемые с MQTT-брокера, и реагировать на них.

Задание

Подпишитесь на команды.

  1. Откройте проект ночника в VS Code.

  2. Если вы используете виртуальное IoT-устройство, убедитесь, что терминал работает в виртуальной среде. Если вы используете Raspberry Pi, виртуальная среда не потребуется.

  3. Добавьте следующий код после определения client_telemetry_topic:

    server_command_topic = id + '/commands'
    

    Переменная server_command_topic — это MQTT-топик, на который устройство подпишется для получения команд управления светодиодом.

  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, светодиод включается, в противном случае он выключается.

    MQTT-клиент подписывается на топик, по которому сервер будет отправлять сообщения, и устанавливает функцию handle_command для вызова при получении сообщения.

    💁 Обработчик on_message вызывается для всех топиков, на которые выполнена подписка. Если позже вы напишете код для прослушивания нескольких топиков, вы сможете получить топик, на который было отправлено сообщение, из объекта message, переданного в функцию-обработчик.

  5. Запустите код так же, как вы запускали код из предыдущей части задания. Если вы используете виртуальное IoT-устройство, убедитесь, что приложение CounterFit запущено, а датчик света и светодиод созданы на правильных пинах.

  6. Изменяйте уровень освещенности, который фиксирует ваше физическое или виртуальное устройство. Сообщения, которые принимаются и отправляются, будут отображаться в терминале. Светодиод также будет включаться и выключаться в зависимости от уровня освещенности.

💁 Этот код можно найти в папке code-commands/virtual-device или code-commands/pi.

😀 Вы успешно запрограммировали устройство для обработки команд от MQTT-брокера.


Отказ от ответственности:
Этот документ был переведен с помощью сервиса автоматического перевода Co-op Translator. Хотя мы стремимся к точности, пожалуйста, имейте в виду, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его родном языке следует считать авторитетным источником. Для получения критически важной информации рекомендуется профессиональный перевод человеком. Мы не несем ответственности за любые недоразумения или неправильные интерпретации, возникшие в результате использования данного перевода.