含命令执行结果的编解码插件
场景说明
有一款烟感设备,具有如下特征:
- 具有烟雾报警功能(火灾等级)和温度上报功能。
- 支持远程控制命令,可远程打开报警功能。比如火灾现场温度,远程打开烟雾报警,提醒住户疏散。
- 支持上报命令执行结果。
Profile定义
在烟感产品的开发空间完成Profile定义。
编解码插件开发
- 在烟感产品的开发空间,选择“编解码插件开发”。
- 配置数据上报消息,上报火灾等级和温度。
添加messageId字段,表示消息种类。
- 在本场景中,数据上报消息有两种,所以需要用messageId来标志消息种类。
- “数据类型”根据数据上报消息种类的数量进行配置。在本场景中,仅有两种数据上报消息,配置为“int8u”即可满足需求。
- “默认值”可以修改,但必须为十六进制格式,且数据上报消息的对应字段必须和默认值保持一致。在本场景中,用0x0标识上报火灾等级和温度的消息。
添加level字段,表示火灾级别。- “字段名”只能输入包含字母、数字、_和$,且不能以数字开头的字符。
- “数据类型”根据设备上报数据的实际情况进行配置,需要和Profile相应字段的定义相匹配。
- “长度”和“偏移值”根据“数据类型”的配置自动填充。
添加temperature字段,表示温度。在Profile中,temperature属性最大值1000,因此在插件中定义temperature字段的“数据类型”为“int16u”,以满足temperature属性的取值范围。
- 配置命令下发消息。
添加messageId字段,表示消息种类。如果只有一种命令下发消息,则可以不配置此字段。
添加mid字段,用于将下发的命令和命令执行结果进行关联。
添加value字段,表示下发命令的参数值。
- 配置命令下发响应消息。
添加messageId,表示消息种类。命令执行结果为上行消息,需要通过messageId和数据上报消息进行区分。
添加mid字段,用于将下发的命令和命令执行结果进行关联。
添加errcode字段,用于表示命令执行状态:00表示成功,01表示失败,如果未携带该字段,则默认命令执行成功。
添加result字段,用于表示命令执行结果。
- 拖动右侧“设备模型”区域的属性字段和命令字段,数据上报消息和命令下发消息的相应字段建立映射关系。
- 点击“保存”,并在插件保存成功后点击“部署”,将编解码插件部署到物联网平台。
调测编解码插件
- 在烟感产品的开发空间,选择“在线调测”,使用虚拟设备调试编解码插件。
勾选“没有真实的物理设备”,点击“创建”。
- 使用应用模拟器进行命令下发:{ "serviceId": "Smoke", "method": "SET_ALARM", "paras": "{\"value\":0}" }。
在“设备模拟器”区域查看命令接收的结果:01000100。01为messageId字段,0001为mid字段,00为value字段。
- 使用设备模拟器进行数据上报。
十六进制码流示例:0200010000。02表示messageId,此消息上报命令执行结果;0001表示mid,长度为2个字节;00表示命令执行状态,长度为1个字节;00表示命令执行结果,长度为1个字节。
在
查看命令执行状态:执行成功。
总结
- 如果插件需要对命令执行结果进行解析,则必须在命令和命令响应中定义mid字段。
- 命令下发的mid是2个字节,对于每个设备来说,mid从1递增到65535,对应码流为0001到FFFF。
- 设备执行完命令,命令执行结果上报中的mid要与收到命令中的mid保持一致,这样平台才能刷新对应命令的状态。