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

91 lines
3.6 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-24T23:09:40+00:00",
"source_file": "1-getting-started/lessons/4-connect-internet/single-board-computer-mqtt.md",
"language_code": "zh"
}
-->
# 通过互联网控制你的夜灯 - 虚拟物联网硬件和树莓派
物联网设备需要通过 MQTT 与 *test.mosquitto.org* 通信,以发送包含光传感器读数的遥测值,并接收控制 LED 的命令。
在本课程的这一部分,你将把树莓派或虚拟物联网设备连接到 MQTT broker。
## 安装 MQTT 客户端包
为了与 MQTT broker 通信,你需要在树莓派或虚拟设备的虚拟环境中安装一个 MQTT 库的 pip 包。
### 任务
安装 pip 包
1. 在 VS Code 中打开夜灯项目。
1. 如果你使用的是虚拟物联网设备,请确保终端正在运行虚拟环境。如果你使用的是树莓派,则无需使用虚拟环境。
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>` 替换为一个唯一的 ID该 ID 将用作此设备客户端的名称,并在后续用于此设备发布和订阅的主题名称。*test.mosquitto.org* broker 是公共的,许多人都在使用,包括其他完成此任务的学生。拥有一个唯一的 MQTT 客户端名称和主题名称可以确保你的代码不会与其他人的代码冲突。在稍后的任务中创建服务器代码时,你也需要使用此 ID。
> 💁 你可以使用像 [GUIDGen](https://www.guidgen.com) 这样的网站生成一个唯一的 ID。
`client_name` 是此 MQTT 客户端在 broker 上的唯一名称。
1. 在这段新代码的下方添加以下代码,以创建一个 MQTT 客户端对象并连接到 MQTT broker
```python
mqtt_client = mqtt.Client(client_name)
mqtt_client.connect('test.mosquitto.org')
mqtt_client.loop_start()
print("MQTT connected!")
```
此代码创建客户端对象,连接到公共 MQTT broker并启动一个处理循环该循环在后台线程中运行监听任何已订阅主题的消息。
1. 以与完成任务的上一部分代码相同的方式运行代码。如果你使用的是虚拟物联网设备,请确保 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 broker。
**免责声明**
本文档使用AI翻译服务 [Co-op Translator](https://github.com/Azure/co-op-translator) 进行翻译。尽管我们努力确保翻译的准确性,但请注意,自动翻译可能包含错误或不准确之处。应以原始语言的文档为权威来源。对于关键信息,建议使用专业人工翻译。因使用本翻译而导致的任何误解或误读,我们概不负责。