アプリケーション開発

イベントメッセージ

デバイスによっては、リクエスト・レスポンス型のサービスだけでなく、非同期にイベント情報を通知するサービスもあります。Symphony はダッシュボードとの間で非同期イベント通知に対応するため、WebSocket チャネルを提供しています。

WebSocket で Symphony と接続した直後に、Symphony からセッションキーが与えられます。非同期イベント通知を提供するサービスに対してリクエストを送る際に、このセッションキーをパラメータとして送信する必要があります (パラメータ名: sessionKey)。リクエストが成立すると、デバイスからの非同期イベント情報は、WebSocket チャネルを通して送られてきます。

利用可能なサービスのうち、非同期イベント通知のリクエストに対応したサービスかどうかを知るには、ActionProfileInfo オブジェクトの x-type プロパティの値を確認します。この値が "event" であれば、非同期イベント通知に対応したサービスです。通常、通知開始はメソッドが "put"、通知停止は "delete" です。

非同期イベント通知開始のサービスプロファイル情報の例
{
  "/ticktack": {
    "put": {
      "summary": "クロック開始",
      "x-type": "event",
      "parameters": [...],
      ...
    }
  }
}
非同期イベント通知停止のサービスプロファイル情報の例
{
  "/ticktack": {
    "delete": {
      "summary": "クロック停止",
      "x-type": "event",
      "parameters": [...],
      ...
    }
  }
}

requestAction() メソッドを使うと、WebSocket 接続、セッションキー受信、および、リクエスト時のセッションキー送信といった一連の手順はすべて自動的に行われます。非同期メッセージ受信は、onwsmessage イベントハンドラにコールバック関数をセットします。

// 非同期イベント通知を提供するサービスにリクエストを送信
dSymphony.requestAction({
  actionId: 'ac-AB6C1C34E5101D6DB2F7EEBE9F0975F1'
}).then(function (res) {
  // 非同期イベント通知受信のイベントハンドラをセット
  dSymphony.onwsmessage = function (message) {
    // 非同期イベント通知をコンソールに出力
    console.log(JSON.stringify(message, null, '  '));
  };
}).catch(function (error) {
  console.error(error);
});

一方、request() メソッドを使う場合は、手動で一連の手順を実行する必要があります。wsOpen() メソッドを使って WebSocket チャネルを用意します。WebSocket チャネル確立に成功するとセッションキーが得られます。そのセッションキーを request() メソッドにパラメータとして与えます。

// WebSocket 接続
dSymphony.wsOpen().then(function (session_key) {
  // 非同期イベント通知を提供するサービスにリクエストを送信
  return dSymphony.request({
    path: '/clock/ticktack',
    method: 'put',
    thingId: thing_id,
    parameters: {
      sessionKey: session_key // セッションキー
    }
  });
}).then(function (res) {
  // 非同期イベント通知受信のイベントハンドラをセット
  dSymphony.onwsmessage = function (message) {
    // 非同期イベント通知をコンソールに出力
    console.log(JSON.stringify(message, null, '  '));
  };
}).catch(function (error) {
  console.error(error);
});

requestAction()request() メソッドのいずれの場合も、WebSocket チャネルを自動的に切断することはしません。もし非同期イベント通知を停止したら、wsClose() メソッドを呼び出してください。

onwsmessage

onwsmessage プロパティは、WebSocket チャネルを経由して Symphony から送信されてきた非同期イベント通知を受信するためのイベントハンドラです。

dSymphony.onwsmessage = function(message) {
  console.log(JSON.stringify(message, null, '  '));
};

onwsopen

onwsopen プロパティは、Symphony と WebSocket チャネルが確立したときに呼び出されるイベントハンドラです。

dSymphony.onwsopen = function() {
  console.log('WebSocket チャネルが確立しました。');
};

onwsclose

onwsclose プロパティは、Symphony と WebSocket チャネルが切断されたときに呼び出されるイベントハンドラです。このイベントハンドラは、wsClose() メソッドを使って意図的に切断した場合には呼び出されません。このイベントハンドラには、Error オブジェクトが引き渡されます。

dSymphony.onwsclose = function(error) {
  console.log(error.message);
};

wsState

wsState プロパティは、WebSocket コネクションの状態を数値で返します。数値の意味は下表のとおりです。

意味 説明
0 未接続 WebSocket コネクションが確立していない状態を表します。正確には、wsOpen() メソッドを呼び出す前、および、wsClose() メソッドを呼び出した後の状態を表します。
1 接続中 wsOpen() メソッドを呼び出した直後から、WebSocket コネクションが確立するまでの状態を表します。
2 接続済み WebSocket コネクションが確立している状態を表します。

wsOpen()

このメソッドは Symphony と WebSocket チャネルを確立します。このメソッドは、Promise オブジェクトを返します。WebSocket チャネルの確立に成功すると、コールバック関数にはセッションキーが引き渡されます。

dSymphony.wsOpen().then(function (session_key) {
  console.log(session_key);
}).catch(function (error) {
  console.error(error);
});

wsClose()

このメソッドは Symphony との WebSocket チャネルを切断します。このメソッドは非同期ではありませんので Promise オブジェクトは返しません。

console.log(dSymphony.wsState); // 2
dSymphony.wsClose();
console.log(dSymphony.wsState); // 0

レスポンス

GatewayInfo オブジェクト

このオブジェクトはゲートウェイ情報を表します。このオブジェクトには主に以下のプロパティが含まれます。

プロパティ名 説明
gatewayId String ゲートウェイ ID。
gatewayName String ゲートウェイの名前。updateGateway() メソッドを使って自由に変更できます。
gatewayUuid String ゲートウェイの UUID。
gatewayType String ゲートウェイの種別を表す文字列。mobile, hgw のいずれか。
manager String ゲートウェイにインストールされているデバイスコネクトマネージャーの名称。
managerVersion String ゲートウェイにインストールされているデバイスコネクトマネージャーのバージョン。
agent String ゲートウェイにインストールされている Symphony エージェントの名称。
agentVersion String ゲートウェイにインストールされている Symphony エージェントのバージョン。
osType String ゲートウェイの OS の種類。この情報は空文字列の場合があります。
osVersion String ゲートウェイの OS のバージョン。この情報は空文字列の場合があります。
modelName String ゲートウェイのモデル名。この情報は空文字列の場合があります。
isOnline Boolean ゲートウェイがオンラインなら true、オフラインなら false がセットされます。
{
  "gatewayId": "gw-CAE3AB3F4F5A93733CF2451E720F2344",
  "gatewayName": "node-gotapi",
  "gatewayUuid": "836a8e20-025e-11a8-392e-b827ebbd2f2e",
  "gatewayType": "hgw",
  "manager": "node-gotapi",
  "managerVersion": "0.3.3",
  "agent": "node-gotapi-agent",
  "agentVersion": "v2.20180305",
  "osType": "",
  "osVersion": "",
  "modelName": "node-gotapi-agent",
  "isOnline": true
}

UnregisteredDeviceInfo オブジェクト

このオブジェクトは未登録のデバイス情報を表します。このオブジェクトには主に以下のプロパティが含まれます。

プロパティ名 説明
deviceName String デバイス名。
thingId String シング ID。
serviceId String サービス ID。この ID は、デバイスコネクト側で割り振ったデバイスの識別子です。通常、デバイスコネクト側では同一のデバイスに対しては同一の serviceId を割り当てます。2 つのゲートウェイが同じデバイスを認識していた場合、Symphony 上は別々のデバイスとして認識します (別々の thingId が割り当てられます) が、デバイスコネクト側で同一デバイス同一 servcieId の原則を実現していれば、この serviceId は同じになります。
type String デバイスへ接続するネットワークの種別 (Bluetooth, BLE, WiFi, NFC, USB など)。デバイスコネクトプラグインがセットする値ですが、セットされていなければ空文字列がセットされます。
isOnline Boolean オンラインフラグ。該当のデバイスがオンラインなら true、オフラインなら false がセットされます。
config Object デバイスコネクトプラグインがセットする固有のデータ。なければ null がセットされます。
scopes Array デバイスコネクト規定のスコープのリスト。(例:temperature, light, hello, battery)
gatewayList Array ゲートウェイ情報。
gatewayId String ゲートウェイ ID。
gatewayName String ゲートウェイ 名。
gatewayType String ゲートウェイの種別を表す文字列。mobile, hgw のいずれか。
isOnline Boolean ゲートウェイがオンラインなら true、オフラインなら false がセットされます。
{
  "thingId": "th-2D0AB85CB301495FED4821D22D1737C1",
  "deviceName": "Sense HAT",
  "type": "",
  "isOnline": true,
  "config": null,
  "scopes": [
    "serviceInformation",
    "light",
    "temperature",
    "humidity",
    "atmosphericPressure"
  ],
  "gatewayList": [
    {
      "gatewayId": "gw-CAE3AB3F4F5A93733CF2451E720F2344",
      "gatewayName": "仕事部屋のゲートウェイ",
      "gatewayType": "hgw",
      "isOnline": true
    }
  ]
}

DeviceInfo オブジェクト

このオブジェクトはデバイス情報を表します。このオブジェクトには主に以下のプロパティが含まれます。

プロパティ名 説明
deviceName String デバイス名。
thingId String シング ID。
serviceId String サービス ID。この ID は、デバイスコネクト側で割り振ったデバイスの識別子です。通常、デバイスコネクト側では同一のデバイスに対しては同一の serviceId を割り当てます。2 つのゲートウェイが同じデバイスを認識していた場合、Symphony 上は別々のデバイスとして認識します (別々の thingId が割り当てられます) が、デバイスコネクト側で同一デバイス同一 servcieId の原則を実現していれば、この serviceId は同じになります。
deviceCategory String デバイスのカテゴリー識別文字列。この値は、Symphony が認識しているデバイスの種類を表す文字列。
type String デバイスへ接続するネットワークの種別 (Bluetooth, BLE, WiFi, NFC, USB など)。デバイスコネクトプラグインがセットする値ですが、セットされていなければ空文字列がセットされます。
isOnline Boolean オンラインフラグ。該当のデバイスがオンラインなら true、オフラインなら false がセットされます。
config Object デバイスコネクトプラグインがセットする固有のデータ。なければ null がセットされます。
scopes Array デバイスコネクト規定のスコープのリスト。(例:temperature, light, hello, battery)
userId String ユーザー ID。
userName String ユーザー名。
ailiases Array デバイスコネクトにおける serviceId が一致する thingId のリスト。ゲートウェイが 1 つしかなければ、このデバイスの thingId が 1 つだけセットされます。ゲートウェイが 2 つあり、それぞれで同じデバイスを登録した場合、自身の thingId に加え、もう一方の thingId が加えられます。
gateway Object ゲートウェイ情報。チーミングデバイスの場合は null がセットされます。
gatewayId String ゲートウェイ ID。
gatewayName String ゲートウェイ 名。
gatewayType String ゲートウェイの種別を表す文字列。mobile, hgw のいずれか。
isOnline Boolean ゲートウェイがオンラインなら true、オフラインなら false がセットされます。
nicknameList Array デバイスに割り当てられたニックネーム情報を格納したオブジェクトのリスト。
nicknameId String ニックネーム ID
nickname String ニックネーム
tagList Array デバイスに割り当てられたタグ情報を格納したオブジェクトのリスト。
tagId String タグ ID
tagName String タグ 名
{
  "deviceName": "Hue color lamp 1",
  "thingId": "th-A7E2F85D264D52E8F2EA0B507D8CCA57",
  "serviceId": "hue-light-0017882C7D50-1",
  "deviceCategory": "light",
  "type": "",
  "isOnline": true,
  "config": null,
  "scopes": [
    "serviceInformation",
    "light",
    "hello"
  ],
  "userId": "wNrFkaOg",
  "userName": "太郎",
  "ailiases": [
    "th-A7E2F85D264D52E8F2EA0B507D8CCA57"
  ],
  "gateway": {
    "gatewayId": "gw-CAE3AB3F4F5A93733CF2451E720F2344",
    "gatewayName": "仕事部屋のゲートウェイ",
    "gatewayType": "hgw",
    "isOnline": true
  },
  "nicknameList": [
    {
      "nicknameId": "nn-21B2106D486260AC6DE0FE3AE096D64E",
      "nickname": "居間の照明1"
    }
  ],
  "tagList": [
    {
      "tagId": "tg-F38172B6AC6ADE205A67706A54508704",
      "tagName": "居間の照明"
    }
  ]
}

DeviceActionInfo オブジェクト

このオブジェクトはアクション情報を含んだデバイス情報を表します。このオブジェクトには主に以下のプロパティが含まれます。

プロパティ名 説明
deviceName String デバイス名。
thingId String シング ID。
serviceId String サービス ID。この ID は、デバイスコネクト側で割り振ったデバイスの識別子です。通常、デバイスコネクト側では同一のデバイスに対しては同一の serviceId を割り当てます。2 つのゲートウェイが同じデバイスを認識していた場合、Symphony 上は別々のデバイスとして認識します (別々の thingId が割り当てられます) が、デバイスコネクト側で同一デバイス同一 servcieId の原則を実現していれば、この serviceId は同じになります。
deviceCategory String デバイスのカテゴリー識別文字列。この値は、Symphony が認識しているデバイスの種類を表す文字列。
type String デバイスへ接続するネットワークの種別 (Bluetooth, BLE, WiFi, NFC, USB など)。デバイスコネクトプラグインがセットする値ですが、セットされていなければ空文字列がセットされます。
isOnline Boolean オンラインフラグ。該当のデバイスがオンラインなら true、オフラインなら false がセットされます。
config Object デバイスコネクトプラグインがセットする固有のデータ。なければ null がセットされます。
scopes Array デバイスコネクト規定のスコープのリスト。(例:temperature, light, hello, battery)
userId String ユーザー ID。
userName String ユーザー名。
gateway Object ゲートウェイ情報。チーミングデバイスの場合は null がセットされます。
gatewayId String ゲートウェイ ID。
gatewayName String ゲートウェイ 名。
gatewayType String ゲートウェイの種別を表す文字列。mobile, hgw のいずれか。
isOnline Boolean ゲートウェイがオンラインなら true、オフラインなら false がセットされます。
actionInfo Object アクションを表す ActionInfoオブジェクト。
{
  "deviceName": "Hue color lamp 1",
  "thingId": "th-A7E2F85D264D52E8F2EA0B507D8CCA57",
  "serviceId": "hue-light-0017882C7D50-1",
  "deviceCategory": "light",
  "type": "",
  "isOnline": true,
  "config": null,
  "scopes": [
    "serviceInformation",
    "light",
    "hello"
  ],
  "userId": "wNrFkaOg",
  "userName": "太郎",
  "gateway": {
    "gatewayId": "gw-CAE3AB3F4F5A93733CF2451E720F2344",
    "gatewayName": "仕事部屋のゲートウェイ",
    "gatewayType": "hgw",
    "isOnline": true
  },
  "actionInfo": {
    ...
  }
}

TagInfo オブジェクト

このオブジェクトはタグ情報を表します。このオブジェクトには主に以下のプロパティが含まれます。

プロパティ名 説明
tagId String タグ ID。
tagName String タグ名。
deviceList Array タグに関連付けられたデバイス情報のリスト。
deviceName String デバイス名。
thingId String シング ID。
serviceId String サービス ID。この ID は、デバイスコネクト側で割り振ったデバイスの識別子です。通常、デバイスコネクト側では同一のデバイスに対しては同一の serviceId を割り当てます。2 つのゲートウェイが同じデバイスを認識していた場合、Symphony 上は別々のデバイスとして認識します (別々の thingId が割り当てられます) が、デバイスコネクト側で同一デバイス同一 servcieId の原則を実現していれば、この serviceId は同じになります。
deviceCategory String デバイスのカテゴリー識別文字列。この値は、Symphony が認識しているデバイスの種類を表す文字列。
type String デバイスへ接続するネットワークの種別 (Bluetooth, BLE, WiFi, NFC, USB など)。デバイスコネクトプラグインがセットする値ですが、セットされていなければ空文字列がセットされます。
isOnline Boolean オンラインフラグ。該当のデバイスがオンラインなら true、オフラインなら false がセットされます。
config Object デバイスコネクトプラグインがセットする固有のデータ。なければ null がセットされます。
scopes Array デバイスコネクト規定のスコープのリスト。(例:temperature, light, hello, battery)
userId String ユーザー ID。
userName String ユーザー名。
{
  "tagId": "tg-F38172B6AC6ADE205A67706A54508704",
  "tagName": "居間の照明",
  "deviceList": [
    {
      "deviceName": "Hue color lamp 1",
      "thingId": "th-A7E2F85D264D52E8F2EA0B507D8CCA57",
      "serviceId": "hue-light-0017882C7D50-1",
      "deviceCategory": "light",
      "type": "",
      "isOnline": true,
      "config": null,
      "scopes": [
        "serviceInformation",
        "light",
        "hello"
      ],
      "userId": "wNrFkaOg",
      "userName": "太郎"
    },
    ...
  ]
}

NicknameInfo オブジェクト

このオブジェクトはニックネーム情報を表します。このオブジェクトには主に以下のプロパティが含まれます。

プロパティ名 説明
nicknameId String ニックネーム ID。
nickname String ニックネーム。
deviceList Array 該当のニックネームが関連付けられているデバイス情報のリスト。
deviceName String デバイス名。
thingId String シング ID。
serviceId String サービス ID。この ID は、デバイスコネクト側で割り振ったデバイスの識別子です。通常、デバイスコネクト側では同一のデバイスに対しては同一の serviceId を割り当てます。2 つのゲートウェイが同じデバイスを認識していた場合、Symphony 上は別々のデバイスとして認識します (別々の thingId が割り当てられます) が、デバイスコネクト側で同一デバイス同一 servcieId の原則を実現していれば、この serviceId は同じになります。
deviceCategory String デバイスのカテゴリー識別文字列。この値は、Symphony が認識しているデバイスの種類を表す文字列。
type String デバイスへ接続するネットワークの種別 (Bluetooth, BLE, WiFi, NFC, USB など)。デバイスコネクトプラグインがセットする値ですが、セットされていなければ空文字列がセットされます。
isOnline Boolean オンラインフラグ。該当のデバイスがオンラインなら true、オフラインなら false がセットされます。
config Object デバイスコネクトプラグインがセットする固有のデータ。なければ null がセットされます。
scopes Array デバイスコネクト規定のスコープのリスト。(例:temperature, light, hello, battery)
userId String ユーザー ID。
userName String ユーザー名。
{
  "nicknameId": "nn-9D0DD0330D6C963E2063B3878CDECD17",
  "nickname": "居間のリモコン",
  "deviceList": [
    {
      "deviceName": "赤外線リモコン REX",
      "thingId": "th-DF069858E95F1BB895D97006BAC7F6AA",
      "serviceId": "hue-light-0017882C7D50-1",
      "deviceCategory": "rex-base",
      "type": "",
      "isOnline": true,
      "config": null,
      "scopes": [
        "serviceInformation",
        "temperature",
        "preset",
        "humidity",
        "light",
        "battery",
        "hello",
        "illuminance",
        "device"
      ],
      "userId": "wNrFkaOg",
      "userName": "太郎"
    }
  ]
}

ActionInfo オブジェクト

このオブジェクトはアクション情報を表します。このオブジェクトには主に以下のプロパティが含まれます。

プロパティ名 説明
actionId Integer アクション ID。
summary String アクション概要。
url String リクエストパスとリクエストメソッド。
profile String アクションプロファイルの情報を格納した ActionProfileInfo オブジェクト。
shareUserList Array 該当のアクションの利用を許可した共有ユーザー情報のリスト。
userId String ユーザー ID。
userName String ユーザー名。
isInvalid String 共有ユーザーの無効フラグ。true なら無効、false なら有効。
{
  "actionId": "ac-7A38F3E91034566581C54FA9D7D150D9",
  "summary": "Light On API (点灯)",
  "url": "/light:post",
  "profile": {...},
  "shareUserList": [
    {
      "userId": "WEdfn98Q",
      "userName": "花子",
      "isInvalid": false
    }
  ]
}

ActionProfileInfo オブジェクト

このオブジェクトは、デバイスコネクトが Symphony に送信したサービスプロファイルのうち、該当のアクションに相当する情報を表します。

{
  "/": {
    "post": {
      "summary": "Light On API (点灯)",
      "description": "ライトを点灯します。",
      "x-type": "one-shot",
      "parameters": [
        {
          "name": "thingId",
          "in": "query",
          "description": "サービスID",
          "required": true,
          "type": "string"
        },
        {
          "name": "color",
          "in": "query",
          "description": "ライトの色",
          "required": false,
          "type": "string",
          "format": "rgb"
        },
        {
          "name": "brightness",
          "in": "query",
          "description": "ライトの明度",
          "required": false,
          "type": "number",
          "format": "float",
          "maximum": 1,
          "minimum": 0.01
        },
        {
          "name": "flashing",
          "in": "query",
          "description": "ライトの点滅パターン",
          "required": false,
          "type": "array",
          "items": {
            "type": "integer",
            "format": "int64",
            "minimum": 1
          }
        }
      ],
      "responses": {
        "200": {
          "description": ""
        }
      }
    }
  }
},

オブジェクト構造のトップに "/" がありますが、これは、デバイスコネクトのリクエストパスの第二階層目からのパスを表します。このオブジェクトを返すメソッドのレスポンスでは、このオブジェクトの親となる ActionInfo オブジェクトに、フルパスを表す url というプロパティが提供されるはずです (例:"/light/:post")。request() メソッドを使ってアクション実行リクエストを送る際には、このフルパスを使ってください。

以下は、getDeviceActions() メソッドのレスポンスに含まれる ActionInfo オブジェクトの例です。

{
  ...
  "actionInfo": {
    "actionId": "ac-7A38F3E91034566581C54FA9D7D150D9",
    "summary": "Light On API (点灯)",
    "url": "/light:post",
    "profile": { // 本オブジェクト
      "/": {
        "post": {...}
      }
    },
    "shareUserList": []
  },
  ...
}

このように、リクエストを送る場合に必要なパスとメソッドは、本オブジェクトの親の ActionInfo オブジェクトの url プロパティの値を参照し、本オブジェクトの第一階層のパスと第二階層のメソッドは無視しても構いません (本オブジェクトの第一階層のパスは完全なものではない、第二階層のメソッドはフルパス情報に含まれるメソッドと同じため)。

UserInfo オブジェクト

このオブジェクトはユーザー情報を表します。このオブジェクトには主に以下のプロパティが含まれます。

プロパティ名 説明
userId String ユーザー ID。
userName String ユーザー名。
{
  "userId": "WEdfn98Q",
  "userName": "花子"
}

RoleInfo オブジェクト

このオブジェクトはロール情報を表します。このオブジェクトには主に以下のプロパティが含まれます。

プロパティ名 説明
roleId Integer ロール ID。
roleName String ロール名。
permissionList Array パーミッション情報を表す PermissionInfo オブジェクトのリスト。
userId String ユーザー ID。
{
  "roleId": "rl-964BBB96F1ECCC7648CCDC5F5FDC420F",
  "roleName": "Hue Light #1 ON",
  "permissionList": [
    {
      "permissionId": "pm-96803FB6E14D2FD3F8DDD58998C31796",
      "thingId": "th-A7E2F85D264D52E8F2EA0B507D8CCA57",
      "actionId": null,
      "additional": {
        "term": [
          {
            "once": {
              "from": "2018-03-01T00:00:00+09:00",
              "to": "2018-04-01T00:00:00+09:00"
            },
            "weekly": null,
            "everyday": null
          }
        ],
        "location": [],
        "number": []
      },
      "policy": "DeviceFullAccess"
    }
  ],
  "userId": "wNrFkaOg"
}

PermissionInfo オブジェクト

このオブジェクトはパーミッション情報を表します。このオブジェクトには主に以下のプロパティが含まれます。

プロパティ名 説明
permissionId String パーミッション ID。
thingId String シング ID。
actionId String アクション ID。
additional Object パーミッションを与える付帯条件を格納した PermissionAdditionalInfoオブジェクト。
policy String ポリシー。DeviceFullAccess (デバイス API のフルアクセス権限)、ArchiveFullAccess (アーカイブ API のフルアクセス権限)、ArchiveReadWrite (アーカイブ API の GET、PUT API のみ利用可能な権限)、ArchiveReadOnly (アーカーブ API のGET API のみ利用可能な権限) のいずれか。
{
  "permissionId": "pm-96803FB6E14D2FD3F8DDD58998C31796",
  "thingId": "th-A7E2F85D264D52E8F2EA0B507D8CCA57",
  "actionId": null,
  "additional": {
    "term": [
      {
        "once": {
          "from": "2018-03-01T00:00:00+09:00",
          "to": "2018-04-01T00:00:00+09:00"
        },
        "weekly": null,
        "everyday": null
      }
    ],
    "location": [],
    "number": []
  },
  "policy": "DeviceFullAccess"
}

PermissionAdditionalInfo オブジェクト

このオブジェクトはパーミッションの付帯条件の情報を表します。このオブジェクトには主に以下のプロパティが含まれます。

プロパティ名 説明
term Object 時間による条件。
once Object 期間による条件。from に指定した日時から to に指定した日時の間はずっと許可します。
from String 開始日時。読み取り時は "2017-11-20T00:00:00+09:00" 形式。リクエストの場合、指定する日時形式は JavaScript の Date オブジェクトが認識可能なものであれば、何でも構いません。(例:2017-11-20T00:00:00+09:00)
to String 終了日時。読み取り時は "2017-11-20T00:00:00+09:00" 形式。リクエストの場合、指定する日時形式は JavaScript の Date オブジェクトが認識可能なものであれば、何でも構いません。(例:2017-11-20T00:00:00+09:00)
weekly Object 曜日による条件。例えば、毎月第二週目の土日だけ許可したいなら、execute"2"dayoftheWeek"6,7" をセットします。
from String 開始日時。読み取り時は "2017-11-20T00:00:00+09:00" 形式。リクエストの場合、指定する日時形式は JavaScript の Date オブジェクトが認識可能なものであれば、何でも構いません。(例:2017-11-20T00:00:00+09:00)
to String 終了日時。読み取り時は "2017-11-20T00:00:00+09:00" 形式。リクエストの場合、指定する日時形式は JavaScript の Date オブジェクトが認識可能なものであれば、何でも構いません。(例:2017-11-20T00:00:00+09:00)
dayoftheWeek String 1 (月曜日) ~ 7 (日曜日) を文字列としてしています。複数指定する場合は、カンマ区切りです。(例:1,2,3,4,5)
execute String 実行する週を 1 ~ 5 で文字列としてしています。この週の番号とは、該当付きの第何週目かを意味します。複数指定する場合は、カンマ区切りです。(例:1,2,3,4,5)
everyday Object 毎日特定の時間帯を指定する条件。fromto には、開始時間を終了時間を指定しますが、日付に相当する部分は無視されます。例えば、毎日 08:00 ~ 17:00 だけ許可したい場合は、from"2018-01-01T08:00:00+09:00" を、to2018-01-01T17:00:00+09:00 を指定します。
from String 開始日時。読み取り時は "2017-11-20T00:00:00+09:00" 形式。リクエストの場合、指定する日時形式は JavaScript の Date オブジェクトが認識可能なものであれば、何でも構いません。(例:2017-11-20T00:00:00+09:00)
to String 終了日時。読み取り時は "2017-11-20T00:00:00+09:00" 形式。リクエストの場合、指定する日時形式は JavaScript の Date オブジェクトが認識可能なものであれば、何でも構いません。(例:2017-11-20T00:00:00+09:00)
location Object 位置による条件。
coordinate Object 座標による条件。
longitude String 経度 (例:"139.7527995")。
latitude String 緯度 (例:"35.685175")。
range Integer 範囲。単位はメートルです。
id Object 位置 ID による条件。ビーコン などのユースケースを想定した機能です。
locationId String 位置 ID
number Object 数値による条件。例えば、エアコンの温度を 18 (range.min) ~ 25 (range.max) °C の範囲でしか設定できない、や、テレビのチャンネルは "1,2,11" (specify.numbers) しか設定できない、といったケースを想定した機能です。そのパラメータ名は physicalName に指定します。
physicalName String パラメータ名。
range Object 範囲指定。
max Float 最大
min Float 最大
specify Object 番号指定。
numbers String 数値をカンマ区切り。

TeamingInfo オブジェクト

このオブジェクトはチーミング情報を表します。このオブジェクトには主に以下のプロパティが含まれます。

プロパティ名 説明
thingId String チーミングデバイスのシング ID。
mode String AGGREGATIONFAULT_TOLERANCE のどちらか。
teamedDeviceList Array チーミングを構成するデバイス情報のリスト。二つのデバイス情報が格納されます。
thingId String シング ID。
weight Integer リクエストの配分 (1 ~ 100)。modeAGGREGATION の場合のみ有効。modeFAULT_TOLERANCE の場合は null がセットされます。
metric Integer 優先順位 (1 または 2)。modeFAULT_TOLERANCE の場合のみ有効。AGGREGATION の場合は null がセットされます。
isFailbackEnabled Boolean 自動フェイルバックフラグ。true なら自動フェイルバックが有効、false なら無効を表します。modeFAULT_TOLERANCE の場合のみ有効。AGGREGATION の場合は null がセットされます。
failbackTime Integer 自動フェイルバック周期 (60 ~ 86400 秒)。modeFAULT_TOLERANCE の場合のみ有効。AGGREGATION の場合は null がセットされます。
state String フェールバック状態。ACT (アクティブ)、SBY (スタンバイ)、OFFLINE (オフライン) のいずれかがセットされます。modeFAULT_TOLERANCE の場合のみ有効。AGGREGATION の場合は null がセットされます。
AGGREGATION モード の場合の例
{
  "thingId": "th-2978C5C3686A50FBBA078438930B12FE",
  "mode": "AGGREGATION",
  "teamedDeviceList": [
    {
      "thingId": "th-DF069858E95F1BB895D97006BAC7F6AA",
      "weight": 80,
      "metric": null,
      "isFailbackEnabled": null,
      "failbackTime": null,
      "state": null
    },
    {
      "thingId": "th-0B57BD0C829BFDF6E5D60403579A0CF5",
      "weight": 20,
      "metric": null,
      "isFailbackEnabled": null,
      "failbackTime": null,
      "state": null
    }
  ]
}
FAULT_TOLERANCE モードの場合の例
{
  "thingId": "th-2978C5C3686A50FBBA078438930B12FE",
  "mode": "FAULT_TOLERANCE",
  "teamedDeviceList": [
    {
      "thingId": "th-DF069858E95F1BB895D97006BAC7F6AA",
      "weight": null,
      "metric": 1,
      "isFailbackEnabled": true,
      "failbackTime": 300,
      "state": "ACT"
    },
    {
      "thingId": "th-0B57BD0C829BFDF6E5D60403579A0CF5",
      "weight": null,
      "metric": 2,
      "isFailbackEnabled": true,
      "failbackTime": 300,
      "state": "SBY"
    }
  ]
}

ArchiveActionInfo オブジェクト

このオブジェクトはアーカイブ情報付きアクション情報を表します。このオブジェクトには主に以下のプロパティが含まれます。

プロパティ名 説明
actionId String アクション ID。
summary String アクション 概要。
thingId String シング ID。
deviceName String デバイス名。
gatewayId String ゲートウェイ ID。
gatewayName String ゲートウェイ 名。
gatewayType String ゲートウェイの種別を表す文字列。mobile, hgw のいずれか。
url String リクエストパスとリクエストメソッド。
state Integer アーカイブ設定状態 (0: 未設定, 1: 停止中, 2: 起動中)。
isGatewayOnline Boolean ゲートウェイのオンライン状態。true ならオンライン、false ならオフラインを表します。
{
  "actionId": "ac-7A38F3E91034566581C54FA9D7D150D9",
  "summary": "Light On API (点灯)",
  "thingId": "th-A7E2F85D264D52E8F2EA0B507D8CCA57",
  "deviceName": "Hue color lamp 1",
  "gatewayId": "gw-CAE3AB3F4F5A93733CF2451E720F2344",
  "gatewayName": "仕事部屋のゲートウェイ",
  "gatewayType": "hgw",
  "url": "/light:post",
  "state": 2,
  "isGatewayOnline": true
}