通过互联网控制夜灯 - 虚拟物联网硬件和Raspberry Pi 在本课程的部分内容中,您将从Raspberry Pi或虚拟物联网设备向MQTT代理发送光级遥测数据。 发布遥测数据 接下来的步骤是创建一个包含遥测数据的JSON文档,并将其发送到MQTT代理。 任务 向MQTT代理发布遥测数据。 在VS Code中打开夜灯项目。 如果您使用的是虚拟物联网设备,请确保终端正在运行虚拟环境。如果您使用的是Raspberry Pi,则不需要使用虚拟环境。 向 文件顶部添加以下导入: 声明 library is used to encode the telemetry as a JSON document.
在本课程的部分内容中,您将从Raspberry Pi或虚拟物联网设备向MQTT代理发送光级遥测数据。
接下来的步骤是创建一个包含遥测数据的JSON文档,并将其发送到MQTT代理。
向MQTT代理发布遥测数据。
在VS Code中打开夜灯项目。
如果您使用的是虚拟物联网设备,请确保终端正在运行虚拟环境。如果您使用的是Raspberry Pi,则不需要使用虚拟环境。
向app.py文件顶部添加以下导入:
import json
声明json library is used to encode the telemetry as a JSON document.
Add the following after the client_name:
client_telemetry_topic = id + '/telemetry'
在文件末尾的client_telemetry_topic is the MQTT topic the device will publish light levels to.
Replace the contents of the while True:循环中添加以下内容:
while 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代理。然后它会休眠以减少消息发送的频率。
按照之前部分作业中的方式运行代码。如果您使用的是虚拟物联网设备,请确保CounterFit应用程序正在运行,并且光传感器和LED已正确地创建在相应的引脚上。
(.venv) ➜ nightlight python app.py MQTT connected! Sending telemetry {"light": 0} Sending telemetry {"light": 0}
您可以在code-telemetry/virtual-device文件夹或code-telemetry/pi文件夹中找到此代码。
您已经成功地从设备发送了遥测数据。
声明:
本文件灏天文库团队进行了翻译。尽管我们力求准确,但请注意,翻译可能包含错误或不准确之处。原文档以其原始语言为准。我们不对因使用此翻译而产生的任何误解或误译负责。