ステートの参照

Thing から定期的にアップロードされているステートをアプリから参照することができます。機能概要は こちら をご覧ください。

スキーマ定義 で設計したステートの構成にしたがって、最新のステートを取得できます。たとえば、スキーマ定義のページで提示したエアコンの例では、以下のような JSON を想定しています。

{
  "power" : true,
  "presetTemperature" : 25,
  "fanspeed" : 5,
  "currentTemperature" : 28,
  "currentHumidity" : 65
}

最新のステートを読み込むには以下のようなコードを実行します。

実行に先立って、初期化コードの実装 に示す方法によって、初期登録済みの ThingIFAPI インスタンス(api)を入手しておく必要があります。

  • // Get the thing state.
    api.getState().then((state: any) => {
      // Do something.
      console.log(JSON.stringify(state));
    }).catch((error: ThingIF.ThingIFError) => {
      // Handle the error.
    });
  • // Get the thing state.
    api.getState().then(
      function(state) {
        // Do something.
        console.log(JSON.stringify(state));
      }
    ).catch(
      function(error) {
        // Handle the error.
      }
    );

getState メソッドを呼び出すと、Promise によってステートの JSON に対応する Object を取得できます。上記のサンプルコードでは、初めに示した JSON と同等の文字列がコンソールに出力されます。

ステートを取得後、state.power などで値にアクセスできます。

なお、TypeScript では、以下のようなデータ型を定義することにより、ステートの型をより明確に扱うことができます。

// AirConditionerState.ts
export class AirConditionerState {
  power: boolean;
  presetTemperature: number;
  fanspeed: number;
  currentTemperature: number;
  currentHumidity: number;
}
import {AirConditionerState} from './AirConditionerState';

...

// Get the thing state.
api.getState().then((state: AirConditionerState) => {
  // Do something.
  console.log(state.power);
  console.log(state.presetTemperature);
  console.log(state.fanspeed);
  console.log(state.currentTemperature);
  console.log(state.currentHumidity);
}).catch((error: ThingIF.ThingIFError) => {
  // Handle the error.
});

Thing-IF SDK for JavaScript ではステート履歴の検索・取得はできません。REST API開発者ポータル をご利用ください。