腾讯云
一、腾讯云概述
腾讯云物联网开发平台(IoT Explorer)是面向智慧生活与产业互联应用的物联网 PaaS 平台,为基于物联网的各行业设备制造商、方案商及应用开发商提供一站式设备智能化服务。平台提供海量设备连接与管理能力及基于腾讯的小程序应用开发能力,并打通腾讯云基础产品及 AI 能力,聚合腾讯生态内容能力。从而提升传统行业设备智能化的效率,降低用户的开发运维成本。
官网地址:物联网开发平台 - 控制台 (tencent.com
注意:
1. 腾讯云物联网开发平台从 2024 年 06 月 20 日起,新注册物联网开发平台的用户需购买公共实例激活码才可使用公共实例,在此时间之前注册的用户并已开通公共实例的用户则不受影响。
2. 腾讯新出了个 v2 版本开发平台,至笔者编写此文章为止,V2 较 V1 版本去掉了证书校验,去掉了自动注册中自动创建设备功能,并且已经和腾讯云确认此改动,是的,自动注册的自动创建设备改没了,自动注册要手动一个一个创建设备
具体请参考:公共实例计费说明
二、演示功能概述
本文教你怎么使用 AT 命令,通过几个简单的步骤,就可以让合宙 4G 模组接入腾讯云。
三、准备硬件环境
在正式介绍本功能示例之前,需要先准备好以下硬件环境。
本文章使用 Air700EMQ 核心板做演示;
参考:硬件环境清单,准备以及组装好硬件环境。
四、准备软件环境
在正式介绍本功能示例之前,需要先准备好以下软件环境。
在量产的项目硬件设计中,一般都是由主控 MCU 通过 UART 给 4G 模组发送命令实现具体的业务逻辑;
在本教程中,为了测试方便,没有使用主控 MCU;
而是使用了 PC 电脑上的一个串口工具 LLCOM 给 4G 模组发送命令来实现演示功能;
1. Luatools工具;
2. LLCOM 串口通信工具;
3. 本教程使用的AT固件版本号是:AirM2M_700EMQ_V2019_LTE_AT,如果版本号不正确,参考:固件版本确认和烧录检查确认。
五、需要用到的相关指令
本文主要使用 MQTT 协议接入腾讯云平台,相关指令点击链接查看合宙 4G 模组 MQTT 指令
六、 腾讯云操作实例
6.1 云平台配置
【注意】本教程采用 v2 版本开发平台,V2 较 V1 版本去掉了证书校验,去掉了动态注册中自动创建设备功能
6.1.1 登录并新建公共实例
登录官网物联网开发平台 - 控制台 (tencent.com)注册腾讯云账号,开通物联网平台服务后,新建公共实例进行试用。(腾讯云物联网开发平台从 2024 年 06 月 20 日起注册的用户,需要购买公共实例激活码才可以使用公共实例,此为腾讯云平台限制。)
6.1.2 创建产品并添加设备
1. 物联网平台--公共示例--产品开发--新建产品,产品品类根据自己需要选择,产品信息通信方式选择 2G/3G/4G
2. 创建完成后,自动跳转新建设备界面,点击设备调试,再点击新建设备,设备名称我们可以直接填写模组的 imei 号
这样我们就创建好了设备,我们点进去看下设备信息!
可以看到我们需要的数据已经被贴心的加了一键复制,我们要记录下 设备名称、产品 ID、设备密钥 这三个数据,使用这三个数据我们就可以上云了!
到此为止,创建产品设备工作已经完成。
6.2 设备注册
本教程采用密钥校验(手动注册)方式连接云平台,密钥校验只需要记住设备名称、产品 ID、设备密钥 这三个数据即可,后续演示如何接入云平台。
6.3 测试连接是否可用
使用 MQTT.fx 快速接入物联网开发平台,详细步骤参考 MQTT.fx 快速接入物联网开发平台
6.3.1 下载 MQTT.fx 并连接平台
1. 下载并安装 MQTT.fx 客户端,下载链接:https://www.softblade.de/download/
2. 打开 MQTT.fx 客户端程序,单击设置。
3. 进入设置页面,并单击“+”,创建一个新的配置文件,输入自定义名称 Profile Name,Profile Type 选择 MQTT Broker。
4. 填写 MQTT Broker Profile Settings 和 General 相关信息。
参数说明:
5. 单击 User Credentials,填写 User Name 和 Password。
User Name 和 Password 可以使用腾讯云平台提供的生成小工具( 点击下载生成小工具) 自动生成,生成步骤见 6.3.2 章节
6.3.2 生成 UserName 与 Password
1. 创建产品并添加设备后,单击平台设备调试中创建的设备名称,获取设备的三元组信息“产品 ID”、“设备名称”和“设备密钥”。
2. 下载网页小工具生成小工具并解压缩后,在目录中可查看到以下 3 个文件。
3. 在浏览器打开 sign.html
文件,显示如下图。将上一步中“产品 ID”、“设备名称”、“设备密钥”信息分别复制到对应的 ProductID、DeviceName、DeviceSecret 文本框中,签名算法默认选择 HMAC-SHA256,单击 Generate,网页工具自动生成 UserName 与 Password。(记得保存下来,后续使用 AT 指令连接云平台会用到)
6.3.3 设备发布物模型消息
选择客户端 Publish Tab,输入主题名称、Qos 等级,单击 Publish 进行发布。 示例 Topic:$thing/up/property/ProductID/DeviceName
(设备上报数据到平台的物模型 Topic,实际体验需要将 ProductID 与 DeviceName 替换成用户在平台创建的对应内容)。发布消息数据格式规范及示例,可参见文档 物模型协议
发布结果可通过 控制台 中对应的设备云端日志查询到上报记录。
6.3.4 设备订阅物模型消息
选择客户端 Subscribe Tab,输入订阅主题 Topic 名称、Qos 等级,单击 Subscribe 进行主题订阅。订阅结果可通过 控制台 的设备日志查询。 示例 Topic:$thing/down/property/ProductID/DeviceName
(设备订阅物模型 Topic,常用于云端通过物模型下发控制报文至设备端,实际体验需要将 ProductID 与 DeviceName 替换成用户在平台创建的对应内容)。
进入设备在线调试,设置开关,亮度后单击发送,平台将下发控制指令。
之后回到 MQTT.fx 窗口,可以看到云端刚才下发的控制报文数据:
到此已证明连接可用,接下来我们通过 AT 指令让模组接入腾讯云。
七、Air700EMQ AT 实例
7.1 确认开发板正常开机并联网正常
依次发送如下指令序列确认模组开机正常
AT //测试AT指令
AT
OK
ATE0 //关闭回显
ATE0
OK
AT+CSQ //查询模组信号质量
+CSQ: 30,99
OK
AT+CPIN?
+CPIN: READY
OK
AT+CCID //查询卡ccid,如果AT+CPIN? AT+CCID指令返回错误信息,请检查物联网卡正常(无卡,无流量、锁卡、欠费等)
+ICCID: 898604F4152391195302
OK
AT+CGATT? //AT+CGATT?查询是否注册网络收到+CGATT: 1值是1即为注册成功,正常情况下注册时间不会超过两分钟,如果超过两分钟没有注册可以进入飞行模式五秒后退出再查询,或者直接重启模块。
+CGATT: 1
OK
AT+CSTT //**AT+CSTT**配置网络,非私有APN以外Cat1的固件支持根据卡自动配置APN,直接输入AT+CSTT即可,模块会按照自动获取的APN设置CSTT的APN。
OK
AT+CIICR //**AT+CIICR**激活网络,在IP START的状态使用AT+CIICR激活网络
OK
AT+CIFSR //激活以后通过**AT+CIFSR**查询是否获取IP,如果成功就可以开始配置TCP连接了,如果不成功使用AT+CIPSHUT关闭移动网络,从AT+CSTT重新进行。
10.177.182.22
7.2 密钥校验方式接入腾讯云
7.2.1 建立 mqtt 连接
执行如下指令序列,可以让模组与 MQTT 服务器建立连接
AT+CGREG? //查询当前GPRS注册状态
+CGREG: 0,1 //<n>=0,表示禁用URC上报,<stat>=1,标识已经注册GPRS网络,而且是本地网
OK
AT+CGATT? //查看当前GPRS附着状态
+CGATT: 1 //<state>=1,标明当前GPRS已经附着
OK
//根据自己的云平台信息填写_配置mqtt连接参数,clientid,username,password
AT+MCONFIG="clientid","username", "password" //配置mqtt连接参数,分别为ClientID,MQTT用户名,MQTT密码
OK
//建立mqtt连接通道 填写自己的
AT+MIPSTART="[PRODUCT_ID.iotcloud.tencentdevices.com](http://PRODUCT_ID.iotcloud.tencentdevices.com)",1883
OK
CONNECT OK
AT+MCONNECT=1,60 //配置mqtt保活时间,60表示保活时间为60s
OK
CONNACK OK
此时查看云平台可看到设备已在线
建立 mqtt 连接后,我们就可以进行后面的主题订阅与发布步骤了。
7.2.2 设备订阅物模型消息
执行如下指令序列,可以让模组订阅 $thing/down/property/产品 id/设备名称主题,此时模组便可以收到云平台下发的消息。
AT+MSUB="$thing/down/property/产品id/设备名称",0 //订阅主题
OK
SUBACK
云平台在线调试向模组下发消息:
模组收到的消息通过串口工具显示到电脑上:
7.2.3 设备发布物模型消息
模组可以向主题 $thing/up/property/产品 id/设备名称发布消息“hello world”,此时模组便可以通过 AT 指令向云平台发布消息。
AT+MPUB="$thing/up/property/产品id/设备名称",0,0,"hello world"
云平台收到模组发布的消息:
八、总结
本教程详细阐述了如何利用腾讯云的密钥校验注册机制,确保设备安全接入云平台。通过提供一个具体的 AT 指令示例,教程展示了合宙 Air700EMQ 开发板如何与腾讯云平台进行通信。这不仅涵盖了密钥注册的核心流程,还通过实际操作演示了设备与云平台之间的数据交互,为物联网开发者提供了宝贵的实践指导。
九、参考资料
9.1 合宙 Air700EMQ 模组资料中心
https://docs.openluat.com/air700emq/
十、常见问题
10.1 连接服务器失败
1. 检查 SIM 卡是否欠费,模块信号、网络注册、网络附着、PDP 激活状态。 2. PC 端使用 mqtt 工具,连接服务器确认一下是否可以连接成功,排除服务器故障。 3. 在 MIPSTART /SSLMIPSTART 返 回 CONNECT OK 后 才 能 发 MCONNECT 命令,而且要立即发,否则会被服务器踢掉。
10.2 MQTT 连接总是断开是什么原因?
1. PC 端使用 mqtt 工具,连接服务器测试服务器稳定性,排除服务器不稳定因素。 2. 检查下模块信号弱导致网络不稳定,例如地下室、电梯、山区,天线匹配问题等。 3. 检查是否因为长时间无数据通讯导致服务器主动断开连接,需要根据实际情况设置 mqtt keep alive 时间。
10.3 模组订阅主题总是返回错误
1. 核对主题是否符合平台规范(主题订阅者有严格规范,如设备端只能订阅服务端的主题),发布消息数据格式规范及示例,可参见文档 物模型协议