ステートのアップロードと確認

Thing の状態を表すステートを Thing Interaction Framework にアップロードできます。また、アップロードされた最新のステートを確認できます。

このガイドでは Thing よりステートをアップロードする方法と、アップロードされたステートを開発者ポータル上で確認する方法を説明します。

ステートのアップロード

ステートのアップロードは一定間隔での自動的に実行されます。ステートは、Thing 機能の登録 で追加したトレート定義の形式に基づいて JSON 形式で生成してください。これらの機能概要は ステートの登録と取得 をご覧ください。

SDK は、内部でステート更新用のタスク(スレッド)を生成し、そのタスクからステートアップデーターを一定間隔で呼び出します。呼び出し間隔は初期化の際に指定します。

ステートの更新のタイミングは、SDK 側が制御しているため、Thing 側のプログラムから自発的に更新することはできません。

コールバック関数内の処理によっては、排他処理の実装が必要になる場合があります。タスクの詳細は こちら をご覧ください。

ステートのアップロードに関連するコールバック関数

ステートアップローダーのコールバック関数のプロトタイプは以下のとおりです。

  • アップロードサイズの設定用コールバック関数

    SDK にアップロードサイズを通知するためのコールバック関数です。アップロードする JSON のサイズを返してください。

    typedef size_t (*TIO_CB_SIZE)(void* userdata);
    
  • アップロードデータの設定用コールバック関数

    SDK にアップロードするデータを渡すためのコールバック関数です。1回の呼び出しでは buffersize を超えない分のデータを入れてそのデータのサイズを返してください。

    このコールバック関数は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 コンソール で確認できます。

操作方法の詳細は ステートの管理 をご覧ください。