共用方式為


監視裝置連線狀態

Azure IoT 中樞 支援數種方法來監視裝置的狀態。 本文提供不同的監視方法,並提供指引來協助您選擇IoT解決方案的最佳選項。

下表介紹三種方式來監視您的裝置連線狀態:

方法 狀態頻率 成本 努力建置
裝置對應項 connectionState 屬性 間歇性
Event Grid 60 秒鐘
自定義裝置活動訊號模式 自訂

由於其可靠性、低成本且易於使用,因此建議事件方格作為大多數客戶的慣用監視解決方案。

不過,使用事件方格進行監視有某些限制,可能會取消某些IoT解決方案的資格。 使用本文來瞭解每個選項的優點和限制。

裝置對應項 connectionState

每個 IoT 中樞 裝置身分識別都包含名為 connectionState 的屬性,該屬性會報告已連線中斷連線。 此屬性代表 IoT 中樞 對裝置連線狀態的瞭解。

線上狀態屬性有數個限制:

  • 僅針對使用 MQTT 或 AMQP 的裝置更新連線狀態。
  • 此屬性的更新依賴通訊協定層級 Ping,而且可能會延遲多達五分鐘。

基於這些原因,我們建議您只在開發和偵錯期間使用 connectionState 欄位。 IoT 解決方案不應該在執行階段查詢該欄位。 例如,傳送雲端到裝置的訊息或簡訊前,請勿查詢 connectionState 欄位,檢查裝置是否連線。

Event Grid

我們建議事件方格作為大多數客戶的慣用監視解決方案。

若要取得警示並監視裝置連線狀態,請在事件方格上訂閱 deviceConnecteddeviceDisconnected 事件。

使用下列文章瞭解如何在IoT解決方案中整合裝置連線和中斷連線的事件:

裝置線上狀態事件適用於使用 MQTT 或 AMQP 通訊協定連線的裝置,或使用透過 WebSocket 的其中一種通訊協定。 僅使用 HTTPS 提出的要求不會觸發裝置線上狀態通知。

  • 針對使用適用於 Java、節點或 Python 的 Azure IoT SDK 進行連線的裝置:
  • 針對使用適用於 .NET 或 C 的 Azure IoT SDK 進行連線的裝置,在傳送初始裝置到雲端訊息或收到雲端到裝置訊息之前,將不會報告連線狀態事件。

在 Azure IoT SDK 之外,在 MQTT 中這些作業等同於對應傳訊主題上的 SUBSCRIBE 或 PUBLISH 作業。 透過 AMQP,這些作業等同於在適當的連結路徑上附加或傳輸訊息。

事件方格限制

使用事件方格來監視您的裝置狀態,有下列限制:

  • 事件方格不會報告每個個別裝置的連線和中斷連線事件。 相反地,其會每隔 60 秒輪詢裝置狀態,並在發生狀態變更時發佈最新的連線狀態。 因此,如果 60 秒時間範圍內發生多個事件,狀態變更報告可能會延遲最多一分鐘,而且可能不會報告個別狀態變更。
  • 使用 AMQP 的裝置需要雲端到裝置連結,才能報告裝置狀態。
  • 事件方格會公開無法隱藏的公用端點。

如果上述任何限制會影響您使用事件方格進行裝置狀態監視的能力,則您應該考慮改為建置自定義裝置活動訊號模式。

裝置活動訊號模式

如果您需要知道裝置的連線狀態,但事件方格的限制對於您的解決方案來說過於嚴格,您可以實作活動訊號模式。 在活動訊號模式中,裝置每隔一段固定時間 (例如每小時至少一次) 至少傳送一次裝置到雲端的訊息。 即使裝置沒有任何要傳送的資料,其仍會傳送空的裝置到雲端訊息 (通常具有可識別其為活動訊號的屬性)。 在服務端,解決方案會維護對應,並包含每個裝置收到的最後一次活動訊號。 如果解決方在預期時間內未從裝置收到活動訊號訊息,即假定為裝置發生問題。

裝置活動訊號限制

由於活動訊號訊息會實作為裝置到雲端訊息,因此會計入 IoT 中樞訊息配額和節流限制

短期到期時間模式

如果IoT解決方案只使用連線狀態來判斷是否要將雲端到裝置的訊息傳送至裝置,而且訊息不會廣播到大型裝置集,請考慮使用 較短的到期時間模式作為活動訊號模式 的簡單替代方案。 短期到期時間模式的方法是藉由傳送具有短期訊息到期時間的訊息及請求裝置確認訊息來確定是否傳送雲端到裝置訊息。

如需詳細資訊,請參閱訊息到期 (存留時間)

其他監視選項

更複雜的實作可能包括來自 Azure 監視器Azure 資源健康狀態 的資訊,以識別嘗試連線或通訊但失敗的裝置。 Azure 監視器儀表板有助於查看裝置的彙總健康情況,而事件方格和活動訊號模式可讓您更輕鬆地回應個別裝置中斷的情況。

若要深入瞭解如何搭配 IoT 中樞 使用這些服務,請參閱監視 IoT 中樞檢查 IoT 中樞 資源健康情況。 如需使用 Azure 監視器或事件方格監視裝置連線能力的詳細資訊,請參閱 監視、診斷和疑難解答裝置連線能力。