Azure IoT HubのREST APIを叩いてみる
例に漏れずIoT HubにもREST APIが提供されているのでこれを使う方法についてです。
今回は、指定したIoT Hubに登録されているデバイス一覧を取得してみます。
手順
手順としては、
という流れです。
SASトークンを作る
- IoT Hubの認証キー
- キーの名前
- ターゲットとするホスト名
- 設定するTTL
の4つです。
キーの場所などはここ参照ということで
SASトークンの作成
とりあえずc#でコンソールアプリケーションを作りましょう。
わざわざ計算するのも面倒な話なので、ライブラリを使います。
NuGetでMicrosoft.Azure.Device で検索すると一番上に出てくるライブラリをインストールします。
これをインストールしたら
using Microsoft.Azure.Devices.Common.Security;
をProgram.csに追加します。
static string CreateToken()
{
var sas = new SharedAccessSignatureBuilder()
{
Key = "{IoT Hub Key}",
KeyName = "{IoT Hub KeyName}",
Target = "{IoT Hub HostName}",
TimeToLive = TimeSpan.FromDays(Convert.ToDouble("365"))
}.ToSignature();
return sas;
}
TimeToLiveはいったん365日で設定してありますが好きな値に変更しましょう。
これでSASトークンが作成できたので、このトークンをメモっておきましょう。
データを取得してみる
トークンが作れたので、IoT Hubに対してリクエストを投げてみます。
今回は、Chrome拡張のDHCを使用します。
リクエストを投げるURLは、
https://{IoT Hub HostName}/devices?api-version={api version}
となります。
現在のapiのバージョンは、
2015-08-15-preview
になります。
これでリクエストを投げてみると、以下のようにJSONが返ってきます。
[
{
"deviceId": "myFirstDevices",
"generationId": "635800069888725153",
"etag": "MA==",
"connectionState": "Disconnected",
"status": "enabled",
"statusReason": null,
"connectionStateUpdatedTime": "2015-10-10T01:17:18.6287321",
"statusUpdatedTime": "0001-01-01T00:00:00",
"lastActivityTime": "2015-10-10T01:18:24.0558432",
"cloudToDeviceMessageCount": 0,
"authentication": {
"symmetricKey": {
"primaryKey": "{PrimaryKey}",
"secondaryKey": "{SecondaryKey}"
}
}
}
]
まとめ
こんな感じで簡単にRESTを叩けるのでアプリケーションに組み込む時も楽になってありがたいですね