# 添加自定义功能
创建产品后,需要将产品的功能及特性转换为数字化模型(物模型),在系统中统一管理,这种产品的数字化模型包含属性、服务、事件三个部分,说明如下:
功能类型  |  类型说明  | 
属性  |  用于描述设备各方面的状态,属性值可在云端读取和设置。如温度、湿度、开关等。  | 
服务  |  用于描述设备可以实现的复杂业务逻辑,可定义多个供云端调用的参数和返回参数,使设备可以执行复杂的任务。如空调设置多个定时开关和温度等。  | 
事件  |  用于描述设备运行时上传给云端的事件,可定义多个输出参数,分为信息、告警、故障三种类型。如空调运行发生故障等。  | 
# 操作步骤
- 进入项目的产品列表
 - 选择相应产品,单击查看。
 

- 选择功能定义,单击添加自定义功能。
 

输入功能信息。
- 功能类型:选择功能类型。
 - 功能名称:功能的名称,同类型功能的名称在产品内具有唯一性,不能重复。支持中文、英文、日文、数字、中英文括号、其他字符(_、-、@、/、\)的组合,长度不超过 30 个字符。
 - 标识符:功能的标识符,对于产品具有唯一性,不能重复。支持英文、数字、下划线(_)的组合,长度不超过 50 个字符。不能使用的系统保留字:set、get、post、time、value。
 
配置功能参数。
属性:
数据类型:选择属性值的数据类型。点此查看功能参数说明
读写类型:云端对属性值的读写权限类型,有如下 2 种类型:
- 读写:云端可以查询、修改属性值
 - 只读:云端可以查询属性值
 
服务:
调用方式:云端对服务的调用方式,有如下 2 种类型:
- 异步:云端调用服务后直接返回结果(暂只支持异步调用方式)
 - 同步:云端调用服务后等待设备回复,设备在规定时间内返回结果,否则调用超时
 
参数输入:定义服务的输入参数,每个服务不超过 20 个输入参数。点此查看功能参数说明 (opens new window)
参数输出:定义服务的输出参数,每个服务不超过 20 个输出参数。点此查看功能参数说明 (opens new window)
事件:
事件类型:定选择事件的类型,有如下 3 种类型:
- 信息:设备主动上报的普通信息
 - 告警:设备发生异常状况时上报的信息
 - 故障:设备出现故障时主动上报的信息
 
参数输出:定义事件的输出参数,每个服务不超过 50 个输出参数。点此查看功能参数说明 (opens new window)
输入功能描述。
- 描述:功能做简要描述,长度不超过 100 个字符。
 
单击确定即可添加功能。

# 功能参数说明
数据类型  |  字段信息  |  描述  |  示例  | 
int(整数型)、 float(单精度浮点型)、double(双精度浮点型)  |  取值范围(最小值)、取值范围(最大值)  |  定义属性值的取值范围  |  温度最小值:0 温度最大值:100  | 
步长  |  定义属性值变化的步长  |  2  | |
单位  |  选择属性的单位  |  无  | |
enum (枚举型)  |  枚举项  |  定义属性的多个枚举项编号及其描述  |  0~煮饭 1~煲汤 2~蒸鱼 ……  | 
bool (布尔型)  |  布尔值  |  定义非 0 即 1 的布尔值  |  0~开 1~关  | 
text (字符串)  |  数据长度  |  定义字符串最大长度,单位为字节  |  设备型号长度不超过 2048 个字节  | 
date (时间型)  |  时间格式  |  时间格式统一为 String 类型的 UTC 时间戳(毫秒)  |  无  | 
struct (JSON 对象)  |  JSON 对象  |  可新增 JSON 参数项  |  无  | 
array (数组型)  |  元素类型  |  若数据类型为 array,可根据业务需要定义数组的元素类型,有如下 5 种类型: --int:整数型 --float:单精度浮点型 --double:双精度浮点型 --text:字符串 --struct:JSON 对象  |  无  | 
元素个数  |  定义数组的元素个数  |  5  |