簡體   English   中英

如何在 IoT Core 中長期使用 MQTT?

[英]How can I use MQTT long term in IoT Core?

所以首先,我真正想要實現的是:我想知道物聯網設備何時停止工作(即失去連接、關閉,基本上它不再與 IoT Core 通信)。 我似乎無法在 GCP 上找到這個的實現。

我有一個樹莓派作為我的物聯網設備,我已經在物聯網核心上配置了它,我在某處讀到,因為這沒有實現,解決它的方法是創建一個日志接收器,只要有連接/斷開連接,它就會激活雲 function日志。 這將達到我的目的,我已經實施了這個接收器和雲 function 來提醒我。

我一直在關注本指南以連接到 MQTT。 然而,按照解釋的方式,他們將其設置為每當超過 JWT 的過期時間時,他們就會斷開客戶端連接並創建一個新客戶端來重新更新 JWT。這樣我就可以每當需要更新此客戶端時,都會收到連接/斷開連接的警報。 因此,我無法將真正的問題與 MQTT 客戶端的續訂區分開來。

在同一指南中,我看到他們提到了 MQTT 長期或 LTS,他們聲稱通過這種方式您可以設置一次客戶端並通過它在支持的時間內持續通信直到 2030 年。這似乎是什么我真的很想,但我無法以這種方式連接,他們除了說主機名應該是mqtt.2030.ltsapis.goog並使用與完整根目錄不同的主證書和備份證書外,沒有解釋CA 來自第一種方法。

我嘗試使用基本相同的過程來設置客戶端:

    client = mqtt.Client(client_id=client_id)

    # With Google Cloud IoT Core, the username field is ignored, and the
    # password field is used to transmit a JWT to authorize the device.
    client.username_pw_set(
        username='unused',
        password=create_jwt(project_id, private_key_file, algorithm))

    # Enable SSL/TLS support.
    client.tls_set(ca_certs=ca_certs, tls_version=ssl.PROTOCOL_TLSv1_2) 

但是更改主機名並為其提供主要證書,我會在其中為其提供完整的 ca_certs,但它不會接受它,而且我不確定如何使用主要和備份證書進行其他操作。 我正在查看有關 tls_set 的文檔,但我看不到這些 go 的位置或它們與完整的 ca 證書有何不同。 除了本指南之外,我還沒有看到任何其他示例。

我希望能夠連接到這個 MQTT LTS,這樣我就可以保持連接,而不必不斷地更新客戶端。

長期 MQTT 域讓您可以長時間使用 LTS配置,而不是連接。

正如您提到的,對於您的用例,解決方案是 activate and use device logs 設備與 IoT Core 斷開連接時會觸發其中一個事件,您可以使用該事件觸發警報。

請記住,連接的時間限制是出於安全目的而設置的,客戶端應該更新連接。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM