IoT Hub Device Management Preview 2016/7/4現在

ちょっと時間たってしまいましたが、4月のBuildでIoT Hubの機能強化が発表されました。現在、PreviewとしてDevice Managementの機能がSDKも含め公開されだしています。SDKの成熟を待って、そろそろいいかなという状況になってきたみたいなので、いやぁ、まだまだ、幾つか問題あるなと、いう感じですが、2016年7月4日現在でhttp://azure.microsoft.comのドキュメント→モノのインターネット→IoT Hubから公開されている内容を元に、試す際の注意点を記載しておきます。 まずは、 https://azure.microsoft.com/ja-jp/documentation/articles/iot-hub-device-management-device-twin/ https://azure.microsoft.com/ja-jp/documentation/articles/iot-hub-device-management-get-started/ をじっくり読んでください。ここに書いてある通りにやると、動いた!というのが理想なのですが、幾つか嵌りポイントありました。それを以下に説明します。 まず、CMakeのインストールについて 私が試したときは、PATHの追加を選択したにもかかわらず、PATH設定されなかったので、PATHが追加されなかった場合(コマンドプロンプトでcmakeと入力したときにコマンドがないと表示される)、コントロールパネル→システム→システムの詳細設定でPATH設定を編集して追加しましょう。 コマンドプロンプト コマンドプロンプトは、Windowsデスクトップの左下のWindowアイコン→すべてのアプリで、”Visual Studio 2015”→”開発者コマンドプロンプト for VS20…”を使います。念のため、管理者権限で起動しておきましょう。 setup.batによるビルド実行 私の場合、見事に途中でビルドが失敗しました。理由は不明ですが、失敗したら、Visual Studioで、以下の二つのSLNファイルを開いて、ビルドしてください。どうも、Nugetから必要なSDKがダウンロードされていないようです。Visual Studioでビルドすると、きちんとNugetから必要ライブラリを持ってくるようです。 GetStartedWithIoTHubDM.sln iothub_charp_serviceclient.sln IoTHubのiothubownerの接続文字列を引数として指定することを忘れずに nodeのインストール Device ManagementのUIについては、nodeの6.1以上が必要ですが、どうも、Chakraのnodeが6.0の場合それが邪魔して上手くビルドできません。私のVisual StudioのWindows SDKが古い可能性がありますが。そんな場合は、nodeをhttp://nodejs.orgでダウンロード&インストールした後、c:\Program Files\nodejsのPATH設定を先頭に設定しなおしてください。設定後すぐには有効にはならないので、再起動等必要です。 この状態で、 npm install npm run build npm run start と実行すれば、無事、 起動。Node.jsで動いているので、例えば、IoT Hands-on V3のStep 3、Mobile Appsに組み込めば、動くはず。    


IoT HubにWindows 10 IoT Coreでつなぐ

さてと… ※この投稿は、2015/10/22現在の公開情報を元に記載しています。最新の情報がないか確認してくださいね。 IoT Hubのプレビューが9/30に公開されました。タイミング的にちょっと遅い気もしますが、Raspberry Pi2で動作するWindows 10 IoT CoreデバイスをIoT Hubに接続する方法を説明します。とりあえず試す方法が、https://azure.microsoft.com/ja-jp/documentation/articles/iot-hub-csharp-csharp-getstarted/  に書かれています。この説明は、.NET Framework上でC#を使ったサンプルで、Windows 10 IoT Coreの場合はWindows RT上で動くUniversal Windows Applicationという違いがあって、そのままでは、動かすことができません。更に、プレビュー状態のため、説明通りにいかない部分もあるので、ここで解説しておきます。 ※IoT Hubにつなぐ部分、送受信する部分は、通常のWindows 10のUWAでも利用できます。 折角なので、加速度センサー(ADXL345)、温度センサー(BME280)を使ってIoT Hubに送ってみましょう。基本の部分は、https://doc.co/4dEWrJ を見てください。ハードウェアの構成は、このドキュメントに記載の これに加えて、LEDも追加します。   次に、センサーやLEDをI2CやGPIOで制御するために、IoT Extensionを参照に加えます。 そして、https://doc.co/4dEWrJ に記載に従って、MainPage.xaml.csのProgramクラスにdeviceId(Guid値)と、プロジェクトにSensorクラスを追加してください。 次は、IoT Hubへのアクセス用ライブラリの追加です。本来ならNuGetを使ってインストールできるのですが、本投稿を書いている時点でははうまくいかないので、 ※現在既にNuGetでの組込みが可能になっています。ソリューションエクスプローラーで、プロジェクトの参照を右クリックし、”Nuget”を選択して、Azure Devices Clientで検索を行い、Microsoft.Azure.Devices.Client.PCLを選択してインストールを行ってください。 ブラウザで、 https://github.com/Azure/azure-iot-sdks/ を開き、表示されたページの右横にある、”Download ZIP”をクリックし、どこかにZIPファイルを保存、ZIPファイルのプロパティでブロックを外し(必ずやってくだいね)、適当な場所に保存します。 csharp/Microsoft.Azure.Devices.Client.WinRTに入っているMicrosoft.Azure.Devices.Client.WinRT.csprojをプロジェクトに参照追加します。 ソリューションエクスプローラーで、ソリューションを右クリックし、”追加”→”既存のプロジェクト”を選択し、Microsoft.Azure.Devices.Client.WinRT.csproj を選択し、ソリューションに追加してください。 次に、追加したSDKのプロジェクトを、作成中のプロジェクト参照として追加します。これで、NuGetで組み込んだのと同じ状態になります。 これで、IoT Hubにアクセスする準備は完了です。 後は、Modelsという名前でフォルダーをプロジェクトに作成し、そのフォルダーにSensorReadingという名前でクラスを作成し、 と、コーディングしてください。このクラスを使ってセンサー計測値をJSONに変換します。 さて、MainPage.xaml.csのnamespaceの中身を以下の様に編集します。 コードの中で、deviceId、iotHubUri、deviceKeyという変数がありますが、まずはGuid生成ツールで新規にGuidを作成して設定し、 https://azure.microsoft.com/ja-jp/documentation/articles/iot-hub-csharp-csharp-getstarted/ に記載のCreateDeviceEntryアプリでDevice Keyを作成して、deviceKeyの値とし、作成したIoT HubのURLにあわせてiotHubUri変数を編集すれば動きます。チュートリアルと上のコードを見比べてみてください。IoT Hubとの送受信の部分は基本同一です。 1秒ごとにセンサー計測値を貯めて、2分ごとにIoT Hubに貯めたデータを一括送信します。チュートリアルのReadDeviceToCloudMessagesを起動しておくと送信したデータを確認できます。また、…