通过互联网控制夜灯 - 虚拟物联网硬件和树莓派
在本节课程中,您将从树莓派或虚拟物联网设备向 MQTT broker 发送光照水平的遥测数据。
发布遥测数据
下一步是创建一个包含遥测数据的 JSON 文档,并将其发送到 MQTT broker。
任务
将遥测数据发布到 MQTT broker。
在 VS Code 中打开夜灯项目。
如果您使用的是虚拟物联网设备,请确保终端正在运行虚拟环境。如果您使用的是树莓派,则无需使用虚拟环境。
在
app.py文件顶部添加以下导入:pythonimport jsonjson库用于将遥测数据编码为 JSON 文档。在
client_name声明之后添加以下内容:pythonclient_telemetry_topic = id + '/telemetry'client_telemetry_topic是设备将光照水平发布到的 MQTT 主题。将文件末尾的
while True:循环内容替换为以下内容:pythonwhile True: light = light_sensor.light telemetry = json.dumps({'light' : light}) print("Sending telemetry ", telemetry) mqtt_client.publish(client_telemetry_topic, telemetry) time.sleep(5)此代码将光照水平打包为 JSON 文档并发布到 MQTT broker。然后它会休眠以减少消息发送的频率。
以与之前任务相同的方式运行代码。如果您使用的是虚拟物联网设备,请确保 CounterFit 应用正在运行,并且光传感器和 LED 已在正确的引脚上创建。
text(.venv) ➜ nightlight python app.py MQTT connected! Sending telemetry {"light": 0} Sending telemetry {"light": 0}
💁 您可以在 code-telemetry/virtual-device 文件夹或 code-telemetry/pi 文件夹中找到此代码。
😀 您已成功从设备发送遥测数据。