2017年5月21日日曜日

Windows上でUbuntuを使う

「Bash on Ubuntu on Windows」というWindows10の機能を使って、
Windows上でUbuntuを使うことができます。

インストールの仕方は下記のQiitaの記事に詳しく書いてあります。

Bash on Ubuntu on Windowsをインストールしてみよう!

2017年3月20日月曜日

[Azure]IoT Hub利用時の例外について

WindowsコンソールアプリケーションからMicrosoft AzureのIoT Hubへメッセージを送信する時の例外処理についてメモ。
IoT Hubのチュートリアルをベースにする。
なお、IoT Hub側はすでに下記のチュートリアルで設定済みであることを前提とする。
Azure IoT Hub for .NETの使用

アプリケーションからIoT Hubへメッセージを送信するまでの流れとしては
1.DeviceClientのインスタンス作成
2.SendAsyncでメッセージを送信
この時、どんな例外が発生するかはドキュメントが見つけられなかったので調査と実験をおこなった。

Program.cs -SimulatedDevice-

 Console.WriteLine("Simulated device\n");
 deviceClient = DeviceClient.Create(iotHubUri,
     new DeviceAuthenticationWithRegistrySymmetricKey("myFirstDevice",
         deviceKey),
         TransportType.Mqtt);

 SendDeviceToCloudMessagesAsync();
 Console.ReadLine();

SendDeviceToCloudMessagesAsync()時に発生する例外
·ArgumentException
·ArgumentNullException
·FormatException
·DeviceNotFoundException
·UnautherizedException
·AggregateException
·TimeoutException

Createメソッドでスローされる例外
·ArgumentException
·ArgumentNullException
·FormatException

·ArgumentException
base64でエンコードされているデバイスキーがデコードできない時にスローされる。

·ArgumentNullException
デバイス名、デバイスキーまたはその両方が空文字、nullの時にスローされる。

·FormatException
デバイスURIが”.net"で終わってない時にスローされる。

SendDeviceToCloudMessagesAsync()時に発生する例外
·DeviceNotFoundException
·UnautherizedException
·AggregateException
·TimeoutException

·DeviceNotFoundException
指定されたデバイス名がIoT Hub側で見つからない時、
またはIoT Hub側で指定したデバイス名のデバイスが無効になっている時にスローされる。

·UnautherizedException
不正なデバイスキーが指定されている時にスローされる。
またデバイスの時刻が大きくズレている時にも発生する。

·AggregateException
SendEventAsyncメソッド内で複数の例外が発生した時にスローされる。

·TimeoutException
プロパティに設定されている時間内にメッセージの送信が完了しない場合にスローされる。