Edited at

IoT Gatewayに関するいくつかの考察

More than 1 year has passed since last update.


IoT Gatewayの要件

 IoT Gatewayとはここでは以下のような定義をして、いくつか市場にあるプロダクトを考察したいと思います。


  • IoTの3階層アーキテクチャの中でIoT Deviceを集約し、EdgeのGatewayとしてDatacenterと通信を行うハードウェアやソフトウェアのこと。

  • IoTの3階層アーキテクチャとは、IoT Device (Edge Device)、Iot Gateway (Edge Gateway / Smart Gateway)、IoT Service (Datacenter / Backend Service)のこと。



  • 主な要件


    • リモートからIoT Gatewayにアクセスできる

    • アプリの更新、ファームウェアの更新、監視や診断ができる

    • センサーやマイコンなどEdge DeviceをGPIOや様々な無線規格で接続してインターネットにつなげることができる




Eclipse Kura

 OSGiという歴史のあるコンテナをベースにしたJavaのソフトウェアです。いまさらOSGi?という感じはしますが、Eclipse IoTでも中核を担い、現時点では本命だと思います。EurotechRed Hatが中心になり開発を進めています。最近ではApache Camelの統合や、BackendのEclipse Kapuaとの連携など非常に開発が活発になっています。


DeviceHive

 DeviceHiveDataArtOSSで開発をしているソフトウェアです。AllJoynに準拠しD-BusにBackendのサービスを接続できる興味深いアーキテクチャだったのですが、いろいろあったみたいでAllJoynの開発は止まっています。現在ではIoT GatewayはシンプルなPythonやJavaのクライアントになっています。


Resin.io

 Resin.ioは、EtcherというSDカードやUSBメモリにイメージを焼くツールの開発元としても有名です。次にご紹介するAGILE IoTにも参加していますが、Raspberry Pi 2などARMv7で動作するDockerイメージを開発しています。How it worksがわかりやすいですが、DockerをインストールしたカスタムのYoctoベースのOSをクラウド上でビルドして手元のSDカードに焼くことができます。アプリのインストールはDockerを使うので、Ubuntu Coresnapsに近い感じです。


AGILE IoT

 AGILE IoTはユーロのHorizon2020プログラムに参加しています。開発が始まったばかりですがロードマップが提示され2018年末頃にはBackendの実装も予定されています。KuraのOSGiと違い言語非依存で、 D-BusとDocker/Snappyをプラガマブルなアーキテクチャが特徴です。Eclipse IoTにもEclipse Agilis IoT Gatewayとしてproposalを提出しています。


IoTivity

 Thread Group提携AllSeen統合したOCFが前身のOICから継続してIoTivityを採用しています。IoT規格がOCFに統一された形となり、おそらくIoT標準になるのだと思いますが、仕様が大きすぎて追いつけません。


Linaro LITE

 Linaro IoT and Embedded (LITE) Segment Groupです。ARM陣営のLinaroがIoTの3階層アーキテクチャのリファレンスを2016年12月を目標に策定しようとしています。Edge DeviceはZephyr、IoT GatewayはUbuntu Core、BackendはRHELベースらしいです。


Ubuntu Core

 snapsは新しいパッケージフォーマットとしてUbuntu Coreの他にArch Linux やDebianなどでも利用できます。Dockerコンテナのようにアプリを配布できます。Dell Edge Gateway 5000DeviceHiveIoTivityKaaLITEAGILE IoTなどのIoT Gatewayで採用しています。だだしUbuntu 16.04ではsnappyコマンドではsnapパッケージをビルドできなくなり、snapcraftのsnapコマンドを使います。そのためまだ古いコマンドを使っているIoT Gatewayのソフトウェアは対応OSのバージョンの確認が必要になります。