# Управляйте ночником через Интернет - Виртуальное IoT-устройство и Raspberry Pi Устройство IoT должно быть запрограммировано для связи с *test.mosquitto.org* с использованием MQTT, чтобы отправлять телеметрические данные с показаниями датчика света и получать команды для управления светодиодом. В этой части урока вы подключите свой Raspberry Pi или виртуальное IoT-устройство к MQTT-брокеру. ## Установите пакет клиента MQTT Для связи с MQTT-брокером необходимо установить библиотеку MQTT через pip, либо на вашем Raspberry Pi, либо в виртуальной среде, если вы используете виртуальное устройство. ### Задание Установите пакет pip. 1. Откройте проект ночника в VS Code. 1. Если вы используете виртуальное IoT-устройство, убедитесь, что терминал работает в виртуальной среде. Если вы используете Raspberry Pi, виртуальная среда не потребуется. 1. Выполните следующую команду для установки пакета MQTT через pip: ```sh pip3 install paho-mqtt ``` ## Программирование устройства Устройство готово к программированию. ### Задание Напишите код для устройства. 1. Добавьте следующий импорт в начало файла `app.py`: ```python import paho.mqtt.client as mqtt ``` Библиотека `paho.mqtt.client` позволяет вашему приложению общаться через MQTT. 1. Добавьте следующий код после определения датчика света и светодиода: ```python id = '' client_name = id + 'nightlight_client' ``` Замените `` на уникальный идентификатор, который будет использоваться как имя клиента устройства, а позже — для тем, которые это устройство публикует и на которые подписывается. Брокер *test.mosquitto.org* является публичным и используется многими людьми, включая других студентов, работающих над этим заданием. Уникальное имя клиента MQTT и названия тем гарантируют, что ваш код не будет конфликтовать с кодом других пользователей. Вам также понадобится этот идентификатор при создании серверного кода позже в этом задании. > 💁 Вы можете использовать сайт, например [GUIDGen](https://www.guidgen.com), чтобы сгенерировать уникальный идентификатор. `client_name` — это уникальное имя для данного клиента MQTT на брокере. 1. Добавьте следующий код ниже нового кода для создания объекта клиента MQTT и подключения к MQTT-брокеру: ```python mqtt_client = mqtt.Client(client_name) mqtt_client.connect('test.mosquitto.org') mqtt_client.loop_start() print("MQTT connected!") ``` Этот код создает объект клиента, подключается к публичному MQTT-брокеру и запускает цикл обработки, который работает в фоновом потоке, прослушивая сообщения по подписанным темам. 1. Запустите код так же, как вы запускали код из предыдущей части задания. Если вы используете виртуальное IoT-устройство, убедитесь, что приложение CounterFit запущено, а датчик света и светодиод созданы на правильных пинах. ```output (.venv) ➜ nightlight python app.py MQTT connected! Light level: 0 Light level: 0 ``` > 💁 Вы можете найти этот код в папке [code-mqtt/virtual-device](../../../../../1-getting-started/lessons/4-connect-internet/code-mqtt/virtual-device) или [code-mqtt/pi](../../../../../1-getting-started/lessons/4-connect-internet/code-mqtt/pi). 😀 Вы успешно подключили свое устройство к MQTT-брокеру. --- **Отказ от ответственности**: Этот документ был переведен с помощью сервиса автоматического перевода [Co-op Translator](https://github.com/Azure/co-op-translator). Хотя мы стремимся к точности, пожалуйста, учитывайте, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его родном языке следует считать авторитетным источником. Для получения критически важной информации рекомендуется профессиональный перевод человеком. Мы не несем ответственности за любые недоразумения или неправильные интерпретации, возникшие в результате использования данного перевода.