分享方式:


監視裝置連線狀態

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

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

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

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

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

裝置對應項連線State

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

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

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

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

Event Grid

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

訂閱事件方格上的裝置 連線 和 deviceDisconnected 事件,以取得警示並監視裝置連線狀態。

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

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

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

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

事件方格限制

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

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

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

裝置活動訊號模式

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

裝置活動訊號限制

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

短期到期時間模式

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

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

其他監視選項

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

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