Azure IoT
Azure IoT(アジュール・アイオーティー)とは、Microsoft Azureに新しく追加されたIoT向けのクラウド機能の総称である。これまでのWebブラウザやモバイルデバイスに対するクラウドサービスとは異なり、いわゆるM2Mのソリューションとして利用可能である。マイクロソフトではAzure IoTをWindows 10 IoTに対抗するものとして位置づけている。
Azure IoT Hub
編集IoTデバイスとの接続に適したエンドポイント機能をAzureサービスとして実装した物で、Azure IoTの中心となる。
通常のAzureサービスで利用されるWebAppによるエンドポイントとは異なり、AMQPやMQTTなどのIoT向けプロトコルもサポートしている。 またスケーラビリティに留意し、10万デバイスまでの接続を想定している。(1台1台に異なるアクセスキーが設定される)
Azureに以前より提供されているEvent HUBの拡張とも考えられる。Event Hub互換のインターフェースもサポートしている
2015年 10月のプレビューリリースにより一般利用可能となった。
Azure IoT SDK
編集Azure IoT Hub に接続するためのデバイス側およびクラウド側プログラムを開発するために使用するSDKで、GitHubに公開されている[1]。
- サポート言語: C (C++) / C# / Java / JavaScript (node.js)
- サポートOS: Desktop Windows / Windows 10 IoT Core (UWP) / Linux (Ubuntu / Rasbian / Intel Edison 等) / ARM mbed (Freescale K64F 等)
C#を利用する場合は、NuGet経由で必要アセンブリを単体で入手することができる。そのためAzure IoT SDK が無くてもプログラムからの利用が可能になっている。
この場合Visual Studio 2015 を利用することが想定されているが、Linux向け/mbed向け/Javaコードなどはこの限りではない。
Device Explorer
編集Azure IoT HuBに使用デバイスを登録したり、接続時に使用するアクセスキーを入手または登録する際に利用することができるツール。 モニタ機能を使用して、特定のデバイスにコマンドを送出したり、デバイスから送られてきたデータを表示することもできる。 Azure IoT SDKにてソースコード公開されているが、Windows PCにすぐにインストール可能な.msi形式でも入手可能となっている。
Client API と Service API
編集Azure IoT Hub を利用する主体は、
- IoT デバイス(デバイス側)
- マネージメントUI(主にクラウド側)
の2通りが想定される。
これをサポートする2系統のAPI(またはC#アセンブリ)が 用意され、Azure IoT SDK内にClient用 および Service用としてサンプルコードがコード公開されている。
メッセージ形式
編集Azure IoT HUBでは、テキスト形式/バイナリ形式の任意のメッセージ形式が利用できる。(設定等は存在しない)
メッセージの解釈は、IoT Hubを利用するデバイス側とサービス側の対応がとれていればよい。 たとえば、IoT HuBの後段でStream Analyticsを利用したJSONメッセージ処理を接続する場合には、デバイスはJSON形式のテキストでメッセージ送出するよう実装する。
セキュリティ
編集アクセス制御
編集あらかじめ定義されたアクセス制御ポリシーとして、
- RegistryRead
- RegistryReadWrite
- ServiceConnect
- DeviceConnext
の4つが定義されている。エンドポイントに対するアクセスはデバイスIDとアクセスキーにより制御されるが、ポリシーごとに異なるキーを利用するようになっている。
伝送路の暗号化
編集標準で使用される HTTPSおよび AMQPでは本文メッセージに暗号化が施される。 オプションで使用可能な MQTTの場合プロトコルレベルでの暗号化は行われないので、外部のゲートウエイ機器を利用してMQTTメッセージをほかのプロトコルに変換する方法が提案されている。
課金
編集2015年12月現在、IoT Hub はユニットごとに1日の処理メッセージ量の上限のみが制限された形で使用可能になっている。
プラン | メッセージ数上限(1日あたり) |
---|---|
Free | 8000 |
低頻度(S1) | 40万 |
高頻度(S2) | 600万 |
S1およびS2プランでは4KBを超えるメッセージは4KBに分割した場合のメッセージ数としてカウントされる(実際の1メッセージの最大サイズは256KB)
IoT HUBにつながるIoTデバイスが頻度高くメッセージを出す場合、メッセージ数上限の関係で1ユニットでサポート可能デバイス数が少なくなることになる。 各デバイスが4KB以内のメッセージを1分間に一つのみ送出する場合、低頻度プランでは277台、高頻度プランでは 4166台のサポートが可能なことになる。(実際には余裕が必要)
「10万台のデバイスが接続可能」という記述は、500台のデバイスを1ユニットに接続し、このようなユニットを200ユニット契約することで実現可能となる。
Azure IoT Suite
編集Azure IoT hub をはじめとする複数のAzureサービスを組み合わせ、IoTシステムを構成するデモシステムである。2015年12月現在以下の2つのデモが提供されている。 それぞれGitHub にてクラウド側プロジェクトのコードが公開されている
Remote monitoring (リモート監視)
編集外気温/内部温度/湿度 をクラウドにあげてモニターするサンプル 湿度の平均値に対して任意のしきい値を設定しアラームを上げることができる。
Predictive Maintenance (予兆保全)
編集航空機エンジンの4つのセンサーデータ入力を元に Azure ML (Machine Learning) を利用して特性値(RUL = Remaining Useful Life)を算出してUI表示することができる。
競合サービス
編集IoT関連サービスやプラットフォームは多数の大手ITベンダーや電機メーカーから提供されており、激しい競争の時期を迎えている。主な競合サービスにはパブリッククラウド最大手の米Amazon Web Servicesから「AWS IoT」、ERPソフトウェア最大手の独SAPの「SAP Leonardo」、電機メーカー最大手の米ゼネラル・エレクトリックの「Predix」などがある。[2][3][4][5]