# 通过互联网控制夜灯 - 虚拟物联网硬件和树莓派 在本节课程中,您将从树莓派或虚拟物联网设备向 MQTT broker 发送光照水平的遥测数据。 ## 发布遥测数据 下一步是创建一个包含遥测数据的 JSON 文档,并将其发送到 MQTT broker。 ### 任务 将遥测数据发布到 MQTT broker。 1. 在 VS Code 中打开夜灯项目。 1. 如果您使用的是虚拟物联网设备,请确保终端正在运行虚拟环境。如果您使用的是树莓派,则无需使用虚拟环境。 1. 在 `app.py` 文件顶部添加以下导入: ```python import json ``` `json` 库用于将遥测数据编码为 JSON 文档。 1. 在 `client_name` 声明之后添加以下内容: ```python client_telemetry_topic = id + '/telemetry' ``` `client_telemetry_topic` 是设备将光照水平发布到的 MQTT 主题。 1. 将文件末尾的 `while True:` 循环内容替换为以下内容: ```python 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 broker。然后它会休眠以减少消息发送的频率。 1. 以与之前任务相同的方式运行代码。如果您使用的是虚拟物联网设备,请确保 CounterFit 应用正在运行,并且光传感器和 LED 已在正确的引脚上创建。 ```output (.venv) ➜ nightlight python app.py MQTT connected! Sending telemetry {"light": 0} Sending telemetry {"light": 0} ``` > 💁 您可以在 [code-telemetry/virtual-device](../../../../../1-getting-started/lessons/4-connect-internet/code-telemetry/virtual-device) 文件夹或 [code-telemetry/pi](../../../../../1-getting-started/lessons/4-connect-internet/code-telemetry/pi) 文件夹中找到此代码。 😀 您已成功从设备发送遥测数据。 **免责声明**: 本文档使用AI翻译服务[Co-op Translator](https://github.com/Azure/co-op-translator)进行翻译。尽管我们努力确保翻译的准确性,但请注意,自动翻译可能包含错误或不准确之处。应以原始语言的文档作为权威来源。对于关键信息,建议使用专业人工翻译。因使用本翻译而引起的任何误解或误读,我们概不负责。