# 通過網絡控制你的夜燈 - 虛擬物聯網硬件與 Raspberry Pi 在本課程的這部分,你將從 Raspberry Pi 或虛擬物聯網設備向 MQTT broker 發送光照水平的遙測數據。 ## 發佈遙測數據 下一步是創建一個包含遙測數據的 JSON 文檔並將其發送到 MQTT broker。 ### 任務 向 MQTT broker 發佈遙測數據。 1. 在 VS Code 中打開夜燈項目。 1. 如果你使用的是虛擬物聯網設備,請確保終端正在運行虛擬環境。如果你使用的是 Raspberry Pi,則不需要使用虛擬環境。 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) 進行翻譯。雖然我們努力確保翻譯的準確性,但請注意,自動翻譯可能包含錯誤或不準確之處。原始文件的母語版本應被視為權威來源。對於關鍵信息,建議使用專業人工翻譯。我們對因使用此翻譯而引起的任何誤解或誤釋不承擔責任。