通过华为认证模组接入
概述
认证模组是指通过预集成IoT Device SDK Tiny,并且通过华为测试认证,遵循华为指定AT命令规范的模组。使用华为认证的模组可以带来以下好处:
- 设备厂商在MCU上无需关心如何连接到华为云IoT(例如,MQTT建链时密钥的加密算法,clientID的组成方式等),只通过调用该模组提供的AT指令对接华为IoT平台,可以节约设备对接工作量和设备调试周期。
- 由于MCU无须集成MQTT协议栈或者IoT Device SDK Tiny,因此大大节省MCU资源的消耗。
使用认证模组开发设备的示意图如下所示:
推荐模组列表
模组类型 |
厂商 |
具体型号 |
---|---|---|
4G Cat1模组 |
广和通 |
L610 |
中移物联 |
ML302 |
|
4G Cat4模组 |
移远 |
EC20CEFASG |
移远 |
EC20CEHDLG |
|
有方 |
N720 |
|
NB-IoT模组 |
中移物联 |
M5319-A |
- LTE Cat4模组适用于业务数据传输速率为50Mbps~150Mbps的场景,LTE Cat1模组适用于业务数据传输速率为5 Mbps~10 Mbps的场景。
- 若上述列表中没有您所需的模组型号,请提交工单说明您的业务场景和诉求。
模组类型 |
厂商 |
具体型号 |
---|---|---|
NB-IoT模组 |
移远 |
BC39 |
BC95 |
||
BC35 |
||
BC26 |
||
BC28 |
||
有方 |
N27 |
|
N25 |
||
N21 |
||
中怡数宽 |
TPB41 |
|
TPB23 |
||
云程科技 |
CFB-609 |
|
利尔达 |
NB86-G |
|
4G Cat4模组 |
域格 |
CLM920_NC5 |
CLM920_NC3 |
||
移远 |
EC20 |
|
4G Cat1模组 |
有方 |
N58 |
移远 |
EC200S |
|
2G/3G模组 |
移远 |
M25 |
Zigbee智能模组 |
顺舟 |
SZ05 |
5G模组 |
华为 |
MH5000 |
LoRa模组 |
有方 |
LR70 |
唯传 |
M100C |
前提条件
- 已开通SIM卡流量,模组能够上网。
- 已开通设备接入服务。
硬件连接
将4G卡插入到SIM卡卡槽,确保插卡的时候卡的缺口朝里,且芯片朝上(本文以L610模组为例)。
安装USB驱动
- 安装USB驱动:
- 使用串口工具进行AT命令调试
- 运行安装文件,根据界面提示进行安装。
不同厂家匹配的串口工具版本不同,请联系厂家获取符合要求的串口工具。
- 打开串口工具,选择步骤2枚举的AT串口,波特率设置为115200,单击“Open Port”。
请确保设置正确,否则AT命令不能够被解析或者解析出错。
- 输入“AT+COPS?”指令,单击“Send Command”,若返回OK,表明网络注册状态成功,否则请检查设置以及硬件接线。
若返回的消息中“+COPS: 0,0,"CHN-CT",7”最后一位数字不是7,表明网络存在问题,请更换SIM卡或确认SIM卡能够上网。
- 运行安装文件,根据界面提示进行安装。
创建产品和设备
通过模组提供的AT指令连接华为云IoT
模组提供两种编码方式的AT指令连接华为云,ASCII码方式和hexstring模式,ASCII表示原始编码,hexstring表示十六进制编码。
- 使用ASCII模式连接华为IoT平台
- 连接华为云IoT平台。发送AT+HMCON=bsmode,lifetime,"serverip","serverport","deviceID","passwd",codec指令,例如AT+HMCON=0,300,"iot-mqtts.cn-north-4.myhuaweicloud.com","8883","deviceID","passwd",0,若收到“+HMCON OK”,表明设备成功连接到平台。
其中各参数含义如下所示:
- bsmode:是否使用设备发放,填写为0。0表示直接连接设备接入平台;1表示经过设备发放连接设备接入平台;
- lifetime:MQTT心跳时间,默认300;
- serverip:MQTTS/MQTT协议的对接地址,请参考平台对接信息获取。如果经过设备发放连接平台,则为设备发放的地址,请参考设备发放获取;
- serverport:设备接入的对接端口。如果使用MQTTS协议,端口为8883;MQTT协议,端口则为1883。如果使用设备发放则为设备发放的端口;
- deviceID:注册设备返回的设备ID,参考步骤2获取;
- passwd:注册设备设置的密钥,参考步骤2获取;如果使用证书模式,该项可以设置为空,但是需要提前设置设备端的公钥以及私钥证书。
- codec:数据传输方式,请填写0或1。0表示是可视的ASCII码方式;1表示使用的是hexstring模式。如果是ascii模式,则数据模式一般为len,ascii_payload。例如2,"ab";如果是hextring模式,则表示为2,“6162”。
- 订阅自定义主题。发送AT+HMSUB=qos,topic指令,例如AT+HMSUB=0,"$oc/devices/device_id/user/mytopic”,若收到“+HMSUB OK” ,表明订阅成功。
其中各参数含义如下所示:
- qos:topic的qos,默认填写0;
- topic:新增的自定义Topic。详细操作指导请参考新增自定义Topic,其中设备操作权限选择“订阅”,deviceID需要替换为实际设备ID。
- 消息上报。发送AT+HMPUB=qos,topic,payload_len,payload指令,例如,
AT+HMPUB=0,"$oc/devices/device_id/user/mytopic",16,"{\"test\":\"hello\"}",若收到“+HMPUB OK”,表明发布成功。
payload为ASCII模式,要求字符串首尾为双引号,中间的特殊字符要用转义字符。
其中各参数含义如下所示:
- qos:对应MQTT的qos,建议使用0。
- topic:新增的自定义Topic。详细操作指导请参考新增自定义Topic,其中设备操作权限选择“发布”,deviceID需要替换为实际设备ID。
- payload_len:上报消息的长度,不包含\。
- payload:上报的消息。
- 属性上报。发送AT+HMPUB=qos,topic,payload_len,payload指令,例如,
AT+HMPUB=0,"$oc/devices/device_id/sys/properties/report",82,"{\"services\":[{\"service_id\":\"Clock\",\"properties\":{\"card_no\":\"3028\",\"use_type\":1}}]}",若收到“+HMPUB OK”,表明上报成功,您可以在设备详情页面查看上报的属性值。
- qos:对应MQTT的qos,建议使用0;
- topic:平台预置的Topic。更多Topic请参考Topic定义,deviceID需要替换为实际设备ID。
- payload_len:上报属性的长度,不包含\;
- payload:上报的属性。
- 下发命令。在设备接入控制台 页签,单击“同步命令下发”下方的“命令下发”。选择要下发的命令和命令值。下发成功后,设备侧收到+HMREC:topic,payload_len,payload,例如,+HMREC: "$oc/devices/device_id/sys/commands/request_id={request_id}{"paras":{"value":1},"service_id":"SmokeDetectorControl","command_name":"QUITSILENCE"}",86,{"paras":{"value":1},"service_id":"SmokeDetectorControl","command_name":"QUITSILENCE"
图1 命令下发-SmokeDetectorControl_SILENCE
其中各参数含义如下所示:
- qos:对应MQTT的qos,建议使用0;
- topic:平台预置的Topic。更多Topic请参考Topic定义,deviceID需要替换为实际设备ID,{request_id}用于唯一标识这次请求。设备侧发起的消息带该参数时,需要保证设备侧该参数值的唯一性,可以用递增的数字或者UUID来实现。设备侧收到的消息带该参数时,响应消息需要将该参数值返回给平台。
- payload_len:下发命令的长度,不包含\;
- payload:下发的命令。
- 取消自定义主题。发送AT+HMUNS="topic",例如,AT+HMUNS="$oc/devices/deviceID/user/mytopic",若收到“+HMUNS OK”,表明取消成功。
其中topic为2中新增的自定义Topic,deviceID需要替换为实际设备ID。
- 断开和IoT平台的连接。发送AT+HMDIS指令。
- 设置服务器或客户端证书。
- 设置CA证书:AT+HMPKS=type,para1,[para2],“Certificate”,例如发送AT+HMPKS=0,1360
- 设置客户端证书: AT+HMPKS=type,para1,[para2],“Certificate”,例如发送 AT+HMPKS=1,1022
- 设置私钥证书: AT+HMPKS=type,para1,[para2],“Certificate”,例如发送AT+HMPKS=2,1732
- type:取值0,1,2。其中0表示CA证书,证书通过para1传递;1表示客户端证书,证书通过para1传递;2表示设备私钥证书,设备的私钥证书通过para1传递;如果有密码,则通过para2传输。
- para1/[para2]:其中para1用于存放证书,为空时表示清除证书;para2用于存放私有证书的密码,仅当设置私有证书时有效,证书以字符串格式传输PEM。
- Certificate:证书内容的字符长度值。
- 连接华为云IoT平台。发送AT+HMCON=bsmode,lifetime,"serverip","serverport","deviceID","passwd",codec指令,例如AT+HMCON=0,300,"iot-mqtts.cn-north-4.myhuaweicloud.com","8883","deviceID","passwd",0,若收到“+HMCON OK”,表明设备成功连接到平台。
- 使用HEXSTRING模式
- 连接华为云IoT平台。发送AT+HMCON=bs,lifetime,“serverip”,“serverport”,“deviceID”,“passwd”,codec指令,例如AT+HMCON=0, 300,“iot-mqtts.cn-north-4.myhuaweicloud.com”,“8883”,“deviceID”,“passwd”,0,若收到“+HMCON OK”,表明设备成功连接到平台。
其中参数说明请参考1。
- 订阅自定义主题。发送AT+HMSUB=qos,topic指令,例如AT+HMSUB=0,"$oc/devices/device_id/user/mytopic”,若收到“+HMSUB OK” ,表明订阅成功。
其中参数说明请参考2。
- 消息上报。发送AT+HMPUB=qos,topic,payload_len,payload指令,例如,AT+HMPUB=0,"$oc/devices/device_id/user/mytopic",16,7b2274657374223a2268656c6c6f227d
注:payload为HEX数据格式,可以直接是HEX字符串,且首尾无需双引号。
其中参数说明请参考3。
- 属性上报。此处以消息上报为例,其中参数说明请参考4。
- 下发命令。在设备接入控制台“同步命令下发”右侧的“命令下发”。选择要下发的命令和命令值。下发成功后,设备侧收到+HMREC,topic,payload_len,payload指令,例如,
+HMREC: "$oc/devices/device_id/sys/commands/request_id={request_id}",102,7B227061726173223A7B2276616C7565223A223132333435363738393071617A77737865646372667674676279686E756A6D696B6F6C70227D2C22736572766963655F6964223A224E42444F4F52222C22636F6D6D616E645F6E616D65223A2273656E64227D
其中参数说明请参考5。
页签,单击 - 取消自定义主题。发送AT+HMUNS="topic",例如,AT+HMUNS="$oc/devices/device_id/user/mytopic",若收到“+HMUNS OK”,表明取消成功。
其中参数说明请参考6。
- 断开和IoT平台的连接。发送AT+HMDIS指令。
- 设置服务器或客户端证书。参考步骤8。
- 连接华为云IoT平台。发送AT+HMCON=bs,lifetime,“serverip”,“serverport”,“deviceID”,“passwd”,codec指令,例如AT+HMCON=0, 300,“iot-mqtts.cn-north-4.myhuaweicloud.com”,“8883”,“deviceID”,“passwd”,0,若收到“+HMCON OK”,表明设备成功连接到平台。