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-mqtt.md

93 lines
6.4 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "90fb93446e03c38f3c0e4009c2471906",
"translation_date": "2025-08-26T23:18:35+00:00",
"source_file": "1-getting-started/lessons/4-connect-internet/single-board-computer-mqtt.md",
"language_code": "ru"
}
-->
# Управляйте ночником через Интернет - Виртуальное 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 = '<ID>'
client_name = id + 'nightlight_client'
```
Замените `<ID>` на уникальный идентификатор, который будет использоваться как имя клиента устройства, а позже — для тем, которые это устройство публикует и на которые подписывается. Брокер *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). Хотя мы стремимся к точности, пожалуйста, учитывайте, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его родном языке следует считать авторитетным источником. Для получения критически важной информации рекомендуется профессиональный перевод человеком. Мы не несем ответственности за любые недоразумения или неправильные интерпретации, возникшие в результате использования данного перевода.