用物联网平台开发与调试编解码插件实战【玩转华为云】
- 一 设备接入是个啥
- 二 接入设备控制台
- 三 创建并定义产品模型
- 四 开发调试编解码插件
- 五 删除完成实验资源
一 💡 设备接入是个啥
是华为云的物联网平台,它能提供海量设备连接上云、设备和云端双向消息通信、批量设备管理、远程控制和监控、OTA升级、设备联动规则等能力,简直非常强大,并可把设备数据灵活流转到华为云其他服务上面;
这个物联网平台它有啥优势吗?
相比企业自建MQTT集群,使用华为云IoT服务低成本它能构建物联网解决方案,并在能力、成本、运维、安全、生态等很多方面具有突出明显优势哦!
二 🥩 接入设备控制台
2.1 展开服务列表,选“IoT物联网 > 设备接入 IoTDA”进入设备接入控制台
2.2 设备接入控制台界面预览如下,默认开通基础版
三 😍 创建并定义产品模型
3.1 单击“产品 > 创建产品”
3.2 以智慧农业场景为例填写参数,单击右下角“确定”
① 产品名称:自定义,如HCCDA-IoT
② 协议类型:MQTT
③ 数据格式:二进制码流
④ 厂商名称:自定义,如Huawei
⑤ 所属行业:无
⑥ 设备类型:自定义,如HCCDA-IoT
3.3 提示创建产品成功,然后单击“查看详情”
3.5 产品模型是什么?
产品模型是用来描述设备能力的文件,通过JSON的格式定义了设备的基本属性、上报数据和下发命令的消息格式。定义产品模型,即在物联网平台构建一款设备的抽象模型,使平台理解该款设备支持的属性信息;
3.6 添加Agriculture服务
单击“模型定义 > 自定义模型”;
以智慧农业场景为例,输入“服务ID”、“服务类型”和“服务描述”,单击“确定”;
① 服务ID:Agriculture
② 服务类型:Agriculture
③ 服务描述:检测实时温湿度和光照强度
Tips:如果需要输入中文内容,请使用实验操作桌面右上角的剪贴板工具,将本地编辑好的中文拷贝粘贴到实验桌面内
3.7 添加属性
以智慧农业场景为例,属性设计
单击“添加属性”;
根据设计思路,添加“Temperature”属性,数据类型“int”,访问权限“可读、可写”,单击“确定”;
① 属性名称:Temperature
② 数据类型:int(整型)
③ 访问权限:可读、可写
④ 取值范围:默认值,0-65535
根据设计思路,添加“Humidity”属性,单击“确定”;
① 属性名称:Humidity
② 数据类型:int(整型)
③ 访问权限:可读、可写
④ 取值范围:默认值,0-65535
根据设计思路,添加“Luminance”属性,单击“确定”;
① 属性名称:Luminance
② 数据类型:int(整型)
③ 访问权限:可读、可写
④ 取值范围:默认值,0-65535
3.8 添加命令
以智慧农业场景为例,命令设计
单击“添加命令”;
根据设计思路,输入命令名称“Agriculture_Control_Light”,单击“新增输入参数”;
根据设计思路,新增“Light”参数,单击“确定”;
① 参数名称:Light
② 数据类型:string(字符串)
③ 长度:3
④ 枚举值:ON,OFF
Tips:为了方便理解与调测命令,推荐定义参数为string类型,并填写枚举值
单击“新增响应参数”;
根据设计思路,新增“Light_State”参数,单击“确定”;
① 参数名称:Light_State
② 数据类型:int(整型)
③ 取值范围:0-1(0表示命令执行成功,1表示命令执行失败)
“Agriculture_Control_Light”命令新增完成,单击“确定”;
单击“添加命令”;根据设计思路,输入命令名称“Agriculture_Control_Motor”,单击“新增输入参数”;根据设计思路,新增“Motor”参数,单击“确定”;
① 参数名称:Motor
② 数据类型:string(字符串)
③ 长度:3
④ 枚举值:ON,OFF
Tips:为了方便理解与调测命令,推荐定义参数为string类型,并填写枚举值
单击“新增响应参数”;根据设计思路,新增“Motor_State”参数,单击“确定”;
① 参数名称:Motor_State
② 数据类型:int(整型)
③ 取值范围:0-1(0表示命令执行成功,1表示命令执行失败)
“Agriculture_Control_Motor”命令新增完成,单击“确定”;
智慧农业服务Agriculture模型定义完成,如下图
四 🌈 开发调试编解码插件
以智慧农业场景为例,编解码插件消息字段必须与模型定义一致
编解码插件是供物联网平台调用,完成二进制格式和JSON格式相互转换的。它将设备上报的二进制数据解码为JSON格式供应用服务器“阅读”,将应用服务器下行的JSON格式命令编码为二进制格式数据供终端设备“理解执行”。
什么场景下需要开发编解码插件?
编解码插件主要根据设备上报数据的格式来判断是否需要开发。如果设备上报的“数据格式”为“二进制码流”,则该产品下需要进行编解码插件开发;如果“数据格式”为“JSON”,则该产品下不需要进行编解码插件开发。
4.1 新增数据上报消息
上报消息字段规划
单击“插件开发 > 图形化开发 > 图形化开发”;
单击“新增消息”;
输入消息名“Agriculture”,消息类型选择“数据上报”,单击“添加字段”;
勾选“标记为地址域”,其他默认,单击“确认”;
单击“添加字段”;输入字段名字“Temperature”,单击“确认”;
① 字段名称:Temperature
② 数据类型(大端模式):int8u
单击“添加字段”;输入字段名字“Humidity”,单击“确认”;
① 字段名称:Humidity
② 数据类型(大端模式):int8u
单击“添加字段”;输入字段名字“Luminance”,数据类型“int16u”,长度“2”,单击“确认”;
① 字段名称:Luminance
② 数据类型(大端模式):int16u
属性字段添加完成,单击“确定”;
单击右侧产品模型“Agriculture > 属性”,将三个属性逐个拖动到左侧,与消息中的字段一一对应。
单击右上角“保存”,智慧农业数据上报消息新增成功
4.2 新增Light命令消息
Light控制命令字段规划
单击“新增消息”;输入消息名“Agriculture_Control_Light”,消息类型“命令下发”,勾选“添加响应字段”;
单击“添加字段”;勾选“标记为地址域”,单击“确认”;
单击“添加字段”;勾选“标记为响应标识字段”,其他默认,单击“确认”;
单击“添加字段”;输入字段名字“Light”,数据类型“string”,长度“3”,单击“确认”;
① 字段名称:Light
② 数据类型(大端模式):string
③ 长度:3
Tips:产品模型中定义的命令下发字段为string类型,长度为3,此处必须保持一致
单击“添加响应字段”;勾选“标记为地址域”,单击“确认”;
单击“添加响应字段”;勾选“标记为响应标识字段”,单击“确认”;
单击“添加响应字段”;勾选“标记为命令执行状态字段”,单击“确认”;
单击“添加响应字段”;输入字段名字“Light_State”,单击“确认”;
① 字段名称:Light_State
② 数据类型(大端模式):int8u
命令字段添加完成,单击“确定”;
单击右侧产品模型“Agriculture > 命令 > Agriculture_Control_Light”并展开,将命令下发字段Light和命令响应字段Light_State逐个拖动到左侧,与消息中的字段一一对应
单击右上角“保存”,智慧农业Light命令消息新增成功
4.3 新增Motor命令消息
Motor控制命令字段规划
单击“新增消息”;输入消息名“Agriculture_Control_Motor”,消息类型“命令下发”,勾选“添加响应字段”;
单击“添加字段”;勾选“标记为地址域”,单击“确认”;
单击“添加字段”;勾选“标记为响应标识字段”,其他默认,单击“确认”;
单击“添加字段”;输入字段名字“Motor”,数据类型“string”,长度“3”,单击“确认”;
① 字段名称:Motor
② 数据类型(大端模式):string
③ 长度:3
Tips:产品模型中定义的命令下发字段为string类型,长度为3,此处必须保持一致
单击“添加响应字段”;勾选“标记为地址域”,单击“确认”;
单击“添加响应字段”;勾选“标记为响应标识字段”,单击“确认”;
单击“添加响应字段”;输入字段名字“Motor_State”,单击“确认”;
① 字段名称:Motor_State
② 数据类型(大端模式):int8u
命令字段添加完成,单击“确定”;
单击右侧产品模型“Agriculture > 命令 > Agriculture_Control_ Motor”并展开,将命令下发字段Motor和命令响应字段Motor_State逐个拖动到左侧,与消息中的字段一一对应
单击右上角“保存”,智慧农业Motor命令消息新增成功。然后单击右上角“部署 > 确认”,等待提示在线插件部署成功。
4.5 新增虚拟设备
单击“HCCDA-IoT”,回到产品界面;
单击“在线调试 > 新增测试设备”;
设备类型选择“虚拟设备”,单击“确定”;
设备创建成功,单击“确定”;
单击设备右侧的“调试”,进入在线调试界面;
4.6 数据上报调试
1. 调测Agriculture消息,在文本框中输入“00193C0064”,单击“发送”;
其中,“00193C0064”为十六进制格式,我们按设备属性进行拆分理解,对应关系如下:
① 00 - message_id - 整型(int8u),占1个字节;
② 19 - Temperature - 整型(int8u),占1个字节 - 对应十进制数值为25;
③ 3C - Humidity - 整型(int8u),占1个字节 - 对应十进制数值为60;
④ 0064 - Luminance - 整型(int16u),占2个字节 - 对应十进制数值为100;
可以看到在应用模拟器中显示模拟数据接收“{ "Temperature": 25, "Humidity": 60, "Luminance": 100 }”;
4.7 Light命令调试
1. 服务选择“Agriculture”,命令选择“Agriculture_Control_Light”,Light选择“ON”,单击“发送”,应用模拟器窗口显示命令发送记录,设备模拟器窗口显示命令接收记录;
其中,设备模拟器接收到的命令为十六进制格式数据,如:0100014F4E
① 01 - message_id - 整型(int8u),占1个字节;
② 0001 - mid - 整型(int16u),占2个字节 - 从0001开始,每下发一条命令递增+1,回复响应时原样带回;
③ 4F4E - 即下发命令参数ON的Unicode编码 - string(字符串),占2个字节;
设备模拟器文本框中输入响应消息,如“0200010000”,单击“发送”,然后单击“IoT平台”打开消息跟踪,查看日志显示异步命令设备响应消息,即命令下发成功;
其中,“0200010000”为十六进制格式,各段含义如下:
① 02 - message_id - 整型(int8u),占1个字节;
② 0001 - mid - 整型(int16u),占2个字节 - 从0001开始,每下发一条命令递增+1,回复响应时原样带回;
③ 00 - errcode - 整型(int8u),占1个字节;
④ 00 - Light_State - 整型(int8u),占1个字节;
4.8 Motor命令调试
1. 服务选择“Agriculture”,命令选择“Agriculture_Control_Motor”,Motor选择“ON”,单击“发送”,应用模拟器窗口显示命令发送记录,设备模拟器窗口显示命令接收记录;
其中,设备模拟器接收到的命令为十六进制格式数据,如:0300024F4E
① 03 - message_id - 整型(int8u),占1个字节;
② 0002 - mid - 整型(int16u),占2个字节 - 从0001开始,每下发一条命令递增+1,回复响应时原样带回;
③ 4F4E - 即下发命令参数ON的Unicode编码 - string(字符串),占2个字节;
设备模拟器文本框中输入响应消息,如“0400020000”,单击“发送”,应用模拟器命令执行状态变为执行成功;
其中,“0400020000”为十六进制格式,各段含义如下:
① 04 - message_id - 整型(int8u),占1个字节;
② 0002 - mid - 整型(int16u),占2个字节 - 从0001开始,每下发一条命令递增+1,回复响应时原样带回;
③ 00 - errcode - 整型(int8u),占1个字节;
④ 00 - Motor_State - 整型(int8u),占1个字节;
五 😊 删除完成实验资源
5.1 删除设备
进入“设备 > 所有设备”,选择已注册的设备,单击“删除”,并在弹窗中单击“是”完成删除。
5.2 删除产品
进入产品页,选择已创建的产品,单击“删除”,并在弹窗中单击“确认”完成删除。
5.3 结束实验
1. 等待片刻,系统弹窗提示已完成实验,单击“确定”关闭窗口。
2. 单击界面右上角“结束实验”,完成并退出实验。
- 点赞
- 收藏
- 关注作者
评论(0)