3.6 KiB
通过互联网控制你的夜灯 - 虚拟物联网硬件和树莓派
物联网设备需要通过 MQTT 与 test.mosquitto.org 通信,以发送包含光传感器读数的遥测值,并接收控制 LED 的命令。
在本课程的这一部分,你将把树莓派或虚拟物联网设备连接到 MQTT broker。
安装 MQTT 客户端包
为了与 MQTT broker 通信,你需要在树莓派或虚拟设备的虚拟环境中安装一个 MQTT 库的 pip 包。
任务
安装 pip 包
-
在 VS Code 中打开夜灯项目。
-
如果你使用的是虚拟物联网设备,请确保终端正在运行虚拟环境。如果你使用的是树莓派,则无需使用虚拟环境。
-
运行以下命令以安装 MQTT pip 包:
pip3 install paho-mqtt
编写设备代码
设备已经准备好进行编码。
任务
编写设备代码。
-
在
app.py
文件顶部添加以下导入:import paho.mqtt.client as mqtt
paho.mqtt.client
库允许你的应用通过 MQTT 进行通信。 -
在光传感器和 LED 的定义之后添加以下代码:
id = '<ID>' client_name = id + 'nightlight_client'
将
<ID>
替换为一个唯一的 ID,该 ID 将用作此设备客户端的名称,并在后续用于此设备发布和订阅的主题名称。test.mosquitto.org broker 是公共的,许多人都在使用,包括其他完成此任务的学生。拥有一个唯一的 MQTT 客户端名称和主题名称可以确保你的代码不会与其他人的代码冲突。在稍后的任务中创建服务器代码时,你也需要使用此 ID。💁 你可以使用像 GUIDGen 这样的网站生成一个唯一的 ID。
client_name
是此 MQTT 客户端在 broker 上的唯一名称。 -
在这段新代码的下方添加以下代码,以创建一个 MQTT 客户端对象并连接到 MQTT broker:
mqtt_client = mqtt.Client(client_name) mqtt_client.connect('test.mosquitto.org') mqtt_client.loop_start() print("MQTT connected!")
此代码创建客户端对象,连接到公共 MQTT broker,并启动一个处理循环,该循环在后台线程中运行,监听任何已订阅主题的消息。
-
以与完成任务的上一部分代码相同的方式运行代码。如果你使用的是虚拟物联网设备,请确保 CounterFit 应用正在运行,并且光传感器和 LED 已在正确的引脚上创建。
(.venv) ➜ nightlight python app.py MQTT connected! Light level: 0 Light level: 0
💁 你可以在 code-mqtt/virtual-device 文件夹或 code-mqtt/pi 文件夹中找到此代码。
😀 你已成功将设备连接到 MQTT broker。
免责声明:
本文档使用AI翻译服务 Co-op Translator 进行翻译。尽管我们努力确保翻译的准确性,但请注意,自动翻译可能包含错误或不准确之处。应以原始语言的文档为权威来源。对于关键信息,建议使用专业人工翻译。因使用本翻译而导致的任何误解或误读,我们概不负责。