アプリケーション開発
イベントメッセージ
デバイスによっては、リクエスト・レスポンス型のサービスだけでなく、非同期にイベント情報を通知するサービスもあります。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 | 毎日特定の時間帯を指定する条件。from と to には、開始時間を終了時間を指定しますが、日付に相当する部分は無視されます。例えば、毎日 08:00 ~ 17:00 だけ許可したい場合は、from に "2018-01-01T08:00:00+09:00" を、to に 2018-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 | AGGREGATION か FAULT_TOLERANCE のどちらか。 |
teamedDeviceList |
Array | チーミングを構成するデバイス情報のリスト。二つのデバイス情報が格納されます。 |
thingId |
String | シング ID。 |
weight |
Integer | リクエストの配分 (1 ~ 100)。mode が AGGREGATION の場合のみ有効。mode が FAULT_TOLERANCE の場合は null がセットされます。 |
metric |
Integer | 優先順位 (1 または 2 )。mode が FAULT_TOLERANCE の場合のみ有効。AGGREGATION の場合は null がセットされます。 |
isFailbackEnabled |
Boolean | 自動フェイルバックフラグ。true なら自動フェイルバックが有効、false なら無効を表します。mode が FAULT_TOLERANCE の場合のみ有効。AGGREGATION の場合は null がセットされます。 |
failbackTime |
Integer | 自動フェイルバック周期 (60 ~ 86400 秒)。mode が FAULT_TOLERANCE の場合のみ有効。AGGREGATION の場合は null がセットされます。 |
state |
String | フェールバック状態。ACT (アクティブ)、SBY (スタンバイ)、OFFLINE (オフライン) のいずれかがセットされます。mode が FAULT_TOLERANCE の場合のみ有効。AGGREGATION の場合は null がセットされます。 |
{
"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
}
]
}
{
"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
}