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