第一步:功能定义(生成物的模型TSL)
更新时间:2018-03-16 16:26:10
该步骤中,定义设备的功能点,即设备需要真实上报的数据。由于平台目前遵循ICA数据标准,所以自定义的部分需要平台审核,但处理周期很快,一般不会阻塞您的开发进展。完成功能定义后,会自动生成一份TSL,详细定义查看物的模型TSL。
- 功能分为:
功能类型 | 描述 |
---|---|
标准功能 | 根据ICA数据标准,平台为每个品类创建了默认的标准功能,分为可选和必选 |
自定义功能 | 如果标准功能不符合您的设备特征,您也可以自定义功能 |
- 功能主要分为三要素:属性、事件、服务。分别定义如下:
功能三要素 | 描述 |
---|---|
属性 | 设备的功能模型之一,一般用于描述设备运行时的状态,如环境监测设备所读取的当前环境温度等。属性支持get和set,应用系统可发起对属性的读取和设置请求 |
服务 | 设备的功能模型之一,可被外部调用的能力或方法,包含输入参数和输出参数,相比于下发指令设置属性值,服务可通过一条指令实现更复杂的业务逻辑,如执行某项特定的任务 |
事件 | 设备的功能模型之一,运行时的事件,相比于属性状态,事件一般而言包含设备需要被外部感知和处理的通知信息,可包含多个输出参数,如某项任务完成的信息或者设备发生故障/告警时的温度等,事件可以被订阅和推送 |
- 标准功能(无需审核): 平台默认创建的“必选功能”,会在打开这个页面时,默认展示如下:
点击“新增”,可以查看和选择“可选功能”。以灯为例,可以选择灯的功能,也可以搜索跨品类的功能:
- 自定义功能(需要审核) 当标准功能不够用时,开发者可以自定义功能。
- 自定义属性 数据类型包括:整型、浮点、枚举、布尔、字符串、时间型(string类型的UTC格式)、JSON对象(结构体)。
- 自定义服务 服务适用于较复杂的设备功能,比如需要带入参和出参。点击“新增输入参数”,在弹窗中添加服务的输入/输出参数,您可以选择将产品下的某个属性直接作为参数,也可以完全自定义一个新的参数。单个服务最多可分别添加10个入参或10个出参。
- 自定义事件 事件分为三种类型:“信息”、“告警”和“故障”,“信息”是设备上报的一般性通知,如完成某项任务等,“告警”和“故障”是设备运行过程中主动上报的突发或异常情况,优先级更高。事件由设备主动上报,设备可以携带该事件的相关参数进行输出,如设备上报了一个“过热”的告警事件,并携带了设备的当前温度。
添加事件的输出参数时可以选择将当前已有的属性直接作为参数上报,也可以完全自定义各一个参数。请注意,单个事件最多可以添加10个输出参数。
自动生成物的模型 TSL
产品功能创建完成后,系统会自动为该产品的物模型描述文档,即 TSL,采用 JSON 格式,您可以点击功能列表上方的“查看JSON”按钮进行查看该产品的 TSL。TSL 中将包含标准功能和自定义功能在内的所有描述信息。
{
"schema": "http://aliyun/iot/thing/desc/schema",
"profile": {
"productKey": "a1AzoSi5TMc"
},
"services": [
{
"outputData": [],
"identifier": "set",
"inputData": [
{
"identifier": "LightSwitch",
"dataType": {
"specs": {
"0": "关闭",
"1": "开启"
},
"type": "bool"
},
"name": "主灯开关"
}
],
"method": "thing.service.property.set",
"name": "set",
"required": true,
"callType": "sync",
"desc": "属性设置"
},
{
"outputData": [
{
"identifier": "LightSwitch",
"dataType": {
"specs": {
"0": "关闭",
"1": "开启"
},
"type": "bool"
},
"name": "主灯开关"
}
],
"identifier": "get",
"inputData": [
"LightSwitch"
],
"method": "thing.service.property.get",
"name": "get",
"required": true,
"callType": "sync",
"desc": "属性获取"
}
],
"properties": [
{
"identifier": "LightSwitch",
"dataType": {
"specs": {
"0": "关闭",
"1": "开启"
},
"type": "bool"
},
"name": "主灯开关",
"accessMode": "rw",
"required": true
}
],
"events": [
{
"outputData": [
{
"identifier": "LightSwitch",
"dataType": {
"specs": {
"0": "关闭",
"1": "开启"
},
"type": "bool"
},
"name": "主灯开关"
}
],
"identifier": "post",
"method": "thing.event.property.post",
"name": "post",
"type": "info",
"required": true,
"desc": "属性上报"
},
{
"outputData": [
{
"identifier": "ErrorCode",
"dataType": {
"specs": {
"0": "恢复正常"
},
"type": "enum"
},
"name": "故障代码"
}
],
"identifier": "Error",
"method": "thing.event.Error.post",
"name": "故障上报",
"type": "info",
"required": true
}
]
}