MACからでもデバイス登録可能だよ。IoTHub-Explorer紹介

テストや実証実験目的で、Azure IoT Hubにデバイスを追加したりセンサーデータをモニタリングしたりデバイスにコマンドを送ったりするのに、Device Explorerというツールが用意されています。このツールは、http://github.com/Azure/azure-iot-sdks/releases に記載のリンク、SetupDeviceExplorer.msi をクリックしてダウンロード&インストール可能です。このツール、超便利…なのですが、Windows PCにしかインストールできません。 私はMACなんだよね…って方。大丈夫です。コマンドラインUIなので、ちょっと使いにくいですが、Node.js上で動く、iothub-explorerというツールが別途公開されているので、それを使えば、MACだけでなく、LINUX等でも、IoT Hubへのデバイス登録や送信データのモニタリングができます。 まず、https://nodejs.org/en/download/current/ から、Node.jsの環境をダウンロードしてインストールしてください。インストールが終わったらNode.jsのシェルを立ち上げて、https://github.com/Azure/azure-iot-sdks/tree/master/tools/iothub-explorer に記載に従って、以下を実行します。 npm install -g iothub-explorer このコマンドでiothub-explorerに関する必要ファイルがインストールされます。インストールが終わったら、同じシェル上で iothub-explorer login [connection string] を実行します。”[connection string]”の部分は、http://portal.azure.comで作成したIoT Hubの共有アクセスポリシーのiothubownerの接続文字列に置き換えます。 HostName=IoTHubName.azure-devices.net;SharedAccessKeyName=iothubowner;SharedAccessKey=Base64EncodingString こんな感じの文字列です。管理ポータルのコピーボタン(紙が二枚重なっている感じのアイコン)でコピー可能です。 次に iothub-explorer create [deviceId] を実行すると、IoT Hubに指定したデバイスIDが登録され、接続に必要なセキュリティ文字列が表示されます。 複数登録されたデバイスの一覧を表示したい場合は、 iothub-explorer list を実行すると、既に登録されたデバイスIDの一覧と、それぞれのセキュリティ文字列が表示されます。この情報を使って、デバイス側のIoT Hubへの接続・送信アプリを完成することができます。 IoT Hubの作成等、基本的な手順は、http://aka.ms/IoTKitHoLV3On のStep2を参照してくださいね。

0

Windows 10 IoT CoreをはじめとするUWPアプリでBLEデバイスを扱う

先ずは、IoT Kitハンズオントレーニング のデバイス側で、Windows 10 IoT CoreのUWPアプリ(Windows 10 PCでも実施可能)とTexas InstrumentsのSensor Tag(CC2541、CC2650)の組合せを追加したことをお知らせします。https://github.com/ms-iotkithol-jp/IoTKitHoLV3 のWinIoTCoreTIIoTHubAppフォルダーに入っているソリューション一式がそれです。TI Sensor TagをデバイスやPCとペアリングすれば、あとは、WpfEmuIoTHubAppと同じ要領で自学自習可能ですので、TI Sensor Tag持っている人は是非試してみてください。一般のPC、Raspberry Pi3やDragonBoardなどBLE対応のデバイスであれば特にBLEのドングルなどなくても実習可能です。 さて本題です。このアプリを作っている過程で、BLEデバイスにアクセスするためのWindows Runtime APIの使い方でてこずりました。ライブラリー群は、非同期メソッドなので、await 句を付けてコールすれば通常は問題なく使えるのですが、HandsOn.csファイルの中で、普通のやり方をやっても実行がブロックされて戻ってきません。では、Taskのまま受けて、Wait()で待って、結果をResultで受け取って…を試してみたら、デバッガーで一行一行ステップバイステップで動かすと、一応動くのですが、一気通貫で実行しようとすると、Wait()から帰ってこない!最悪のパターンだ…どうしよう、ってな状況になってしまいました。しかしなぁ…サンプルでは動いてるしなぁ…何が違うの? と考えて動くものと動かないものを比較した結果、解が得られました。どうやら、UWPアプリとして作ったプロジェクトの中ではawaitやWait()がうまく動かないらしく、UWPアプリプロジェクトを作った時に出来上がるソリューションに、別途UWPクラスライブラリプロジェクトを作って追加、そのクラスライブラリ上にBLEデバイスにアクセスするFindAllAsyncやらなんやらをコールするコードを置くとうまく動くんですな。Gitに挙げているサンプルもそういう作りになっています。 ってことで、await機能しないじゃん、なにこれ?…と首をかしげてる皆さん、この方法試してみてください。 ではでは

0