|
|
<!--
|
|
|
CO_OP_TRANSLATOR_METADATA:
|
|
|
{
|
|
|
"original_hash": "90fb93446e03c38f3c0e4009c2471906",
|
|
|
"translation_date": "2025-08-28T10:15:11+00:00",
|
|
|
"source_file": "1-getting-started/lessons/4-connect-internet/single-board-computer-mqtt.md",
|
|
|
"language_code": "bg"
|
|
|
}
|
|
|
-->
|
|
|
# Контролирайте нощната си лампа през Интернет - Виртуален IoT хардуер и Raspberry Pi
|
|
|
|
|
|
IoT устройството трябва да бъде програмирано да комуникира с *test.mosquitto.org* чрез MQTT, за да изпраща телеметрични стойности с показанията на светлинния сензор и да получава команди за управление на LED.
|
|
|
|
|
|
В тази част от урока ще свържете вашия Raspberry Pi или виртуално IoT устройство към MQTT брокер.
|
|
|
|
|
|
## Инсталирайте MQTT клиентския пакет
|
|
|
|
|
|
За да комуникирате с MQTT брокера, трябва да инсталирате библиотека за MQTT чрез pip пакет, или на вашия 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. Добавете следния код след дефинициите на светлинния сензор и LED:
|
|
|
|
|
|
```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 работи и че светлинният сензор и LED са създадени на правилните пинове.
|
|
|
|
|
|
```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 брокер.
|
|
|
|
|
|
---
|
|
|
|
|
|
**Отказ от отговорност**:
|
|
|
Този документ е преведен с помощта на AI услуга за превод [Co-op Translator](https://github.com/Azure/co-op-translator). Въпреки че се стремим към точност, моля, имайте предвид, че автоматизираните преводи може да съдържат грешки или неточности. Оригиналният документ на неговия роден език трябва да се счита за авторитетен източник. За критична информация се препоръчва професионален човешки превод. Ние не носим отговорност за недоразумения или погрешни интерпретации, произтичащи от използването на този превод. |