跳至主要内容

通過互聯網控制你的夜燈 - 虛擬物聯網硬件和樹莓派

在本課程的這一部分,你將從你的樹莓派或虛擬物聯網設備向 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 文件夾中找到此代碼。

😀 你已成功從設備發送遙測數據。