MSC2013/ET2013でデモ&展示したMicro Device+Cloud連携

ちょっと時間がたってしまいましたが、昨年(2013)の11月に開催されたMSC、及び、ET2013でデモ&展示した、Micro Device+Cloud連携を紹介します。紹介するのは以下の二つです。

  • ICTコンセプトデモ
    MSCデベロッパーキーノートでデモ、ET2013マイクロソフトブースで展示
  • アグリカルチャーセンサークラウドプロトタイプ
    ET2013マイクロソフト招待講演でデモ、MSC2013VSブース、及び、ET2013マイクロソフトブースで展示

先ずは、ICTコンセプトデモです。まぁこの構成でICTと言ってしまうのは非常に微妙ですが、イメージとしては、

のごく一部の実装です。

Windows AzureのWebサイトにSignalR対応のASP.NETアプリを稼働させ、センサーで計測したデータをSignalRで送信する、というシステムを、MSCのデベロッパーキーノートの中のデモで、同僚の田中達彦さんが、荷台に.NET Micro Frameworkのボードが載ったトラックを使ってデモしていました。

荷台に搭載されていたボードは、

こういう構成です。このボード、スイッチを入れると、

  1. Wi-Fiでインターネットに接続
  2. Wi-Fiでの接続に失敗した場合、有線LANで接続
  3. タイムサーバーから現在時刻を取得して時刻設定
  4. WebサイトにSignalRで接続
  5. 加速度センサー、ジャイロセンサー、方位センサー、GPSで計測したデータをSignalRでWebサーバーに2秒ごとに送信
  6. 加速度センサーで、ボードがすごく傾いたことを検知すると、StatusをRegularからTroubleに切り替えて送信

という動作を行います。他にも、このボード自体がREST形式でセンサー計測データを提供するWebサーバーとなる機能を持っていて、ネットワークにつながっている別のデバイスから、XML形式で計測データを取得できます。.NET Micro Frameworkによる詳細は、このブログの過去の投稿で説明しているのでそちらをご覧ください。

次にアグリカルチャーセンサープロトタイプです。こちらは、ET2013の金曜日のマイクロソフトの招待講演の中で私がデモしたものです。ET2013のマイクロソフトブース、MSCのWindows 8ハンズオン会場、及びVSブースで展示されていました。
こちらは、以下の様なシステムを想定しています。

このシステムは、.NET Micro Frameworkのボードで計測した各種センサーデータを、Windows Azure モバイルサービスのテーブルに逐次格納し、Windows Azureモバイルサービス対応のストアアプリから参照するものです。ICTプロトタイプと同じく、REST形式によるネットワーク越しの計測データ取得、クラウドへの計測データアップロードの開始と停止、リレーのOFF/ON制御が可能です。他にUDP Multicat通信にも対応していて、UDP Muticastによるメッセージ通信で、リレーをOFF/ONすることも可能です。
モバイルサービスのテーブルに格納した計測データは、勿論、ExcelのPower Map、Power Queryによる参照も可能です。

ボードの構成は、

です。温度が30度を超えると、ストアアプリにPush Notificationを通知するよう、ステータスを変えてモバイルサービスにデータを送信します。このボードは以下の動作を行います。

  1. ネットワークに接続する
  2. ネットワーク上のタイムサービスを使って現在時刻設定
  3. REST形式によるWebサービス起動
  4. UDP Multicast Group通信用にグループにJoin
  5. センサー計測データをLCDに表示
  6. REST形式でのアクセスにより、センサー計測データの取得、リレーのOFF/ON制御と状態取得、Windows Azure モバイルサービスへのデータ送信開始停止要求受付
  7. UDP Multicast Group通信でリレーのOFF/ON要求が来たら対応
  8. Windows Azure モバイルサービスにデータをアップロードしていない間は、マイクロSDカードにデータ蓄積したら完璧(すいません。未実装です)

デモのしやすさを考えて、有線LANが未接続状態で起動した場合には、センサー計測&LCDへの表示のみを開始し、LANケーブルが接続された時点で、時刻設定、REST形式WEBサービス起動、Multicast Group通信設定を行い、Windows Azure モバイルサービスにデータ送信開始するように作られています。

Windows Azure モバイルサービスは、

と、デフォルトで作成されるItemsテーブルは削除して、3つのテーブルを独自に作成しています。

  • channels
    ストアアプリにPush Notificationを送信する為の情報を格納
  • SensorReading
    センサー計測情報を格納
  • sensors
    センサーノード情報を格納

SensorReadingテーブルには、実際に.NET Gadgeteerボードで計測した値が格納されています。

そして、sensorsテーブルには、

と、ET2013会場、MSC2013のWin8ハンズオン会場、VSブース展示の3ノードの情報が格納されています。この格納データを表示するストアアプリは

エンジニアっぽいUIで作っています。2013/11/20の計測データを表示しています。更に、ここまで紹介した、.NET Micro Framework/Gadgeteer、Webアプリ、Mobile Service、Windows 8 ストアアプリ、当たり前の話ですが、全て、Visual Studioで開発されています。使っている言語は、C#とJavaScriptのみ。

ついでに、ExcelのPower Queryを使って、データを収集した結果も表示しておきますね。

実際の利用に耐えうる農業クラウドとしては、機能、構成ともにまだまだ未熟なシステムですが、基本要件的には、2,3要素を加えればなんとかなるかなと、考えています。

以上、結構長いポストになりましたが、この二つのシステムの作り方について、ハンズオン資料の作成と公開を予定しています。ポイントポイントは、このブログでも順次投稿の予定ですので、乞うご期待。