跳至主要内容

發佈溫度 - 虛擬物聯網硬體和樹莓派

在本課程的這一部分中,你將通過MQTT發佈樹莓派或虛擬物聯網設備檢測到的溫度值,以便稍後用於計算GDD。

發佈溫度

一旦讀取到溫度,就可以通過MQTT發佈到一些“服務器”代碼,該代碼將讀取這些值,並存儲它們以便用於GDD計算。

任務 - 發佈溫度

編程設備以發佈溫度數據。

  1. 如果尚未打開temperature-sensor應用項目,請打開它

  2. 重複你在第4課中所做的步驟來連接MQTT並發送遙測數據,你將使用相同的公共Mosquitto代理。

    這些步驟是:

    • 添加MQTT pip包

    • 添加連接到MQTT代理的代碼

    • 添加發佈遙測數據的代碼

    ⚠️ 如有需要,請參考連接MQTT的說明發送遙測數據的說明從第4課。

  3. 確保client_name反映此項目的名稱:

    client_name = id + 'temperature_sensor_client'
  4. 對於遙測數據,不是發送光值,而是發送從DHT傳感器讀取的溫度值,該值在JSON文檔中的屬性名為temperature

    _, temp = sensor.read()
    telemetry = json.dumps({'temperature' : temp})
  5. 溫度值不需要經常讀取 - 它在短時間內不會有太大變化,因此將time.sleep設置為10分鐘:

    time.sleep(10 * 60);

    💁 sleep函數以秒為單位,因此為了使其更易於閱讀,該值作為計算結果傳遞。1分鐘有60秒,因此10 x(1分鐘有60秒)給出10分鐘的延遲。

  6. 以與運行作業前一部分代碼相同的方式運行代碼。如果你使用的是虛擬物聯網設備,請確保CounterFit應用正在運行,並且已在正確的引腳上創建了濕度和溫度傳感器。

    pi@raspberrypi:~/temperature-sensor $ python3 app.py
    MQTT connected!
    Sending telemetry {"temperature": 25}
    Sending telemetry {"temperature": 25}

💁 你可以在code-publish-temperature/virtual-device文件夾或code-publish-temperature/pi文件夾中找到此代碼。

😀 你已成功從設備發佈溫度作為遙測數據。