场景API
更新时间:2020-05-15 11:39:22
概述
设备服务是与设备相关的一组服务接口,为用户提供设备的查询、控制和关系服务能力。
本文档整体分为两部分
第一部分:数据定义,这些数据结构会频繁在接口中使用;
第二部分:接口定义,说明接口的入参、出参和示例。
接口分为四大类:
基本操作接口
接口名 | 简介 |
---|---|
创建场景 | 创建具有TCA能力的场景。 |
删除场景 | 删除一个场景。 |
更新场景的基本信息 | 更新场景基本信息,指场景名,图标,描述,修改他们并不会影响场景的运行状态。 |
查询场景 | 查询所有场景,以分页列表的方式返回。 |
获取场景 | 获取的是场景全量信息,包含基本信息+TCA+场景状态。 |
执行场景 | 手动触发一个场景。 |
在云端部署/撤销场景 | 撤销场景会停止场景的自动运行;再次部署会开启这个场景让它自动执行。 |
TCA相关接口
接口名 | 简介 |
---|---|
获取符合TCA功能的设备列表 | 在全租户下查找可以作为TCA的设备列表景。 |
查询符合TCA条件的用户设备 | 分页查询用户所有可以作为TCA的设备列表。 |
更新场景TCA | 更新场景,更改TCA意味着场景的执行规则改变,更新之后,场景将按新的规则运行。 |
用户与场景的相关接口
接口名 | 简介 |
---|---|
绑定用户和场景 | 建立用户与场景的逻辑关系。 |
解绑用户和场景 | 解除用户与场景的逻辑关系。 |
查询用户的场景 | 查询指定用户下绑定的所有场景。 |
查询场景的用户 | 查询指定的场景下绑定的所有用户。 |
空间与场景的相关接口
接口名 | 简介 |
---|---|
查询空间的场景 | 分页查询空间绑定的场景信息。 |
绑定空间和场景 | 绑定空间和场景。 |
解绑空间的场景 | 解绑空间上绑定的场景。 |
解绑空间的所有场景 | 解绑空间上绑定的所有场景。 |
数据定义
TCA
场景TCA脚本由triggers、conditions、actions三部分组成,每一部分用JSON数组来表示,每个JSON数据项包含uri和params两个key,uri表示规则类型,params为对应的参数。uri分别用前缀trigger、condition、action来表示规则是属于TCA脚本的哪一部分。
触发器:定时任务
uri: trigger/timer
用cron表达式表示的定时触发规则。params
cron:必填,定时表达式
cronType:必填,cron表达式类型,支持linux和quartz_cron
- linux
5级维度,支持的最小粒度是分,最大到月
例:从每小时的0分开始,每5分钟执行一次# ┌──────────── minute # │ ┌────────── hour # │ │ ┌──────── day of month # │ │ │ ┌────── month # │ │ │ │ ┌──── day of week # │ │ │ │ │ # │ │ │ │ │ # * * * * *
{ "uri": "trigger/timer", "params": { "cron": "0/5 * * * *", "cronType": "linux" } }
Cron表达式各级的取值范围:
field | value |
---|---|
minute | 0-59 |
hour | 0-23 |
day of month | 1-31 |
month | 1-12 (or names) |
day of week | 0-7 (or names, 0 or 7 are sunday) |
- quartz_cron
7级维度,但是second只能填0,目前只支持到分,最大到年
例:2018年从每小时的0分开始,每5分钟执行一次# ┌────────────── second # │ ┌──────────── minute # │ │ ┌────────── hour # │ │ │ ┌──────── day of month # │ │ │ │ ┌────── month # │ │ │ │ │ ┌──── day of week # │ │ │ │ │ │ ┌── year # │ │ │ │ │ │ │ # * * * * * * *
{ "uri": "trigger/timer", "params": { "cron": "0 0/5 * * * ? 2018", "cronType": "quartz_cron" } }
触发器:设备属性
uri: trigger/device/property
设备属性上报后触发场景。params
iotId:必填,设备id
propertyName:选填,设备属性名。可以支持简单的属性值过滤,如果需要过滤设备属性,必须同时设置compareType和compareValue
compareType:选填,比较类型。仅支持简单比较,包括:>, >=, ==, !=, <, <=, in等,复杂过滤请使用condition节点
compareValue:选填,比较值
例:
{
"uri":"trigger/device/property",
"params":{
"iotId": "xxxxxxxx",
"propertyName": "temp",
"compareType": ">",
"compareValue": 30
}
}
触发器:设备事件
uri: trigger/device/event
设备上报事件时触发场景。params
iotId:必填,设备id
eventCode:选填,事件码。过滤事件类型的条件
propertyName:选填,事件属性名。如果需要过滤事件属性,必须同时设置compareType和compareValue。
compareType:选填,比较类型。仅支持简单比较,包括:>, >=, ==, !=, <, <=, in等,复杂需求请使用condition节点
compareValue:选填,比较值
例:
{
"uri": "trigger/device/event",
"params": {
"iotId": "xxxxxxxx",
"eventCode": "aaaaa",
"propertyName": "switch",
"compareType": "==",
"compareValue": 1
}
}
触发器:通行事件
uri: trigger/biz/pass/event
公区人脸门禁、传统门禁以及车辆的通行事件,可以作为触发条件与室内设备形成场景联动params
bizType:必填,通行事件类型
deviceId:必填,相关设备id
bizInfo:必填,业务信息
hid:选填,用户id
hidType:选填,用户类型
目前支持5种类型的通行事件:人脸门禁(包括边缘人脸和端侧人脸方案)、边缘传统门禁、边缘车行、传统门禁云云对接、车行云云对接,对应的bizType及其他业务参数的填写规则如下:(车行方案的触发器选填hid和hidType)
业务参数 | 人脸方案 | 门禁边缘方案 | 车行边缘方案 | 门禁云云方案 | 车行云云方案 |
---|---|---|---|---|---|
bizType | FACE | ENTRANCE ENTRANCE_IN ENTRANCE_OUT |
CAR CAR_IN CAR_OUT |
CLOUD_ENTRANCE_IN CLOUD_ENTRANCE_OUT |
CLOUD_CAR_IN CLOUD_CAR_OUT |
deviceId | 人脸设备iotId (终端设备或一体机) |
门禁设备iotId | 车闸设备iotId | 门禁实体编号 | 停车场编号 |
bizInfo | DEFAULT | 门禁卡号 | 车牌号 | DEFAULT | 车牌号 |
例:
{
"uri": "trigger/biz/pass/event",
"params": {
"bizType": "CLOUD_ENTRANCE_IN",
"deviceId": "f4a8fe8b64f148c3",
"bizInfo": "DEFAULT",
"hid": "10001",
"hidType": "OPEN"
}
}
边界条件:设备属性
uri: condition/device/property
触发器被触发时,检查设备属性,只有满足条件才会执行场景动作。params
iotId:必填,设备id
propertyName:必填,属性名称,即属性标识符
compareType:必填,比较类型,目前只支持简单类型比较
compareValue:必填,比较值,可以是数字、字符串等
checkOnlineStatus:选填,校验设备在线状态(1-在线,3-离线)
例:
{
"uri":"condition/device/property",
"params":{
"productKey":"test_product",
"deviceName":"test_device",
"propertyName":"temp",
"compareType":">",
"compareValue":30,
"checkOnlineStatus":1
}
}
边界条件:时间区间
uri: condition/timeRange
周期性的限定条件,指定场景在某个时间段允许执行。params
format:必填,时间格式。支持如下格式"mm:ss" "HH:mm" "HH:mm:ss" "dd HH" "dd HH:mm" "dd HH:mm:ss" "MM" "MM-dd" "MM-dd HH" "MM-dd HH:mm" "MM-dd HH:mm:ss" "yyyy-MM-dd" "yyyy-MM-dd HH:mm:ss"
beginDate:必填,开始时间
endDate:必填,截止时间
repeat:选填,星期重复,使用方式如下1:星期一 2:星期二 3:星期三 4:星期四 5:星期五 6:星期六 7:星期天
例:
{
"uri":"condition/timeRange",
"params":{
"format":"HH:mm",
"beginDate":"8:30",
"endDate":"23:00",
"repeat":"1,2,3"
}
}
说明:
只要不指定具体的年月日,过滤条件的时间就是循环的
{ "uri":"condition/timeRange", "params":{ "format":"HH:mm", "beginDate":"10:00", "endDate":"15:00" } }
支持时间跨天、跨月、跨年的过滤功能。比如:晚上22点到凌晨6点
{ "uri":"condition/timeRange", "params":{ "format":"HH:mm", "beginDate":"22:00", "endDate":"6:00" } }
执行动作:设置设备属性
uri: action/device/setProperty
params
iotId:必填,设备id
propertyItems:必填,设备属性集。格式为key:value 形式,key是设备属性名,value是属性值(可以是数字、字符串、json对象、json数组等)
例:
{
"uri":"action/device/setProperty",
"params":{
"iotId":"Fuw8JezgZzsBCR85",
"propertyItems":{
"onOff":"on",
"temp":25
}
}
}
执行动作:调用设备服务
uri: action/device/invokeService
params
iotId:必填,设备id
serviceName:必填,服务名称
serviceArgs:选填,服务参数。服务如果定义了入参,则为必须。格式为key:value,key为参数名,value为参数值(数字、字符串、json等),且必须符合服务入参顺序
例:
{
"uri":"action/device/invokeService",
"params":{
"iotId":"Fuw8JezgZzsBCR85",
"serviceName":"clearWarningStatus",
"serviceArgs":{
"warningStatus":"off",
"level":"init"
}
}
}
执行动作:开启/关闭场景规则
uri: action/automation/setSwitch
在action中支持关闭或开启另一个规则,实现2个规则的联动。params
automationRuleId:必填,场景id
switchStatus:必填,规则开关状态(0-停止,1-开启)
例:
{
"uri":"action/automation/setSwitch",
"params":{
"automationRuleId":"xxxxxx",
"switchStatus": 0
}
}
执行动作:触发场景
uri: action/scene/trigger
使用场景规则作为触发条件去触发另外一个场景,实现场景的嵌套params
sceneId:必填,场景id
例:
{
"uri": "action/scene/trigger",
"params": {
"sceneId": "xxx"
}
}
关于延时执行
action脚本中除了uri和params,还支持设置delayedExecutionSeconds实现延时执行,单位为秒,最小1s,最大86400s(24小时)。默认为空,设置了值才执行延时操作。
例:
{
"uri":"action/device/setProperty",
"params":{
"iotId":"xxxxxx",
"propertyItems":{
"attr1":"value1"
},
"delayedExecutionSeconds": 10
}
}
TcaDevice
符合TCA功能的设备信息
参数 | 类型 | 描述 |
---|---|---|
iotId | String | 设备iotId |
nickName | String | 设备昵称 |
image | String | 产品品类图标 |
productKey | String | 设备ProductKey |
deviceName | String | 设备名DeviceName |
status | Integer | 设备在线状态:1-在线,3-离线 |
SceneDesign
场景基本信息
参数 | 类型 | 描述 |
---|---|---|
sceneId | String | 场景ID |
name | String | 场景名称 |
icon | Integer | 场景图标 |
status | Integer | 创建状态 |
enable | Boolean | true已部署 false未部署 |
接口定义
创建场景
场景执行的前提条件是:具有trigger,condition,action的设备连到阿里云IoT。其中trigger的最大条目数是100,condition的最大条目数是5,action的最大条目数是100。
场景创建后不会执行,需要调用“在云端部署/撤销场景”接口让场景真正运行起来。
示例描述了trigger,condition,action支持的所有格式
/home/paas/scene/create
- 版本1.0.1
入参
字段名 | 类型 | 必填 | 备注 |
---|---|---|---|
operator | JSONObject | 是 | 操作员,见“身份信息”定义。 |
name | String | 是 | 场景名称 |
icon | String | 是 | 场景图标 |
enable | boolean | 是 | 填false,历史原因需要填。但是无论true和false都不会对创建产生影响 |
triggers | JSONArray | 否 | 场景的trigger |
conditions | JSONArray | 否 | 场景的condition |
actions | JSONArray | 是 | 场景的action |
description | String | 否 | 自定义场景描述 |
triggers, conditions, actions中的设备表示,同时支持iotId或pk&dn的形式。可以用iotId=xxx表示设备,或用productKey和deviceName表示唯一设备。下面的示例中同时展示了两种形式的写法。
出参
返回结果使用通用结果类型,data域是字符串,见下表的说明:
参数 | 类型 | 描述 |
---|---|---|
sceneId | String | 创建的场景ID |
示例
例:
当前的操作员的用户ID是1111299939433,使用了三方账号体系。
>
>
创建场景:
>
名称:红外检测状态 有人 - 触发报警
触发器、条件和动作的参数如下
请求参数如下:
请求示例
{
"operator": {
"hid": "1111299939433",
"hidType": "OPEN"
},
"icon": "https://g.aliplus.com/scene_icons/default.png",
"name": "红外检测状态 有人 - 触发报警 ",
"triggers": [
{
"uri": "trigger/device/property",
"params": {
"iotId": "xxxxxxxx",
"propertyName": "temp",
"compareType": ">",
"compareValue": 30
}
}
],
"conditions": [
{
"uri": "condition/timeRange",
"params": {
"format": "HH:mm",
"beginDate": "8:30",
"endDate": "23:00",
"repeat": "1,2,3"
}
}
],
"actions": [
{
"uri": "action/device/invokeService",
"params": {
"productKey": "test_aircondition",
"deviceName": "aircondition_001",
"serviceName": "clearWarningStatus",
"serviceArgs": {
"warningStatus": "off",
"level": "init"
}
}
}
]
}
返回示例
{
"code":200,
"message":"success",
"data":{
"sceneId":"xxxxxxxxxxxxxxx"
}
}
删除场景
/home/paas/scene/delete
- 版本1.0.0
入参
字段名 | 类型 | 必填 | 备注 |
---|---|---|---|
operator | JSONObject | 是 | 操作员,见“身份信息”定义。 |
sceneId | String | 是 | 待删除的场景ID |
出参
返回结果使用通用结果类型,不使用data域,无值。
示例
例:
当前的操作员的用户ID是1111299939433,使用了三方账号体系。
要删除的场景ID是d4p61ikfvmgaaobd
请求参数如下:
请求示例
{
"operator": {
"hid": "1111299939433",
"hidType": "OPEN"
},
"sceneId": "d4p61ikfvmgaaobd"
}
返回示例
{
"code": 200,
"message": "success"
}
更新场景的基本信息
更新场景基本信息,指场景名,图标,描述,修改他们并不会影响场景的运行状态。
/home/paas/scene/baseinfo/update
- 版本1.0.0
入参
字段名 | 类型 | 必填 | 备注 |
---|---|---|---|
operator | JSONObject | 是 | 操作员,见“身份信息”定义。 |
name | String | 否 | 场景名称 |
icon | String | 否 | 场景图标 |
description | String | 否 | 用户自定义描述 |
sceneId | String | 是 | 场景ID |
出参
返回结果使用通用结果类型,不使用data域,无值。
示例
例:
当前的操作员的用户ID是1111299939433,使用了三方账号体系。
要更新的场景ID是d4p61ikfvmgaaobd;
名称更新为newSceneName
图标更新为 https://at.cn
描述更新为 “new description”
请求参数如下:
请求示例
{
"operator":{
"hid":"1111299939433",
"hidType":"OPEN"
},
"sceneId":"d4p61ikfvmgaaobd",
"name":"newSceneName",
"icon":"https://at.cn",
"description":"new description"
}
返回示例
{
"code":200,
"message":"success"
}
查询场景
查询所有场景,以分页列表的方式返回。
查询的范围是创建出的所有场景。
/home/paas/scene/list
版本1.0.0
入参
字段名 | 类型 | 必填 | 备注 |
---|---|---|---|
operator | JSONObject | 是 | 操作员,见“身份信息”定义。 |
pageNo | Integer | 是 | 请求的页码,详细见“分页参数”定义。 |
pageSize | Integer | 是 | 每页的记录数,默认为20,有效范围[1,50]。 |
出参
返回结果使用通用结果类型,data域是对象,见下表的详细说明:
参数 | 类型 | 描述 |
---|---|---|
data | JSONArray | 列表,见SceneDesign定义 |
total | Integer | 总记录数 |
pageNo | Integer | 请求的页码,详细见“分页参数”定义。 |
pageSize | Integer | 请求的页码,详细见“分页参数”定义。 |
示例
例:
当前的操作员的用户ID是1111299939433,使用了三方账号体系。
请求参数如下:
请求示例
{
"operator": {
"hid": "1111299939433",
"hidType": "OPEN"
},
"pageNo": 1,
"pageSIze": 10
}
返回示例
{
"code": 200,
"message": "success",
"data": {
"data": [{
"icon": "https://g.aliplus.com/scene_icons/default.png",
"name": "红外检测状态 有人 - 触发报警 ",
"status": 1,
"description": "aaaa",
"enable": true,
"sceneId": "xxxxxxxxxxxxxxxx"
}],
"total": 1,
"pageSize": 10,
"pageNo": 1
}
}
获取场景
获取的是场景全量信息,包含基本信息+TCA+场景状态。基本信息和TCA在上面的接口已经描述了。
关于场景状态,由status表示:
当status=1时表示场景在正常运行
当status=2时表示场景存在异常状态没有正常运行
比如TCA中的某一个设备不在线会触发status==2
/home/paas/scene/get
- 版本1.0.1
入参
字段名 | 类型 | 必填 | 备注 |
---|---|---|---|
operator | JSONObject | 是 | 操作员,见“身份信息”定义。 |
sceneId | String | 是 | 场景ID |
出参
返回结果使用通用结果类型,data域是对象,见下表的详细说明:
字段名 | 类型 | 备注 |
---|---|---|
name | String | 场景名称 |
icon | String | 场景图标 |
description | String | 用户自定义描述 |
triggers | JSONArray | 场景trigger |
conditions | JSONArray | 场景condition |
actions | JSONArray | 场景action |
sceneId | String | 场景ID |
enable | Boolean | true已部署 false未部署 |
description | String | 场景描述 |
status | Integer | 1场景正常运行,2场景未运行 |
spaceInfo | JsonObject | 空间信息,见“定义” |
场景详情空间信息
参数 | 类型 | 描述 |
---|---|---|
id | String | 空间ID |
name | String | 空间名称 |
示例
例:
当前的操作员的用户ID是1111299939433,使用了三方账号体系。
目标场景ID是d4p61ikfvmgaaobd;
请求参数如下:
请求示例
{
"operator": {
"hid": "1111299939433",
"hidType": "OPEN"
},
"sceneId": "d4p61ikfvmgaaobd"
}
返回示例
{
"code": 200,
"data": {
"icon": "https://g.aliplus.com/scene_icons/default.png",
"name": "红外检测状态 有人 - 触发报警 ",
"triggers": [{
"params": {
"cron": "按 http://crontab.org/ 填写",
"cronType": "linux"
},
"uri": "trigger/timer"
},
{
"params": {
"iotId": "xxxxxxxx",
"propertyName": "switch",
"compareType": ">, >=, ==, !=, in等",
"compareValue": 1
},
"uri": "trigger/device/property"
},
{
"params": {
"iotId": "xxxxxxxx",
"eventCode": "aaaaa",
"propertyName": "switch",
"compareType": ">, >=, ==, !=, in等",
"compareValue": 1
},
"uri": "trigger/device/event"
}
],
"condintios": [{
"params": {
"iotId": "xxxxxxxx",
"propertyName": "switch",
"compareType": ">, >=, ==, !=, in等",
"compareValue": 1
},
"uri": "condition/device/property"
}, {
"params": {
"format": "HH:mm",
"beginDate": "8:30",
"endDate": "23:00",
"timezoneID": "Asia/Shanghai",
"repeat": "1,2,3"
},
"uri": "condition/timeRange"
}],
"actions": [{
"uri": "action/device/setProperty",
"params": {
"iotId": "xxxxxxxxxxx",
"propertyItems": {
"WorkMode": 4,
"LightSwitch": 1
},
"propertyNamesItems": {
"WorkMode": {
"abilityName": "工作模式",
"valueName": "生活",
"valueType": "enum"
},
"LightSwitch": {
"abilityName": "主灯开关",
"valueName": "开启",
"valueType": "enum"
}
}
}
},
{
"params": {
"iotId": "xxxxxxxx",
"serviceName": "online",
"serviceArgs": {
"WorkMode": 4,
"LightSwitch": 1
}
},
"uri": "action/device/invokeService"
},
{
"uri": "action/automation/setSwitch",
"params": {
"automationRuleId": "string",
"switchStatus": 0
}
},
{
"uri": "action/scene/trigger",
"params": {
"sceneId": "string"
}
}
],
"status": 1,
"description": "aaaa",
"enable": true,
"sceneId": "xxxxxxxxxxxxxxxx",
"spaceInfo":{
"name":"我的项目",
"id":"022c40eddd18433ca55ba2a8037916c7"
}
},
"message": "success"
}
执行场景
手动触发一个场景。
/home/paas/scene/instance/run
- 版本1.0.0
入参
字段名 | 类型 | 必填 | 备注 |
---|---|---|---|
operator | JSONObject | 是 | 操作员,见“身份信息”定义。 |
sceneId | String | 是 | 场景ID |
出参
返回结果使用通用结果类型,不使用data域,无值。
示例
例:
当前的操作员的用户ID是1111299939433,使用了三方账号体系。
目标场景ID是d4p61ikfvmgaaobd;
请求参数如下:
请求示例
{
"operator":{
"hid":"1111299939433",
"hidType":"OPEN"
},
"sceneId":"d4p61ikfvmgaaobd"
}
返回示例
{
"code":200,
"message":"success"
}
在云端部署/撤销场景
有的时候,想让场景停止自动运行,那么用这个接口把场景从云端撤回部署。
当想再次开启这个场景让它自动执行,就用这个接口把场景部署起来。
部署的含义是让场景在满足trigger/condition的时候会触发action,如果撤销部署了,即便trigger/condition都满足,也不会触发action。
/home/paas/scene/switch/update
- 版本1.0.0
入参
字段名 | 类型 | 必填 | 备注 |
---|---|---|---|
operator | JSONObject | 是 | 操作员,见“身份信息”定义。 |
enable | Boolean | 是 | true 部署场景 false 撤销部署 |
sceneId | String | 是 | 场景ID |
出参
返回结果使用通用结果类型,不使用data域,无值
示例
例:
当前的操作员的用户ID是1111299939433,使用了三方账号体系。
要撤销的场景ID是d4p61ikfvmgaaobd。
请求参数如下:
请求示例
{
"operator":{
"hid":"1111299939433",
"hidType":"OPEN"
},
"sceneId":"d4p61ikfvmgaaobd",
"enable":false
}
返回示例
{
"code":200,
"message":"success"
}
获取符合TCA功能的设备列表
能够加入场景中的设备是有限制的,只有特定的设备才能加入到TCA当中,这个接口就是在全租户下查找可以作为TCA的设备列表。
/home/paas/scene/device/tenant/tca/list
- 版本1.0.0
入参
字段名 | 类型 | 必填 | 备注 |
---|---|---|---|
operator | JSONObject | 是 | 操作员,见“身份信息”定义。 |
pageNo | Integer | 是 | 请求的页码,详细见“分页参数”定义。 |
pageSize | Integer | 是 | 每页的记录数,详细见“分页参数”定义。 |
flowType | Integer | 是 | 数值型枚举 1:查trigger 2:查condition 3:查action |
name | String | 否 | 用这个值在设备昵称中模糊查询,比如name="灯" 会查nickName为"台灯","二楼台灯",“灯罩”的设备 |
出参
返回结果使用通用结果类型,data域是对象,见下表的详细说明:
字段名 | 类型 | 描述 |
---|---|---|
data | JSONArray | 设备列表,见TcaDevice定义 |
pageNo | Integer | 请求的页码,详细见“分页参数”定义。 |
pageSize | Integer | 请求的页码,详细见“分页参数”定义。 |
total | Integer | 总记录数 |
示例
例:
当前的操作员的用户ID是1111299939433,使用了三方账号体系。
查询支持Trigger的设备。
查询第2页,每页10个设备。
请求参数如下:
请求示例
{
"operator":{
"hid":"1111299939433",
"hidType":"OPEN"
},
"flowType":1,
"pageSize":10,
"pageNo":2
}
返回示例
{
"code":200,
"message":"success",
"data":{
"data":[
{
"iotId":"xxxxxxx",
"image":"https://xxx",
"nickName":"昵称"
},
{
"iotId":"xxxxxxx",
"image":"https://xxx",
"nickName":"昵称"
}
],
"pageSize":10,
"pageNo":2,
"total":12
}
}
查询符合TCA条件的用户设备
这个接口就是在用户所有的设备中查出可以作为TCA的设备列表。
/home/paas/device/user/tca/list
- 版本1.0.1
入参
字段名 | 类型 | 必填 | 备注 |
---|---|---|---|
operator | JSONObject | 是 | 操作员,见“身份信息”定义。 |
target | JSONObject | 是 | 设备的归属用户,见“身份信息”定义。 |
flowType | Integer | 是 | 数值型枚举 1:查trigger 2:查condition 3:查action |
出参
返回结果使用通用结果类型,data域是字符串,见下表的说明:
参数 | 类型 | 描述 |
---|---|---|
data | JSONArray | 设备列表,见TcaDevice定义 |
示例
例:
当前的操作员的用户ID是1111299939433,使用了三方账号体系。
查询22858512781用户下可以做trigger的设备
请求的参数如下:
请求示例
{
"operator":{
"hid":"1111299939433",
"hidType":"OPEN"
},
"target":{
"hid":"22858512781",
"hidType":"OPEN"
},
"searchInfo":{
"flowType":1,
"name":"灯"
}
}
返回示例
{
"code":200,
"message":"success",
"data":[
{
"iotId":"bndtgf8mrgx1n99vz86ah5tahbyutis4",
"image":"https://xxx",
"nickName":"昵称",
"productKey":"a1xOmraHrsL",
"deviceName":"light03",
"productName":"智能电灯",
"status":0
}
]
}
更新场景TCA
TCA指trigger+condition+action
更新场景TCA意味着场景的执行规则改变,更新之后,场景将按新的规则运行。
/home/paas/scene/tca/update
- 版本1.0.0
入参
字段名 | 类型 | 必填 | 备注 |
---|---|---|---|
operator | JSONObject | 是 | 操作员,见“身份信息”定义。 |
sceneId | String | 是 | 场景ID |
triggers | JSONArray | 否 | 场景trigger |
conditions | JSONArray | 否 | 场景condition |
actions | JSONArray | 是 | 场景action |
出参
返回结果使用通用结果类型,不使用data域,无值。
示例
例:
当前的操作员的用户ID是1111299939433,使用了三方账号体系。
要更新的场景ID是d4p61ikfvmgaaobd。
要更新的TCA属性如下。
请求参数如下:
请求示例
A{
"operator":{
"hid":"1111299939433",
"hidType":"OPEN"
},
"sceneId":"d4p61ikfvmgaaobd",
"triggers":[
{
"params":{
"cron":"按 http://crontab.org/ 填写",
"cronType":"linux"
},
"uri":"trigger/timer"
},
{
"params":{
"iotId":"xxxxxxxx",
"propertyName":"switch",
"compareType":">, >=, ==, !=, in等",
"compareValue":1
},
"uri":"trigger/device/property"
},
{
"params":{
"iotId":"xxxxxxxx",
"eventCode":"aaaaa",
"propertyName":"switch",
"compareType":">, >=, ==, !=, in等",
"compareValue":1
},
"uri":"trigger/device/event"
}
],
"condintios":[
{
"params":{
"iotId":"xxxxxxxx",
"propertyName":"switch",
"compareType":">, >=, ==, !=, in等",
"compareValue":1
},
"uri":"condition/device/property"
},
{
"params":{
"format":"HH:mm",
"beginDate":"8:30",
"endDate":"23:00",
"timezoneID":"Asia/Shanghai",
"repeat":"1,2,3"
},
"uri":"condition/timeRange"
}
],
"actions":[
{
"uri":"action/device/setProperty",
"params":{
"iotId":"xxxxxxxxxxx",
"propertyItems":{
"WorkMode":4,
"LightSwitch":1
},
"propertyNamesItems":{
"WorkMode":{
"abilityName":"工作模式",
"valueName":"生活",
"valueType":"enum"
},
"LightSwitch":{
"abilityName":"主灯开关",
"valueName":"开启",
"valueType":"enum"
}
}
}
},
{
"params":{
"iotId":"xxxxxxxx",
"serviceName":"online",
"serviceArgs":{
"WorkMode":4,
"LightSwitch":1
}
},
"uri":"action/device/invokeService"
},
{
"uri":"action/automation/setSwitch",
"params":{
"automationRuleId":"string",
"switchStatus":0
}
},
{
"uri":"action/scene/trigger",
"params":{
"sceneId":"string"
}
}
]
}
返回示例
{
"code":200,
"message":"success"
}
绑定用户和场景
建立用户与场景的逻辑关系。
/home/paas/user/scene/bind
- 版本1.0.0
入参
字段名 | 类型 | 必填 | 备注 |
---|---|---|---|
operator | JSONObject | 是 | 操作员,见“身份信息”定义。 |
sceneId | String | 是 | 场景ID |
target | JSONObject | 是 | 绑定的用户 |
出参
返回结果使用通用结果类型,不使用data域,无值。
示例
例:
当前的操作员的用户ID是1111299939433,使用了三方账号体系。
目标场景ID是d4p61ikfvmgaaobd
要绑定的用户ID是3008045502161
请求参数如下:
请求示例
{
"operator": {
"hid": "1111299939433",
"hidType": "OPEN"
},
"target": {
"hid": "3008045502161",
"hidType": "OPEN"
},
"sceneId": "d4p61ikfvmgaaobd"
}
返回示例
{
"code":200,
"message":"success"
}
解绑用户和场景
解除用户与场景的逻辑关系。
/home/paas/user/scene/unbind
- 版本1.0.0
入参
字段名 | 类型 | 必填 | 备注 |
---|---|---|---|
operator | JSONObject | 是 | 操作员,见“身份信息”定义。 |
target | JSONObject | 是 | 解绑用户 |
sceneId | String | 是 | 场景ID |
出参
返回结果使用通用结果类型,不使用data域,无值。
示例
例:
当前的操作员的用户ID是1111299939433,使用了三方账号体系。
目标场景ID是d4p61ikfvmgaaobd
要解绑的用户ID是3008045502161
请求参数如下:
请求示例
{
"operator":{
"hid":"1111299939433",
"hidType":"OPEN"
},
"target":{
"hid":"3008045502161",
"hidType":"OPEN"
},
"sceneId":"d4p61ikfvmgaaobd"
}
返回示例
{
"code":200,
"message":"success"
}
查询用户的场景
/home/paas/user/scene/list
- 版本1.0.0
入参
字段名 | 类型 | 必填 | 备注 |
---|---|---|---|
operator | JSONObject | 是 | 操作员,见“身份信息”定义。 |
target | JSONObject | 是 | 用户,见“身份信息”定义。 |
pageNo | Integer | 是 | 请求的页码,详细见“分页参数”定义。 |
pageSize | Integer | 是 | 每页的记录数,当前接口页面大小不得超过20 |
出参
返回结果使用通用结果类型,data域是对象,见下表的详细说明:
参数 | 类型 | 描述 |
---|---|---|
data | JSONArray | 数据列表,见SceneDesign定义 |
total | Integer | 总记录数 |
pageNo | Integer | 请求的页码,详细见“分页参数”定义。 |
pageSize | Integer | 请求的页码,详细见“分页参数”定义。 |
示例
例:
当前的操作员的用户ID是1111299939433,使用了三方账号体系。
要查询的用户ID是3008045502161
请求参数如下:
请求示例
{
"operator":{
"hid":"1111299939433",
"hidType":"OPEN"
},
"target":{
"hid":"3008045502161",
"hidType":"OPEN"
},
"pageNo":1,
"pageSIze":10
}
返回示例
{
"code":200,
"message":"success",
"data":{
"data":[
{
"icon":"https://g.aliplus.com/scene_icons/default.png",
"name":"红外检测状态 有人 - 触发报警 ",
"status":1,
"description":"aaaa",
"enable":true,
"sceneId":"xxxxxxxxxxxxxxxx"
}
],
"total":1,
"pageSize":10,
"pageNo":1
}
}
查询场景的用户
查询指定的场景下绑定的所有用户
/home/paas/scene/user/list
- 当前版本
版本号 | 说明 |
---|---|
1.0.0 | 初始版本,出参的用户用openId表示 |
2.0.0 | 出参的用户用hid和hidType表示(不单独返回openId) |
入参
参数 | 类型 | 是否必填 | 备注 |
---|---|---|---|
operator | JSONObject | 是 | 三方账号用户id |
queryInfo | JSONObject | 是 | 查询条件 |
operator 参数
名称 | 类型 | 是否必填 | 备注 |
---|---|---|---|
hid | String | 是 | 账户ID:目前支持三方账户ID |
hidType | String | 是 | 账户类型:OPEN(三方账户ID) |
queryInfo 参数
字段名 | 类型 | 是否必填 | 备注 |
---|---|---|---|
sceneId | String | 是 | 场景id |
出参
参数 | 类型 | 备注 |
---|---|---|
code | int | iot通用错误码 |
message | string | 提示信息 |
data | JSONArray | 1.0.0:用户openId列表 2.0.0:用户列表,包含hid和hidType |
示例
例:
当前的操作员的用户ID是1111299939433,使用了三方账号体系。
要查询的场景ID是d4p61ikfvmgaaobd
请求参数如下:
请求示例
{
"operator": {
"hid": "1111299939433",
"hidType": "OPEN"
},
"queryInfo": {
"sceneId": "d4p61ikfvmgaaobd"
}
}
返回示例
1.0.0
{
"code": 200,
"data": [
"dbaf213c-f9cf-4cd4-9cc4-6897dc4792ff",
"a756a00f-1972-4880-b395-ee866fd37bb9",
"f59f1d1c-0dd3-41d0-a582-9705f986bfea",
"a6ffbff2-9923-47bb-b72b-12c22ee96359"
],
"message": "success"
}
2.0.0
{
"code": 200,
"data": [
{
"hid": "dbaf213c-f9cf-4cd4-9cc4-6897dc4792ff",
"hidType": "OPEN"
},
{
"hid": "a756a00f-1972-4880-b395-ee866fd37bb9",
"hidType": "OPEN"
},
{
"hid": "f59f1d1c-0dd3-41d0-a582-9705f986bfea",
"hidType": "OPEN"
},
{
"hid": "a6ffbff2-9923-47bb-b72b-12c22ee96359",
"hidType": "OPEN"
}
],
"message": "success"
}
查询空间的场景
/home/paas/space/scene/list
版本1.0.0
入参
字段名 | 类型 | 必传 | 备注 |
---|---|---|---|
operator | JSONObject | 是 | 操作员,见“身份信息”定义。 |
spaceId | String | 是 | 空间ID |
searchInfo | JSONObject | 是 | 查询条件,见“定义” |
查询空间的场景searchInfo
字段名 | 类型 | 必传 | 备注 |
---|---|---|---|
name | String | 否 | 场景名称(精确查找) |
pageNo | Integer | 是 | 页码 |
pageSize | Integer | 是 | 页面条数 |
出参
返回结果使用通用结果类型,data域是对象,见下表的详细说明:
参数 | 类型 | 描述 |
---|---|---|
data | JSONArray | 场景模板概要,见“定义” |
total | Integer | 总记录数 |
pageNo | Integer | 当前页数 |
pageSize | Integer | 一页记录数 |
查询空间的场景结果data
参数 | 类型 | 描述 |
---|---|---|
sceneId | String | 场景ID |
name | String | 场景名称 |
icon | String | 场景图标 |
示例
例:
查询和空间(ID=“空间ID”)关联的名称为(name="场景名称")场景列表。
查询第1页,每页10条记录。
请求示例
{ "operator":{ "hid":"1111299939433", "hidType":"OPEN" }, "spaceId":"空间ID", "searchInfo":{ "name":"场景名称", "pageNo":1, "pageSize":10 } }
返回示例
{
"code":200,
"data":{
"total":1,
"data":[
{
"sceneId":"5062opada9668048d730807***",
"name":"场景名称",
"icon":"http://wwww.****.com/***.jpg"
}
],
"pageNo":1,
"pageSize":10
},
"message":"success"
}
绑定空间和场景
/home/paas/space/scene/bind
版本1.0.0
入参
字段名 | 类型 | 必传 | 备注 |
---|---|---|---|
operator | JSONObject | 是 | 操作员,见“身份信息”定义。 |
spaceId | String | 是 | 空间ID |
sceneIdList | JSONArray | 是 | 场景ID列表 |
出参
返回结果使用通用结果类型,不使用data域,无值。
示例
绑定空间(ID="空间ID")和场景列表(ID=["场景ID"])
请求示例
{ "operator":{ "hid":"1111299939433", "hidType":"OPEN" }, "spaceId": "空间ID", "sceneIdList": ["场景ID"] }
返回示例
{
"code":200,
"message":"success"
}
解绑空间的场景
/home/paas/space/scene/unbind
版本1.0.0
入参
字段名 | 类型 | 必传 | 备注 |
---|---|---|---|
operator | JSONObject | 是 | 操作员,见“身份信息”定义。 |
spaceId | String | 是 | 空间ID |
sceneIdList | JSONArray | 是 | 场景ID列表 |
出参
返回结果使用通用结果类型,不使用data域,无值。
示例
解除空间(ID="空间ID")和场景列表(ID=["场景ID"])的绑定关系
请求示例
{ "operator":{ "hid":"1111299939433", "hidType":"OPEN" }, "spaceId": "空间ID", "sceneIdList": ["场景ID"] }
返回示例
{
"code":200,
"message":"success"
}
解绑空间的所有场景
/home/paas/space/allscene/unbind
版本1.0.0
入参
字段名 | 类型 | 必传 | 备注 |
---|---|---|---|
operator | JSONObject | 是 | 操作员,见“身份信息”定义。 |
spaceId | String | 是 | 空间ID |
出参
返回结果使用通用结果类型,不使用data域,无值。
示例
解除空间(ID="空间ID")和所有场景的绑定关系
请求示例
{ "operator":{ "hid":"1111299939433", "hidType":"OPEN" }, "spaceId":"空间ID" }
返回示例
{
"code":200,
"message":"success"
}