第2回 Kiiコンソーシアム技術WG勉強会が開催されました。

2017/08/30

カテゴリー:イベントレポート

去る7月28日(金)、16時より、東京・五反田のDNP五反田ビルにて「第2回Kiiコンソーシアム技術WG勉強会」が開催されました。5月10日発表の「SORACOM Funnelとの連携によるLoRaWANとの接続」および「Thing interaction Frameworkの機能とメリット」についての解説をデモを交えて行い、参加者に向けて具体的な利用方法が披露されました。

  • 発表者:Kii 株式会社
    プロダクトマーケティングマネージャ
    山下 頼行

■「SORACOM Funnel」との連携によるLoRaWANとの接続

株式会社ソラコムが提供している「SORACOM Funnel」は、デバイスからのデータを各種クラウドサービスに直接転送できるサービスです。ソラコム様の協力のもと、Kiiが SORACOM Funnelに対応することで、デバイスからの接続方法に、ソラコムのLoRaWANが使用可能になりました。また、ソラコムのセルラー接続でのセキュアな接続も容易になっています。

 

IoTデバイスが状態情報(ステート)をKii Cloud内のアプリ空間にアップロードするには、従来、デバイスにKii のSDKを導入し、インターネットを介して状態情報を転送する方法が一般的でした。これに加えて、Sigfox対応デバイスからの状態情報をKCCS Sigfox Gateway経由でアップロードすることにも対応していました。さらに今回の「SORACOM Funnel」連携により、LoRaWAN対応デバイスからのアップロードが可能になり、またソラコムの3G対応デバイスからも、インターネットを介さずにKii Cloud内のアプリに転送できるようになりました。こういったことが、SDKを搭載できないようなデバイスからも行えるようになったわけです(図1)。

  • 図1 SORACOM FunnelとKiiの連携のイメージ

SORACOM Funnel連携による大きなメリットは次の4つです。

 

1つは、LPWAの通信方式であるLoRaWAN対応デバイスが利用できることです。ソラコムのサービスではFunnelを使わないと他のクラウドへの接続ができませんが、逆にFunnelに対応すれば、LTE/3GデバイスでもLPWAデバイスでも同様に接続できることになります。

 

もう1つは、SORACOMもKii Cloudも同じAWS内で運用されているため、SORACOM Funnelによる通信はすべてAWS内で完結し、インターネットを経由しないことです。これはセキュリティ面で非常に堅牢になります。

 

3つ目のメリットは、Kii Cloud SDKが組み込めないデバイスでもKii Cloudに接続できることです。SORACOM FunnelがKii Cloud SDKと同様の役割を果たしてくれます。

 

最後に、コンソールの設定だけで状態情報をアップロードできることです。Kii Cloud側ではユーザ、アプリを作成し、APP ID等のクレデンシャル情報を発行し、SORACOM側にはクレデンシャル情報、送信先URL、対象デバイスを登録するだけです。情報をアップロードするだけなら、Kii CloudとSORACOMのコンソールでの操作だけで完結します(図2)。

  • 図2 コンソールの設定だけで状態情報のアップロードが可能

■デモンストレーション

勉強会ではIoTデバイスの例としてRaspberry Piにソラコムの3G SIMを搭載したドングルを装着した実験機を用意、講演者の手元のPCにこれを接続し、Kii CloudとSORACOMの設定によって、Kii Cloudへの状態情報のアップロードを試すデモが行われました。

(1)開発者ポータルでの設定

 

まずKii Cloudの中のアプリにユーザを作成し、Thingと紐付けていくOnboarding(初期登録)作業です。ユーザの作成は、アップロードされたデータを閲覧できる人を認証するために必要です。
 この作業はKiiの開発者ポータルですでに作成済みのアプリ(AppID、AppKey、ClientID、ClientSecret決定済み)を選び、表示される画面の左ペインから「Things」を選択、表示される画面の「Thing-IF」タブで行います。※1

※1「Thing-IFコンソール」は新機能であるため、2017年8月現在、オンラインドキュメントでの詳細な解説はありません。

この「Thing-IF」画面では「状態情報の確認」「コマンドの設定・送信」「トリガーの設定」の3つの操作が可能です。まず、Kii Cloud の中でユーザとIoTデバイスの紐付け、つまりOnboardingを行います。ユーザ名とパスワード、IoTデバイスのvendorThingIDとパスワードを所定の箇所に入力し、"Onboard"ボタンを押すと完了です。vendorThingIDは、デバイスメーカーがデバイスに割り当てたIDのことです。(例えばSIMの場合には、IMSI等SIMに固有の番号を使うことも可能です。) これが終わると、Kii Cloudの方から対応する「Thing-ID」が払い出されます。これをSORACOM側のコンソールで指定すると、APIアクセスが可能になります。Kiiの開発者ポータルでの作業はこれだけです(図3)。

  • 図3 開発者ポータルでの設定の概要

(2) SORACOM側での設定

次にSORACOM のコンソールでSIMグループを作り、作ったグループに対してSORACOM Funnelの設定を行い、SIMを登録する作業になります。
 SORACOMコンソール画面の「SIM登録」で「グループ作成」をします。そのグループのFunnel設定をしていきます。まず転送先サービス(いくつか用意されています)の中から「Kii Thing-IF」を指定し、転送先URLとしてKii側が用意したURLを記入します。
 次に認証情報として、App ID、APPKey、ClientID、ClientSecretを入力し、名前をつけて保存します。これらの情報はKii Cloudの該当アプリの情報画面で確認可能です。全部秘密の情報ですから、決して人にはこの画面を見せないでください。
 送信データ形式はJSONを選び、SIMを登録します。画面から対象のSIMを選び、先ほどのグループに登録すれば、設定は終了です。

  • 図4 SORACOM側での設定の概要

    転送先URL
    https://api-jp.kii.com/thing-if/apps/{APP_ID}/targets/thing:{THING_ID}/states

その後、Raspberry PieからcURLコマンドを使って仮のデバイス状態情報がKii Cloud上のアプリ空間に送信されました。「curl -v Content-Type:application/json -d '{"power":true, "temperature":32.5}' funnel.soracom.io」と入力し、無事にアップロードされたことが、実際に開発者ポータルの画面で確認されました。(図5 及び 写真1)。

  • 図5 Kii Cloud上のアプリ空間への状態情報送信
  • 写真1 デモにおいて、実際にアップロードされた状態情報を確認した様子

管理画面の設定だけで状態情報がアップロードできるのですから、ずいぶん簡単になったと思います。
 ただ、現在のところ※2 転送先URL中にThingIDを直接埋め込むために、SIMグループごとに特定のThing1つしか設定できません。このため、1つのSIMグループで利用できるSIMは実質的に1つだけです。これでは不便なので、複数のSIMをサポートできるよう、SIM情報をKii CloudのvendorThingIDとしてパラメータ化する改善を図っているところです。

※2 2017年8月9日に改善対応が完了し、同一SIMグループで複数のThingをお使いいただけるようになりました。詳細は下記のドキュメントをご参照ください。
http://docs.kii.com/ja/guides/external_services/soracom/

なお、参加者の方の質問で、転送先URLはKiiオブジェクトのURLにすることができないのかとのご指摘がありました。技術的にはそれは可能で、そうした方がデータを蓄積していくのに合理的な場合があるかもしれません。現状ではThingのステートとしてのデータ取込みにしていますが、そういったご要望があれば是非ご意見をお寄せください。

■Thing Interaction Frameworkの紹介およびデモ

続いて、「Thing Interaction Framework」の紹介として、メリットの解説と3つのデモが行われました。その中ではサーバーコードの設定を開発者ポータルから行う方法も紹介されました。

 

「Thing Interaction Framework」は、ステート、コマンド、トリガーの3要素でIoTシステムを作っていくフレームワークです。デバイスからどんどん状態情報をアップロードしていく中で、状態が何らかの条件(トリガー)に合致した場合に対応するコマンドを送るという、IoTシステムのよくあるパターンを、あらかじめKiiの方で用意したものになります(図6)。IoTデバイスだけでなく、スマートフォンとの連携もできますので、人とモノの連携も簡単になります。

         
  • 図6 Thing Interaction Frameworkのイメージ

これを使うメリットは、データモデルが当てはまればIoTシステム構築が容易になるということです。また、Thing Interaction Frameworkの一部として提供しているゲートウェイエージェントを使用すると、エンドノードの死活監視ができるとともに、デバイスが例えばBluetoothしか使えないというように、直接インターネットに接続できないものでも、Kii Cloudとの連携が可能になるのもメリットです(図7)。

  • 図7 Thing Interaction Frameworkの一部であるゲートウェイエージェントを利用した場合

■デモンストレーション

(1)基本機能:ライトの明るさ調整と状態変化の履歴の可視化

Thing Interaction Frameworkの基本機能のご紹介として、「モバイルアプリからコマンドを送信してライトの明るさを調整し、その結果の状態をグラフなどで確認する」というデモを行います。

 

①まず開発者ポータルの「Things」-「Thing-IF」でアプリを選び、ユーザとデバイス(ライト=デモでは擬似ライト)を登録します。これでユーザとライトの紐付けができます。

 

②擬似ライトにモバイルアプリ(デモではシミュレータ)から明るさを変更するコマンドを送ることで、指定された明るさに変更されます。

 

③その状態をモバイルアプリ側から問い合わせ、蓄積されている情報情報の履歴を取得、簡単な操作を加えてグラフ表示することが可能です。

 

この一連の処理が実行されました。(図8 ※上記の番号と図中の番号は対応していません)

   
  • 図8 Thing Interaction Frameworkの基本機能の例:ライトの明るさ調整と状態変化の履歴の可視化

(2)トリガーとServer Extension:温度に応じたエアコン操作

次のデモは、「室内温度がしきい値を超えたらエアコンの設定温度を下げる」という内容です。この場合、

①Kii Cloudが温度センサー(擬似)からの定期的な温度情報を受け取り、設定したしきい値を監視し、

②例えば「30℃」というようなしきい値超えをトリガーとして、エアコン(擬似)に対して設定温度を変更する(例えば27℃に設定する)コマンドを送信します。

③それと同時に、お客様独自のプログラムを記述したサーバーコード(Kii Cloud内に保管されています)を「Server Extension」という機能を使って呼び出し、しきい値を超えた温度値を任意のバケットに保存する処理をあわせて行ないます。

この一連の処理が実行されました。

なお、サーバーコードは、従来コマンドラインインタフェースで設定しなければならなかったのですが、開発者ポータルの「LABS」-「Server Code Console」で表示される画面内で設定できるようになりました。これは是非ご活用いただきたいと思います。

  • 図9 開発者ポータル内のServer Code Console

(3)ゲートウェイを利用して制御の成功/失敗を確認

デバイス側がシャットダウンしている場合には、上記のようなエアコン操作が当然できないわけですが、ゲートウェイを利用すると、その死活状態に応じて制御がどうなったのかの情報を開発者ポータルから確認できます。
3つめのデモとして「ゲートウェイを介した制御成功の場合と失敗の場合のデモ」を行います。

① 温度センサー(擬似)からは定期的にランダムなデータを送信し、ゲートウェイ(Onboard済み)を介してKii Cloudに送ります。

②開発者ポータルでは「ゲートウェイとエンドノードのステータスがON」であることが確認できます。

③それを確認してKii Cloudからコマンドを送信すると、ゲートウェイがそれを受けてエアコンを制御します。

④エアコンからはコマンド実行結果をゲートウェイに送信し、ゲートウェイではコマンド実行結果を更新して、状態情報をKii Cloudに送信、開発者ポータルではコマンド履歴と実行結果(DONE)を確認できます。

上記の処理が実行されました。

これが制御に成功した場合の例です。次に失敗例ですが、

① 温度センサーとエアコンをシャットダウンしてみますと、エンドノードのステータスがOFFになります。

②その状態でコマンドを送信すると、ゲートウェイはエンドノードの状態に応じた実行結果をKii Cloudに返します。

③すると開発者ポータルではコマンド履歴とともに、実行結果(IMCOMPLETE)を確認できます。

上記の処理が実行されました。

失敗した場合でもその確認と、履歴の記録ができるわけです。

  • 図10 ゲートウェイを利用してエンドノード死活を監視、制御の成功/失敗を確認

なお、ゲートウェイエージェントの利用の際には、お客様側でプロトコルコンバータを用意していただく必要があります。多くの場合、リファレンスコードをご提供しますので、ご相談下さい。また、この記事でご紹介したことと類似のことが行えるサンプルプログラムを公開(http://docs.kii.com/ja/samples/hello-thingif/)していますので、そちらもあわせてご参照いただければ幸いです。

  • 図11 ゲートウェイエージェントを利用したシステム構成イメージ

今回の勉強会の内容は以上です。なお、こぼれ話として、Kii技術者から今後の構想として、セキュリティ強化のために証明書ベースのデバイス認証を対応予定なこと、また外部へのデータエクスポート機能を強化していく予定であることが少しだけ語られました。今後にご期待ください。また、今回のデモでは比較的最近提供された「Devlog Viewer」機能が一部紹介されました。この機能はコンソールの「LABS」-「Devlog Viewer」で起動できます。こちらもお試しいただければ幸いです。

Kii Cloud

前の記事< | トップへ戻る |

無料トライアル