设备Profile写作
设备的Profile文件为json格式的文件,需要包含如下信息:
设备型号识别属性:设备类型、厂商、型号、协议类型。
服务列表:具体的功能服务说明列表。
命名规范
在Profile文件的开发过程中,需要遵循如下命名规范:
- 设备类型(deviceType)、服务类型(serviceType)、服务标识(serviceId)采用单词首字母大写的命名法。例如:WaterMeter、Battery。
- 属性使用第一个单词首字母小写,其余单词的首字母大写的命名法。例如:batteryLevel、internalTemperature。
- 命令使用所有字母大写,单词间用下划线连接的格式。例如:DISCOVERY,CHANGE_COLOR。
- 设备能力描述json文件固定命名devicetype-capability.json。
- 服务能力描述json文件固定命名servicetype-capability.json。
- 厂商ID/厂商名称和设备型号唯一标识一款设备,故这些信息的组合在不同的Profile文件中不能重复,且仅支持英文。
- 要注重名称的通用性,简洁性;对于服务能力描述,还要考虑其功能性。例如:对于多传感器设备,可以命名为MultiSensor;对于具有显示电量的服务,可以命名为Battery。
在一些Profile样例中,您可能会遇到命名为devicetype-display.json或servicetype-display.json的文件,这些文件是用于智慧家庭领域的一些场景中的,如果物联网平台服务商与您在方案交流中未涉及,则在您的Profile中可以不包含这些文件。
如果您需要制作智慧家庭领域的Profile文件,可以向物联网平台支撑人员咨询。
设备Profile
将一款新设备接入到物联网平台,首先需要编写这款设备的Profile。物联网平台提供了一些Profile文件模板,如果新增接入设备的类型和功能服务已经在物联网平台提供的设备Profile文件模板中包含,则可以直接选择使用;如果在物联网平台提供的设备Profile文件模板中未包含,则需要自己定义。
例如:接入一款水表 ,可以直接选择物联网平台上对应的Profile文件模板,修改设备型号标识属性和设备服务列表。
物联网平台提供的Profile文件模板会不断更新,如下表格列举设备类型和服务类型示例,仅供参考。
设备型号识别属性:
属性 |
Profile中key |
属性值 |
---|---|---|
设备类型 |
deviceType |
WaterMeter |
制造商ID |
manufacturerId |
TestUtf8ManuId |
制造商名称 |
manufacturerName |
HZYB |
设备型号 |
model |
NBIoTDevic |
协议类型 |
protocolType |
CoAP |
设备的服务列表
服务描述 |
服务标识(serviceId) |
服务类型(serviceType) |
选项(option) |
---|---|---|---|
水表的基本功能 |
WaterMeterBasic |
Water |
Mandatory |
告警服务 |
WaterMeterAlarm |
Battery |
Mandatory |
电池服务 |
Battery |
Battery |
Optional |
数据的上报规则 |
DeliverySchedule |
DeliverySchedule |
Mandatory |
水表的连通性 |
Connectivity |
Connectivity |
Mandatory |
完整样例参见附录一 WaterMeter Profile样例。您可以根据需要,对服务的定义进行实例化修改,如:可以调整属性的取值范围、或枚举值等。
开发者可以通过咨询物联网平台支撑人员,以判断物联网平台是否支持自己的设备类型。如果开发者的设备类型或服务类型已经支持,则开发者可以向物联网平台支撑人员获取设备及服务的Profile文件参考。
设备型号建议由产品类型ID和产品ID组合构成,例如一家厂商水表的ProductTypeId为0x0168,ProductId为0x0188,则设备型号对应为“0168-0188”。
Profile打包
Profile写作完成后,需要按如下层级结构打包:
Profile打包需要遵循如下几点要求:
- Profile文件的目录层级结构必须如图1所示,不能增删。例如:第二层级只能有“profile”和“service”两个文件夹,每个服务下面必须包含“profile”文件夹等。
- 图1中橙色的命名不能改动。
- Profile文件以zip形式压缩。
- Profile文件的命名必须按照deviceType_manufacturerId_model的格式命名,其中的deviceType、manufacturerId、model必须与devicetype-capability.json中对应字段的定义一致。例如:本实例中devicetype-capability.json的主要字段如下:
{ "devices": [ { "manufacturerId": "TestUtf8ManuId", "manufacturerName": "HZYB", "model": "NBIoTDevice", "protocolType": "CoAP", "deviceType": "WaterMeter", "serviceTypeCapabilities": **** } ] }
- 图1中的WaterMeterBasic、WaterMeterAlarm、Battery等都是devicetype-capability.json中定义的服务。
- Profile文件中的文档格式都是json,在编写完成后可以在互联网上查找一些格式校验网站,检查json的合法性。