ステートのアップロードと確認
Thing の状態を表すステートを Thing Interaction Framework にアップロードできます。また、アップロードされた最新のステートを確認できます。
このガイドでは Thing よりステートをアップロードする方法と、アップロードされたステートを開発者ポータル上で確認する方法を説明します。
ステートのアップロード
ステートのアップロードは一定間隔での自動的に実行されます。ステートは、Thing 機能の登録 で追加したトレート定義の形式に基づいて JSON 形式で生成してください。これらの機能概要は ステートの登録と取得 をご覧ください。
SDK は、内部でステート更新用のタスク(スレッド)を生成し、そのタスクからステートアップデーターを一定間隔で呼び出します。呼び出し間隔は初期化の際に指定します。
ステートの更新のタイミングは、SDK 側が制御しているため、Thing 側のプログラムから自発的に更新することはできません。
コールバック関数内の処理によっては、排他処理の実装が必要になる場合があります。タスクの詳細は こちら をご覧ください。
ステートのアップロードに関連するコールバック関数
ステートアップローダーのコールバック関数のプロトタイプは以下のとおりです。
アップロードサイズの設定用コールバック関数
SDK にアップロードサイズを通知するためのコールバック関数です。アップロードする JSON のサイズを返してください。
typedef size_t (*TIO_CB_SIZE)(void* userdata);
アップロードデータの設定用コールバック関数
SDK にアップロードするデータを渡すためのコールバック関数です。1回の呼び出しでは
buffer
にsize
を超えない分のデータを入れてそのデータのサイズを返してください。このコールバック関数は1回のアップロード時に複数回呼ばれます。大きいデータをアップロードする場合は分割して設定してください。データを全て渡し終えた後の呼び出しで
0
を返すことでデータ渡しが完了します。typedef size_t (*TIO_CB_READ)(char *buffer, size_t size, void *userdata);
ステートアップロードの開始
上の2つのコールバック関数とユーザデータ(サンプル内では updater_cb_*_ctx )を引数に tio_updater_start
を実行するとアップロード用のタスクが生成され実行されるようになります。
呼び出しの際 kii_author_t
が必要になります。これは初期登録を行ったインスタンスから取得してください。ここでは tio_handler_t
インスタンスから取得しています。
tio_updater_t
インスタンスで初期登録を行った場合は tio_updater_get_author
を使用してください。
const kii_author_t* author = tio_handler_get_author(&handler);
tio_updater_start(
&updater,
author,
updater_cb_size,
&updater_cb_size_ctx,
updater_cb_read,
&updater_cb_read_ctx);
各コールバック関数の詳細などは ebisu/tio
下の各環境向けのサンプルなどをご確認ください。
ステートの確認
ステートは、開発者ポータルの Thing コンソール で確認できます。
操作方法の詳細は ステートの管理 をご覧ください。