4.4 开发 Profile
4.4.3 离线开发 Profile(联通用户专用)
非联通用户请查看设备接入服务。
Profile本质上就是一个devicetype-capability.json文件和若干个serviceType-capability.json文件,按照如下目录打包的一个zip包。其中WaterMeter是 deviceType,TestUtf8Manuld是manufactureId,NBIoTDevice是model,
WaterMeterBasic/WaterMeterAlarm/Battery是服务名。
● 设备类型(deviceType)、服务类型(serviceType)、服务标识(serviceId)采 用单词首字母大写的命名法。例如:WaterMeter、Battery。
● 属性使用第一个单词首字母小写,其余单词的首字母大写的命名法。例如:
batteryLevel、internalTemperature。
● 命令使用所有字母大写,单词间用下划线连接的格式。例如:DISCOVERY,
CHANGE_COLOR。
● 设备能力描述json文件固定命名devicetype-capability.json。
● 服务能力描述json文件固定命名servicetype-capability.json。
● 厂商ID和型号唯一标识一款产品,故这些信息的组合在不同的Profile文件中不能 重复,且仅支持英文。
● 要注重名称的通用性,简洁性;对于服务能力描述,还要考虑其功能性。例如:
对于多传感器设备,可以命名为MultiSensor;对于具有显示电量的服务,可以命 名为Battery。
Profile 模板
将一款新设备接入到物联网平台,首先需要编写这款设备的Profile。物联网平台提供 了一些Profile文件模板,如果新增接入设备的类型和功能服务已经在物联网平台提供
的设备Profile模板中包含,则可以直接选择使用;如果在物联网平台提供的设备 Profile模板中未包含,则需要自己定义。
例如:接入一款水表 ,可以直接选择物联网平台上对应的Profile模板,修改设备型号 标识属性和设备服务列表。
说明
物联网平台提供的Profile模板会不断更新,如下表格列举设备类型和服务类型示例,仅供参考。
设备型号识别属性:
属性 Profile中key 属性值
设备类型 deviceType WaterMeter 厂商ID manufacturerId TestUtf8ManuId 厂商名称 manufacturerName HZYB
型号 model NBIoTDevice
协议类型 protocolType CoAP
设备的服务列表
服务描述 服务标识
(serviceId) 服务类型
(serviceType) 选项(option)
水表的基本功能 WaterMeterBasic Water Mandatory 告警服务 WaterMeterAlarm Battery Mandatory 电池服务 Battery Battery Optional 数据的上报规则 DeliverySchedule DeliverySchedule Mandatory 水表的连通性 Connectivity Connectivity Mandatory
设备能力定义样例
"supportUpgrade":true,
deviceType 必选 指示设备的类型。
字段 子字段 可选/必选 描述
Capabilities 必选 包含了设备具备的服务能力描述。
servic
eId 必选 服务的Id,如果设备中同类型的服务类 型只有一个则serviceId与serviceType相 同, 如果有多个则增加编号,如三键 开关 Switch01、Switch02、
Switch03。
servic
eType 必选
服务类型,与servicetype-capability.json中serviceType字段保持 一致。
optio
n 必选 标识服务字段的类型,取值范围:
Master(主服务), Mandatory(必选 服务), Optional(可选服务)。
目前本字段为非功能性字段,仅起到描
tocolType 可选 升级使用的协议类型,此处不同于设备的 protocolType,例如CoAP设备软件升级协议使
字段 子字段 可选/
必选
描述
upgradePro
tocolType 可选 升级使用的协议类型,此处不同于设备的 protocolType,当前物联网平台仅支持
igFile 可选 设备默认配置信息(Json格式),具体配置信 息由设备商自定义。物联网平台只储存该信息
]
servic eType
必选
指示服务的类型,与devicetype-capability.json中serviceType字段保持一 致。
字段 子字段 必 选/
可选 描述
descri ption
comman dName
必选 指示命令的名字,命令名与参数共同构成 一个完整的命令。
paras 必选 命令包含的参数。
paraNam e
必选 命令中参数的名字。
dataT
ype 必选 指示命令参数的数据类型。
取值范围:string、int、string list、
decimal、DateTime、jsonObject、
enum、boolean。
上报数据时,复杂类型数据格式如下:
● string list:["str1","str2","str3"]
● DateTime:
yyyyMMdd’T’HHmmss’Z’如:
20151212T121212Z
● jsonObject:自定义json结构体,物联 网平台不解析,仅进行透传
字段 子字段 必 选/
可选 描述
maxLength 必选 指示字符串长度。
仅当dataType为string、string list、
DateTime时生效。
"enumList" : ["OPEN","CLOSE"]
目前本字段是非功能性字段,仅起到描述 作用,建议准确定义。
response s
必选 命令执行的响应。
respo nseName
必选 命名可以在该responses对应命令的 commandName后面添加“_RSP”。
取值范围:string、int、string list、
decimal、DateTime、jsonObject 上报数据时,复杂类型数据格式如下:
● string list:["str1","str2","str3"]
● DateTime:
yyyyMMdd’T’HHmmss’Z’如:
20151212T121212Z
● jsonObject:自定义json结构体,物联 网平台不解析,仅进行透传
字段 子字段 必
仅当dataType为string、string list、
DateTime时生效。
"enumList" : ["OPEN","CLOSE"]
目前本字段是非功能性字段,仅起到描述 作用,建议准确定义。
proper ties
必选 上报数据描述,每一个子节点为一条属 性。
property Name
必选 指示属性名称。
字段 子字段 必 选/
可选 描述
dataType 必选 指示数据类型。
取值范围:string、int、string list、
decimal、DateTime、jsonObject 上报数据时,复杂类型数据格式如下:
● string list:["str1","str2","str3"]
● DateTime:
yyyyMMdd’T’HHmmss’Z’如:
20151212T121212Z
● jsonObject:自定义json结构体,物联 网平台不解析,仅进行透传
取值范围:R、RW、RE、RWE 、null。
unit 必选 指示单位,英文。
取值根据参数确定,如:
温度单位:“C”或“K”
百分比单位:“%”
压强单位:“Pa”或“kPa”
maxLeng th
必选 指示字符串长度。
仅当dataType为string、string list、
DateTime时生效。
字段 子字段 必 选/
可选 描述
enumLis t
Profile 打包
Profile写作完成后,需要按如下层级结构打包:
Profile打包需要遵循如下几点要求:
● Profile文件的目录层级结构必须如上图所示,不能增删。例如:第二层级只能有
“profile”和“service”两个文件夹,每个服务下面必须包含“profile”文件夹 等。
● 图中橙色字体的命名不能改动。
● Profile文件以zip形式压缩。
● Profile文件的命名必须按照deviceType_manufacturerId_model的格式命名,其中 的deviceType、manufacturerId、model必须与devicetype-capability.json中对应 字段的定义一致。例如:本实例中devicetype-capability.json的主要字段如下:
{ "devices": [
● 图中的WaterMeterBasic、WaterMeterAlarm、Battery等都是devicetype-capability.json中定义的服务。
Profile文件中的文档格式都是JSON,在编写完成后可以在互联网上查找一些格式校验 网站,检查JSON的合法性。