You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
IoT-For-Beginners/translations/zh/1-getting-started/lessons/4-connect-internet/single-board-computer-telem...

2.7 KiB

通过互联网控制夜灯 - 虚拟物联网硬件和树莓派

在本节课程中,您将从树莓派或虚拟物联网设备向 MQTT broker 发送光照水平的遥测数据。

发布遥测数据

下一步是创建一个包含遥测数据的 JSON 文档,并将其发送到 MQTT broker。

任务

将遥测数据发布到 MQTT broker。

  1. 在 VS Code 中打开夜灯项目。

  2. 如果您使用的是虚拟物联网设备,请确保终端正在运行虚拟环境。如果您使用的是树莓派,则无需使用虚拟环境。

  3. app.py 文件顶部添加以下导入:

    import json
    

    json 库用于将遥测数据编码为 JSON 文档。

  4. client_name 声明之后添加以下内容:

    client_telemetry_topic = id + '/telemetry'
    

    client_telemetry_topic 是设备将光照水平发布到的 MQTT 主题。

  5. 将文件末尾的 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 broker。然后它会休眠以减少消息发送的频率。

  6. 以与之前任务相同的方式运行代码。如果您使用的是虚拟物联网设备,请确保 CounterFit 应用正在运行,并且光传感器和 LED 已在正确的引脚上创建。

    (.venv) ➜  nightlight python app.py 
    MQTT connected!
    Sending telemetry  {"light": 0}
    Sending telemetry  {"light": 0}
    

💁 您可以在 code-telemetry/virtual-device 文件夹或 code-telemetry/pi 文件夹中找到此代码。

😀 您已成功从设备发送遥测数据。

免责声明
本文档使用AI翻译服务Co-op Translator进行翻译。尽管我们努力确保翻译的准确性,但请注意,自动翻译可能包含错误或不准确之处。应以原始语言的文档作为权威来源。对于关键信息,建议使用专业人工翻译。因使用本翻译而引起的任何误解或误读,我们概不负责。