场景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级维度,支持的最小粒度是分,最大到月
    # ┌──────────── minute
    # │ ┌────────── hour
    # │ │ ┌──────── day of month
    # │ │ │ ┌────── month
    # │ │ │ │ ┌──── day of week
    # │ │ │ │ │
    # │ │ │ │ │
    # * * * * *
    
    例:从每小时的0分开始,每5分钟执行一次
    {
      "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,目前只支持到分,最大到年
    # ┌────────────── second
    # │ ┌──────────── minute
    # │ │ ┌────────── hour
    # │ │ │ ┌──────── day of month
    # │ │ │ │ ┌────── month
    # │ │ │ │ │ ┌──── day of week
    # │ │ │ │ │ │ ┌── year
    # │ │ │ │ │ │ │
    # * * * * * * *
    
    例:2018年从每小时的0分开始,每5分钟执行一次
    {
      "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"
}

results matching ""

    No results matching ""