今回は毛色を変えて Azure IoT Hubにつなげてみます。
MSのエヴァんじぇリストの方が記事にしているのですが、まだPreviewでここからもさらに様子が変わっている感じです。
IoT HubにWindows 10 IoT Coreでつなぐ - デバイスとITの架け橋 - Site Home - MSDN Blogs
今回はGitHub上のドキュメントを元に試してみました。
azure-iot-sdks/how_to_use_device_explorer.md at master · Azure/azure-iot-sdks · GitHub
まず最初にAzure ポータルからIoT Hubを作ります。名前を適当につけて、まずはFreeプランで作成しました。
作成したら、「Shared Access Policy」を開くと接続文字列が表示されます。これは後から使います。
次にWindows 10 IoT Core 上で動かすアプリをUWPで作ります。いつものようにプロジェクトを作ったところで、IoT HubのDevice ClientをNugetから追加します。
PM> Install-Package Microsoft.Azure.Devices.Client -Prerelease
コードは簡単で、ButtonとTextBoxを追加したMainPageのコードビハインドでメッセージを送信してみます。
private void button_Click(object sender, RoutedEventArgs e) { SendDataToAzure() .ContinueWith(t => { Debug.WriteLine(t.Exception); }, TaskContinuationOptions.OnlyOnFaulted); } private async Task SendDataToAzure() { var deviceClient = DeviceClient.CreateFromConnectionString("<connectionstring>", TransportType.Http1); var text = textBox.Text; var msg = new Message(Encoding.UTF8.GetBytes(text)); await deviceClient.SendEventAsync(msg); }
この<connectionstring>
の部分ですが、先ほどのPortalにあったConnectionStringそのままではありません。というのもデバイスを登録してデバイスIDというものを割り振らないといけないのです。で、このデバイスIDの管理とか、テスト用にメッセージを送受信するためのツールがDeviceExplorer
として提供されています。
azure-iot-sdks/how_to_use_device_explorer.md at master · Azure/azure-iot-sdks · GitHub
起動して表示されるConfigurationタブのところに、ポータルの「IoTHubOwner」の接続文字列とGateway Host Nameを入力してUpdateを押します。
次にManagementのタブでCreateを押してデバイスIDを発行します。今回はIDを生成してもらいましたが、自前のIDでもよさそうです。
で、作成すると接続文字列がコピーできるようになるので、その接続文字列を先ほどのコードのところに貼り付けます。あとは実行してボタンを押すとメッセージを送信できますが、送信されたことを確認するのもDeviceExplorerでできます。Dataタブを開くと、先ほど登録したデバイスIDが選択できるので、選択してMonitoringを押すとメッセージの監視ができます。
WinFormな上にデフォルトアイコンなのが残念ですが、簡単ですね!