ゲートウェイ利用時の構成
ここでは、ゲートウェイを利用した場合のシステム構成の詳細を示します。SDK の観点からの 構成の概要 もご覧ください。
ゲートウェイを通してエンドノードの Thing を接続する場合、以下の図のような構成を取ります。
モバイルアプリ
Thing を制御するためのモバイルアプリを開発することができます。エンドユーザーは、このモバイルアプリを通してエンドノードやゲートウェイを操作します。
モバイルアプリには、Kii Cloud SDK と Thing-IF SDK の両方を組み込む必要があります。基本的な機能は Thing-IF SDK に実装されていますが、ユーザー認証などの一部機能は Kii Cloud SDK を使って実装する必要があります。ゲートウェイを使用せずに Thing-IF SDK を使う場合と同様です。
モバイルアプリ内の SDK は Thing Interaction Framework とゲートウェイ(ゲートウェイエージェント)の両方にアクセスします。
- コマンドの送信やステートの確認などは、インターネットを通して Thing Interaction Framework にアクセスして実行します。これらの操作は外出先でも行うことができます。
- エンドノードの登録や交換などのゲートウェイの管理操作は、Wi-Fi などを使ってローカルネットワーク内のゲートウェイに直接アクセスして実行します。
ゲートウェイ(ハードウェア/OS)
ゲートウェイのハードウェアや OS などの環境は、開発者の側で用意する必要があります。ホームサーバーなどの専用のハードウェアを新しく開発することも、ゲートウェイ用に販売されている一般的な機材を使用することもできます。
ゲートウェイエージェント
ゲートウェイエージェントとは、ゲートウェイ内で動作するサーバープロセスで、ビルド済みのバイナリファイルをダウンロードして利用できます。
以下の 3 つの通信経路を持っています。
Thing Interaction Framework に対するクライアント
Thing Interaction Framework と通信するため、HTTPS と MQTT を使ってインターネットにアクセスします。Thing Interaction Framework へのリクエストには HTTPS を、プッシュ通知には MQTT を使用します。なお、複数のエンドノードをゲートウェイに接続している場合でも、基本的に MQTT のコネクションは 1 つのみです。
モバイルアプリに対する HTTP サーバー
モバイルアプリから Wi-Fi でアクセスするための HTTP サーバー機能です。
エンドノードの登録や交換などの管理作業を行うため、モバイルアプリ用にローカルの REST API を実装しています。モバイルアプリは SDK 経由でこの機能を使用して Thing の管理作業を実現します。
コンバーターに対する MQTT サーバー
コンバーターからアクセスするための MQTT のサーバー機能です。コンバーター(エンドノード)に対するサーバーとして動作します。
後述のコンバーターによってエンドノードを制御します。コマンドをエンドノードに送信したり、ステートをエンドノードから受信したりできます。ゲートウェイエージェントは、コンバーターから MQTT プロトコルで送られたデータを Thing Interaction Framework の REST API 形式に変換して、インターネット経由で Thing Interaction Framework に送信します。
コンバーター
コンバーターは、ゲートウェイとエンドノードの間で通信するためのモジュールで、開発者が実装する必要があります。エンドノードが使用する Bluetooth や Zigbee などのプロトコルを、ゲートウェイエージェントが受け付ける MQTT プロトコルに変換します。組み込み Linux で動作させる場合はデーモンプロセスなどの形で実装します。
コンバーターを実装する際には、リファレンス実装を参考にすることができます。リファレンス実装はソースコードが提供されており、これをスケルトンとして目的のプロトコルを作り込めば、効率よく開発できます。
コンバーターのリファレンス実装は、今後提供される予定です。
コンバーターでサポートする機能は Thing Interaction Framework の機能範囲のみです。Kii Cloud SDK のデータ管理機能やプッシュ通知機能などを直接使うことはできません。ただし、Kii Cloud の REST クライアントと同様に、コンバーターから REST API を直接呼び出すことは可能です。
MQTT では、MQTT トピックの名前として制御対象のエンドノードを識別することができます。そのため、複数のエンドノードを束ねて単一の MQTT セッションで通信することができます。
コンバーターは以下のいずれの構成を取ることもできます。
- エンドノードの種類に応じて複数のコンバーターを実装する(図のイメージ)。
- 1 つのコンバーターのプロセスで複数のプロトコルを使い分ける
エンドノード
ゲートウェイ経由でアクセスする Thing のハードウェアおよびソフトウェアです。ゲートウェイからはコンバーターしか見えていないため、エンドノードの実体は自由に配置できます。
Kii Cloud 上のアプリケーション
IoT ソリューションで利用する Kii Cloud 上のアプリケーションを開発者ポータルから作成する必要があります。Thing Interaction Framework の機能は、このアプリケーション上で実行することになります。