どんなデータって何だ?de:code 2018
「どんなデータもAzure IoT Hub に転送」
de:code 2018で私が話したシアターセッションのタイトルである。当然ながら「どんなデータ」って何だ?という疑問が出るであろう。そこでde:code 2018でのセッションを聞かなかった方のために、少しだけ解説する。ポイントは私が去年から何となく考えていた次の3つである。
- IoTが流行り出して様々なシステム、プロトコルや標準、さらには団体まで出て来ているが、みなどれも難しくしすぎてないだろうか?
- データをデバイスからクラウドに転送する、あるいは逆方向も同じだが、最も簡単に、勿論セキュアに実現する方法は何だろうか?
- 世の中様々なデータやバスがあって、それぞれの通信方式があるが、これらを簡単かつ統一的に扱う、あるいは管理するための方法はどの様になるだろうか?
私なりの考えに基づいて実装した事例を紹介したのがこのセッションである。
去年、2017年9月の Device2Cloudコンテスト 用の事前トレーニングで、Microsoft Azureを使用したIoTシステム開発について説明した。その時に「簡単改造」として作ったIoTのデモが今回発表したサンプルコードの原型である。資料はこちら。
Azure IoT Edge に含まれる、Simulated device-to-cloud sample のサンプルコードのシミュレーター部分を改造し、実データを送る様にしたのが主要部だ。これにEnOcean無線センサーのデータを、EnOceanデータ受信用USBドングルを接続した Linux / Windows マシンで処理して Azure IoT Hubに送るデモを行った。Linux / Windows の両対応だったのは、この時点の Azure IoT Edge (V1) は CMakeとC言語を使用した Linux / Windows 両対応版だったので、両方でデモできると便利と考えて、そのまま両対応とした。この時に実装したのが、EnOceanセンサーの受信データを一旦ファイルに出力して、それをIoT Edge に読み込ませるというアイデアだった。
この様なゲートウェイ動作をするIoT Edgeのサンプルとしては、Bluetooth Low Energy (BLE) sample を使用するのが常道のはずだが、これはBLEやEdgeのライブラリに依存する部分が大きく、シンプルな構造のEnOcean無線受信用には向いてないと判断した。
シミュレーターでデータを作っている部分を潰して、代わりに実データを入れる改造は簡単で、1日もかからずに動作した。データは当然、センサー側の都合で送られて来るので、実データの受信タイミングは不定であるが、これをSimulated Deviceの定期間隔でポーリングしてIoT Hubに送ると、それだけでも結構実用的に動作することがわかった。これは入門用として十分使えそうと判断して、タイミング的に丁度原稿を書いていた「インターフェース誌 2017年11月号」の私の記事「Appendix 1
電池の心配無用のIoT…半永久的CO2センシング」の後半部でも紹介した。
ここで紹介したサンプルコードは、今では弊社で販売しているAzure IoT Hub, OPC UA, iBRESS Cloud 対応のEnOcean IoT ゲートウェイの基本部分として動作している。EnOceanでは実際に接続できる無線デバイスの数に制限は無く、100以上のセンサーデータを受信することも可能である、それで現在では2秒単位のポーリングを止め、コードをLinux専用としてIPCでデータ受信のタイミングを各内部構成モジュールで共有している。Azure IoT Edge V2への移植も考えての変更だ。これについても「実用化されたコード」として、機会を見て公開したい。
de:code 2018を終了して驚いたのは、de:code 2018での私のシアターセッションを聴いて頂いて、その内容を完全に理解して、それを私よりわかり易く Qiitaにまとめて公開してくれている方がいた事である。ありがとうございます。謹んで紹介させて頂きます。
de:code 2018 [DA61] どんなデータもAzure IoT Hubに転送!IoTデバイスで汎用的に利用できるサンプルコード紹介
後日拡張編としてIoT Algyanで、Azure IoT Edge入門から応用まで!@Microsoft というイベントでもセッションを行った。その時の資料はここにある。
- Atomu Hidakaさんのブログ
- ログインしてコメントを投稿