MODEはクラウドにデプロイするIoTプラットフォームであり、スマートデバイスの登録、管理、制御をサポートする。
MODEは次のようなコンセプトで動作する。
- デバイス: 独自のユニークな識別子を持つスマートハードウェアプロダクト。
- デバイスクラス: 同等なデバイスはすべて同じクラスに属し、グループとして管理、設定することができる。
- ユーザ: 1つ以上のデバイスを所有し、それらデバイスを制御する権利を持つ人。
- ホーム: 一人のユーザによって制御されるデバイスの集合。
- ユーザエージェント: デバイスを制御するのに使われるモバイルあるいはウェブアプリケーション。
- スマートモジュール: デバイス関連機能を実装するサーバアプリケーション。
- コマンド: ユーザエージェントはデバイスやスマートモジュールにコマンドを送ることができる。また、スマートモジュールはデバイスに命令することができる。
- イベント: デバイスはイベントを生成する。イベントはスマートモジュールやユーザエージェントによって受信され、それに応じて何らかの操作を実行する。
MODEプラットフォームはデバイスを管理し、ユーザを認証し、これらを連動させる。デバイスはMODEにつながるよう、工場出荷時にセットアップすることできるし、ユーザによってセットアップすることもできる。その後、デバイスはWebSocketコネクションをMODEに対してオープンし、もしあればイベントを送り、ユーザエージェントやスマートモジュールからやってくるコマンドを待つ。コマンドはデバイス上のデータを収集分析し、さまざまな自動化されたタスクを実行するのに使われる。スマートモジュールはオンプレミスやクラウドで動かすこともできるし、MODEにホストさせることもできる。
デバイス、ユーザエージェント、スマートモジュール、MODE間のコミュニケーションは、JSONを使った暗号化されたRESTful API経由で行われる。どのようにコマンドをデバイスに送るのかを以下に示す。
PUT /devices/{deviceId}/command
{
"action": "sprinkler-on",
"parameters": {
"zone": 2,
"duration": 120
}
}
MODE Inc.のCEOで創業者のGaku Ueda氏に、WebSocket以外のプロトコルのサポートについて尋ねた。
GU: ええ、もちろん! デバイス接続のための新しいプロトコルをMODEに追加するのはとても簡単です。お好みのプロトコルについて、開発者の声を聞きたいと思っています。開発者と協力して現実世界の問題を解決するために、私たちはここにいます。
よく使われているプロトコルにMQTTとCoAPがあります。もし開発者が望むなら、これらを実装します。
コミュニケーションのセキュリティに関して、Ueda氏は次のように語った。
GU: プロダクションモードではSSL対応APIしか提供しません。すべてのコミュニケーションは暗号化する必要があります。
そうは言っても、Arduinoやその他ローエンドマイコンを使ったIoTプロダクトをプロトタイプしたいという声をよく耳にします。ArduinoはSSLコミュニケーションができません。そのため私たちはプロトタイプのためのノンセキュアなAPIを用意しています。