例に漏れず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を叩けるのでアプリケーションに組み込む時も楽になってありがたいですね