Thing の登録と取得

Thing を Kii Cloud で使用するには、まず Thing の登録が必要です。登録を行うことで Kii Cloud はこの Thing を認識します。

2 回目の起動以降に同じ Thing を使用するには、登録済みの Thing の認証を行います。また、Thing のハードウェアが不揮発性メモリーを持っている場合、取得したアクセストークンと thingID を記憶しておくこともできます。

Thing の登録または認証を行うと、API 呼び出しに使用する kii_t 構造体は、Thing のアクセストークンを持った状態になります。これによって、Thing の権限で Kii Cloud にアクセスできます。

Thing の登録

Thing を Kii Cloud に登録するには kii_thing_register 関数を呼び出します。

/* Set thing information. */
#define VENDOR_THING_ID "rBnvSPOXBDF9r29GJeGS"
#define THING_TYPE "sensor"
#define PASSWORD "123ABC"

int ret;

/* Register the thing. */
ret = kii_thing_register(&kii, VENDOR_THING_ID, THING_TYPE, PASSWORD);
if (ret != 0) {
  /* Handle the error. */
  return;
}

printf("thingID:%s\n", kii.kii_core.author.author_id);
printf("access token:%s\n", kii.kii_core.author.access_token);

ここでは、vendorThingID を "rBnvSPOXBDF9r29GJeGS"、Thing タイプ を "sensor"、パスワード を "123ABC" として Thing を登録しています。また、kiiSDK の初期化 で初期化した kii_t 構造体を指定します。

登録が成功すると、指定した kii_t 構造体には thingID とアクセストークンが保持された状態で制御が戻ります。これは、ログイン状態に相当し、後続の API の呼び出しを Thing の権限で実行できます。

登録した Thing の thingID と アクセストークンは、kii_tkii_core.author メンバーから取得できます。

Thing の認証

シャットダウンなどによって kii_t の情報が失われた後、登録済みの Thing をもう一度利用する場合は、kii_thing_authenticate 関数によって認証します。

/* Set thing information. */
#define VENDOR_THING_ID "rBnvSPOXBDF9r29GJeGS"
#define PASSWORD "123ABC"

int ret;

/* Authenticate the thing. */
ret = kii_thing_authenticate(&kii, VENDOR_THING_ID, PASSWORD);
if (ret != 0) {
  /* Handle the error. */
  return;
}

printf("thingID:%s\n", kii.kii_core.author.author_id);
printf("access token:%s\n", kii.kii_core.author.access_token);

ここでは、Thing の登録時に指定したとおり、vendorThingID を "rBnvSPOXBDF9r29GJeGS"、パスワード を "123ABC" として認証を行っています。

Thing の登録時と同様に、認証が成功すると、kii_t 構造体に thingID とアクセストークンが保持されている状態になります。kii_core.author 構造体からそれらを取得することもできます。

アクセストークンの設定

2 回目以降の起動時に kii_thing_authenticate 関数によって Thing を認証する代わりに、アクセストークンと thingID を不揮発性メモリーに保存しておき、次回、それを復元することでも認証と同様の結果が得られます。

認証成功時、ユーザープログラム側で用意した方法を使って、kii.kii_core.author.author_idkii.kii_core.author.access_token を文字列として記録しておきます。なお、author_idaccess_token は、それぞれ 128 バイトの char 配列として宣言されています。

/* Securely store the thing ID and the access token in the persistent storage with your own function. */
storeToken(kii.kii_core.author.author_id, kii.kii_core.author.access_token);

次回起動時は、初期化処理 が完了している kii_t 構造体に対して、保存した情報を下記のように復元します。

int ret;

/* Get the thing ID and the access token from the persistent storage with your own function. */
ret = getStoredToken(&kii.kii_core.author.author_id, &kii.kii_core.author.access_token);
if (ret != 0) {
  /* Handle the error. */
  return;
}

/* Do something. */

導入手順 でビルドしたサンプルプログラムでは、この方法で認証情報を復元しています。不揮発性メモリーに保存する代わりに、#define でハードコードされた author_idaccess_token をコード上で直接復元しています。#define の値は、Thing の登録または認証を行ったときの値に従って書き換えてください。