Thing-IF SDK の構成
Thing-IF を利用したモバイルアプリと Thing 実装のための SDK として、以下のものが提供されています。
- Thing のデバイス上で動作する Thing-IF SDK for C version 2
- モバイルアプリ上で動作する Thing-IF SDK for Android/iOS/JavaScript
Thing 側の SDK とモバイルアプリ側の SDK の両方を使ってプログラムを作成することで、モバイルアプリから Thing を操作するサービスを構築できます。
Thing のデバイス上で動作する Thing-IF SDK for C version 1 は obsoleted(廃止予定)です。
Thing-IF SDK for C version 2
Thing-IF SDK for C version 2 は Thing 上で動作する C のプログラムです。ソースコードが公開されており、開発時にはそれをダウンロードして環境に合わせてビルドできます。
SDK の構成
SDK の構成を以下に示します。

SDK は、ebisu というリポジトリで提供されます。これをユーザープログラムから利用することによって Thing Interaction Framework を利用します。
構成上、特に注意すべき点は以下のとおりです。
コールバック関数を用意すれば Thing Interaction Framework の利用が可能です。
基本的に、Thing 上のプログラムは初期設定を行い開始 API を実行するとコールバック関数(アクションハンドラーとステートセッター)が SDK から呼び出されるのを待つだけの実装となります。
OS 関連の機能は用意されています。
ebisu では、特定の環境向けに リファレンス実装 を定義しています。Socket や Task など、OS と深く関連した API はリファレンス実装の中で用意されており、そのままビルドして実行できます。リファレンス実装以外の環境で利用する場合、ソースコードを元にこれらの機能を用意する必要があります。
MQTT の実装は用意されています。
MQTT クライアントは内部に実装されており、特別な追加ライブラリなしで MQTT によるプッシュ通知を利用できます。Thing の実装では、プッシュ通知を コマンドの受信 などで利用します。
バッファはユーザープログラム側で用意します。
コマンドの送受信に必要なメモリ領域は、ユーザープログラム側で用意して SDK の初期化の際に渡します。
一部 SDK 内でヒープ領域を確保する処理があります。その場合は
malloc,free相当のコールバック関数を設定してください。設定しない場合は内部でmalloc,freeを使用します。なお、バッファ関連の実装方法の詳細はリファレンスガイドの SDK の初期化 をご覧ください。
JSON の解析に jkii ライブラリを利用できます。
モバイルアプリとの連携には JSON 形式の文字列の解析が必要です。
本質的には単なる文字列処理のため、どのような実装を使っても問題ありませんが、ユーザープログラムからも jkii を利用すると、確実で簡単な実装になります。実装方法は JSON の解析 をご覧ください。
通信の制御はライブラリー内で行います。
OS ごとのソケットの API 呼び出しの実装や、その呼び出しの制御は ebisu 内に実装されています。ソケットの基本的な APIである
connect()、close()、send()、recv()を呼び出し元から切り離して実装しているため、ターゲット環境に合わせたカスタマイズや SSL/TLS の利用も実現できます。また、MQTT 経由でサーバーからのコマンドの到着を待つ処理では、コネクションが切断された場合の再接続処理もライブラリー側で実装されています。
リファレンス実装
リファレンス実装を提供している環境は以下のとおりです。
- Linux
- GT202
- Ti CC3200
- Avnet IoT Starter Kit
これら以外の環境で使用する場合、OS に依存するソケットやタスク(スレッド)生成などの処理をプラットフォームごとに用意します。 その際 ebisu リポジトリ内の tio ディレクトリ下の各サンプル内のソースコードを参考にしてください。
具体的な導入手順は 開発の準備 をご覧ください。
モバイルアプリ用 Thing-IF SDK
Thing Interaction Framework に対応したモバイルアプリを作成できる SDK を用意しています。SDK は、Android と iOS によるネイティブアプリ、JavaScript(TypeScript)による Web アプリの開発に対応しています。SDK を使うと Thing を制御するモバイルアプリを容易に作成できます。
動作環境は SDK の構成とサポート環境 をご覧ください。
Thing-IF SDK を利用するためには、Kii Cloud SDK も併用する必要があります。
Thing-IF SDK は、ステートの読み込みやコマンドの送信などの Thing Interaction Framework の操作に対する機能を提供します。
Kii Cloud SDK は、初期化の際に Thing の所有者となるユーザーのアクセストークンや ID を取得するために必要です。
Thing Interaction Framework では、コマンド送信やステータスなどを実現するため、内部で ユーザー、データ管理、プッシュ通知など Kii Cloud の機能を利用しています。これらの接点となる部分については、アプリ開発ガイドで実装方法を案内しているため、標準的なモバイルアプリでは、それに従って Kii Cloud SDK の機能を呼び出してください。
Kii Cloud と Thing Interaction Framework は、同一のクラウド上のアプリケーションを共有するため、データ管理やプッシュ通知などの機能を利用したい場合は、Kii Cloud SDK の機能を呼び出すこともできます。
Thing-IF SDK for C version 1
Thing-IF SDK version 1 for C は Thing 上で動作する C のプログラムです。ソースコードが公開されており、開発時にはそれをダウンロードして環境に合わせてビルドできます。
この SDK は廃止予定のものです。新規プロジェクトでの利用は避けてください。
SDK の構成
SDK の構成を以下に示します。

SDK は、thing-if-ThingSDK、KiiThingSDK-Embedded、kii_json という 3 つのリポジトリから構成されます。これをユーザープログラムから利用することによって Thing Interaction Framework を利用します。
構成上、特に注意すべき点は以下のとおりです。
ハンドラーを用意すれば Thing Interaction Framework の利用が可能です。
基本的に、Thing 上のプログラムは初期化が完了すると、コールバック関数(コマンドハンドラーとステートハンドラー)が SDK から呼び出されるのを待つだけの実装となります。
内部で Thing SDK Embedded を使用しています。
Thing-IF SDK の内部では、Thing SDK Embedded を利用しています。これは組み込み環境に向けた C 言語の SDK で、Kii Cloud SDK の重要な機能をサポートしています。
Thing SDK Embedded は直接利用することもできます。詳細は Thing SDK Embedded で Thing を実装 をご覧ください。また、内部で利用している kii-core の利用方法については kii-core の利用 をご覧ください。
OS 関連の機能は用意されています。
thing-if-ThingSDK では、特定の環境向けに リファレンス実装 を定義しています。Socket や Task など、OS と深く関連した API はリファレンス実装の中で用意されており、そのままビルドして実行できます。リファレンス実装以外の環境で利用する場合、ソースコードを元にこれらの機能を用意する必要があります。
なお、実際の実装では、KiiThingSDK-Embedded に存在する OS 依存の各種ライブラリを thing-if-ThingSDK で統合して利用する形を取ります。
MQTT の実装は用意されています。
MQTT クライアントは KiiThingSDK-Embedded に実装されており、特別な追加ライブラリなしで MQTT によるプッシュ通知を利用できます。Thing の実装では、プッシュ通知を コマンドの受信 などで利用します。
バッファはユーザープログラム側で用意します。
コマンドの送受信に必要なメモリ領域は、ユーザープログラム側で用意して SDK の初期化の際に渡します。ヒープ領域からメモリを確保する、
malloc相当の API は SDK 内で利用しません。なお、バッファ関連の実装方法の詳細はリファレンスガイドの SDK の初期化と Thing の初期登録 をご覧ください。
JSON の解析に kii_json ライブラリを利用できます。
モバイルアプリとの連携には JSON 形式の文字列の解析が必要です。
本質的には単なる文字列処理のため、どのような実装を使っても問題ありませんが、ユーザープログラムからも kii_json を利用すると、確実で簡単な実装になります。実装方法は JSON の解析 をご覧ください。
通信の制御はライブラリー内で行います。
OS ごとのソケットの API 呼び出しの実装や、その呼び出しの制御は thing-if-ThingSDK のライブラリー内に実装されています。ソケットの基本的な APIである
connect()、close()、send()、recv()を呼び出し元から切り離して実装しているため、ターゲット環境に合わせたカスタマイズや SSL/TLS の利用も実現できます。また、MQTT 経由でサーバーからのコマンドの到着を待つ処理では、コネクションが切断された場合の再接続処理もライブラリー側で実装されています。
リファレンス実装
リファレンス実装を提供している環境は以下のとおりです。
- Linux
- Intel Edison
- Ti CC3200
これら以外の環境で使用する場合、必要な API を自分で用意します。構成図のとおり、OS に依存するソケットやタスク(スレッド)生成などの処理はプラットフォームごとに差し替えられる形になっているため、基本的にどのようなプラットフォームにも展開できます。
API の実装を差し替える場合、thing-if-ThingSDK リポジトリ内の kii_iot_environment_linux.c ファイルに相当するソースコードを環境に合わせて用意してください。
具体的な導入手順は 開発の準備 をご覧ください。