场景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"
}