Azure IoT HubとDeviceの通信

公式ドキュメントを読んで机上で整理したものなので、実際の動作と異なる可能性があります。

IoT HubのエンドポイントはDevice, ServiceとManagementに関するものがあります。

f:id:matsujirushix:20171230211711p:plain

このうちのAzure IoT HubとDeviceの通信に使用する、Deviceのエンドポイントを整理しました。(上図の左側)

Device to Cloud

DeviceからCloud(IoT Hub)に情報を送信する手段は、3つ用意されています。

メッセージ

  • 時系列データアラートの送信に使用します。
  • エンドポイントは/devices/{deviceId}/messages/events
  • IoT Hubに最大7日間、保存することができます。
  • 1つのメッセージは最大256KB

レポートプロパティ(報告プロパティ)

  • 動作状態の送信に使用します。
  • エンドポイントは$iothub/twin/PATCH/properties/reported/?$rid={request id}
  • IoT Hubのバイスツインに保存。
  • レポートプロパティは最大8KB

ファイルのアップロード

  • 大きなデータの送信に使用します。
  • IoT Hubにファイルのアップロード要求を送信してから、Azure Storage SDKでファイルをアップロードします。
  • Azure Blob Storageに保存。
  • ファイルの最大はAzure Blob Storageによって制限されます。

Cloud to Device

Cloud(IoT Hub)からDeviceに情報を受信する手段は、3つ用意されています。

メッセージ

  • IoT Hubに溜まっているメッセージを受信します。
  • エンドポイントはdevices/{device_id}/messages/devicebound/#
  • IoT Hubに最大48時間、保存することができます。
  • 1つのメッセージは最大64KB

デザイアープロパティ(必要プロパティ)

  • 動作指示設定値の受信に使用します。
  • エンドポイントは$iothub/twin/PATCH/properties/desired/?$version={new version}
  • IoT Hubのバイスツインに保存。
  • デザイナープロパティは最大8KB

ダイレクトメソッド

  • 即時指示の受信に使用します。
  • エンドポイントは$iothub/methods/POST/#
  • 最大8KB