| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 嵌入式 -> 【技术分享】Lierda NB860+Lierda 云平台——云管端协作让万物互联更简单(一) -> 正文阅读 |
|
[嵌入式]【技术分享】Lierda NB860+Lierda 云平台——云管端协作让万物互联更简单(一) |
随着物联网行业的快速发展,涌现出越来越多物联网云服务平台。如何快速实现应用开发,如何管理,如何让设备快速上云,成为关注的焦点。 本文将描述如何使用NB860系列模组通过MQTT指令快速接入利尔达IoT基础服务平台,并介绍两者数据交互操作流程,详细的AT交互流程可以帮助用户或开发人员尽快完成相关的应用开发。 所需产品 另外用到的利尔达NB860/MB960/MB260系列模组是基于5G NB-IoT芯片自主开发的第三代NB-IoT模组。该款模组集高性价比、高安全性和低功耗等优点于一身,新增蓝牙、OpenCPU、GNSS定位等能力,为智能表计、智能烟感、智能停车、智慧路灯等百万级成熟NB-IoT应用提供了更优选择。 利尔达NB860/MB960/MB260系列模组支持TCP/UDP、MQTT、LwM2M等多种协议接入云平台,为行业应用开发提供了更多的可能性。今天文章第一期将为大家介绍利尔达NB860模组基于MQTT协议快速接入利尔达IoT基础服务平台,实现数据交互。 快速上云设备端完整AT示例流程 //配置服务器IP及域名 如上图所示,示例流程展示了设备在配置及连接后进行收发数据的调试操作,在实际应用开发中通过开发MCU代码适配参数,即可完成了订阅推送(应用APP/Web)前所有开发工作,下文将以上步骤给大家做详细讲解。 Lierda X平台操作流程 ※ 设备接入前准备事项 ※ 注册,创建产品设备 步骤1:创建产品 1.登录物联网平台控制台 步骤2:设置物模型、topic消息等,添加自定义Topic 1.登录物联网平台控制台。 步骤3:创建设备 1、登录物联网平台控制台。 执行结果 后续步骤 ※ 设备侧操作 设置服务端IP或域名 设置客户端标识 示例: 连接服务端 订阅MQTT消息 使用AT+MQTTSUB=<Link_ID>,,,[,,] [,,]命令订阅消息,已经订阅成功的消息可在平台上的设备topic列表查看。 < Link_ID > 连接ID:取值0~2。 报文标识符:取值1~65535。 主题名:0~512字节字符串。一次最多可订阅3个主题。 订阅消息QOS等级:取值0~2。 示例: AT+MQTTSUB=0,1,"/sys/5********//86*83/downlink",1 收←◆ +MQTTSUBACK: 0,1,0 OK 设备请求入网(Join) 设备上报的通用入网 Topic:/sys/device/join 设备在进行正式的数据通信之前,必须先向 IoT 平台请求入网。设备应主动与 IoT 平台建立 TCP Socket 链接。在成功建立链接后,设备必须向平台发送请求入网数据帧,以让平台为设备分配通信资源;否则平台将拒绝与设备进行通信。 请求入网数据帧使用的 Command 为 2;数据帧格式和内容如下所示: { “MessageId” : 1231, “HeaderCtrl”:2, //命令码 “Mode”:0, //0:不加密, 1:加密 “Nonce”:10, //1-128 随机数 “Payload”:{ “OpenID”:“E0C040B1”, “ProductID”:“A4BC6002”, “NodeEui”:"…", //设备标识 “ClientID”:"…", //认证后返回的 ClientID “Type”:0, //0:一型一密免注册,1:一型一密预注册,2:一机一密预注册 “Sign”:“FE448731” } } 设备向 IoT 平台发起的入网请求数据帧中包含了Payload域,用于携带额外的信息。Payload域中包含的内容及说明如下所示: 平台收到入网请求后,根据当前产品类型是免注册还是预注册,重新计算 Sign 并与设备上报的 Sign 值进行对比,不同类型设备的 Sign 计算规则详见2.4小节。 平台收到设备的入网请求数据帧并成功认证设备身份后,会为该设备分配通信资源 ,然后使用同样的Command(2)响应设备。IoT平台返回Topic :/sys/{openId}/{productId}/{deviceId}/downlink,响应设备入网请求的数据如下: { “HeaderCtrl”:2, //命令码 “MessageId” : 1231, “Mode”:0, //0:不加密, 1:加密 “Nonce”:10, //1-128 随机数 “Payload”:{ “Code”:0, “SessionID”:“4655434B” } } Join指令的 Code 说明:对于设备请求入网指令(Join),Code 定义为平台回复设备的入网请求的响应码。 响应码定义如下表所示: 如果设备发送了入网请求,等待超时后没有收到平台的任何回复,则有可能是网络 问题导致数据丢失,建议检查网络并重试。只有响应码(Code)值为 0 的时候,响应数据中的 Payload 中所携带的 SessionID 才是 IoT 平台分配的有效的 SessionID: 设备成功入网后,IoT平台返回了 SessionID。设备需要使用入网安全密钥ProductKey和本次回复中的随机数Nonce来计算生成后续与 IoT平台进行通信过程中用于加密用户应用数据的密钥(SessionKey),计算方法如下描述(伪代码): 加密方式:AES128_ECB_PKCS5Padding SessionKey = ENCRYPT( ProductKey , SessionID + Nonce); 示例: ProductKey :A0 1A 24 79 67 25 73 DF 84 53 7D F4 C7 3D 3F CC SessionID:46 55 43 4B Nonce(123):7B 则拼接结果为:46 55 43 4B 7B 加密运算结果为:40 8C 79 0F 85 BF 60 E6 D4 F1 C1 3C 6A 5C 4C 8B SessionKey = 408C790F85BF60E6D4F1C13C6A5C4C8B 如果使用非加密模式进行应用数据的传输,则可以忽略此步骤,即不需要计算 SessionKey 的值。 特别注意:设备的入网请求数据如果设置了Mode 为1,则平台会在设备心跳和设备数据上行时检查设备的SessionKey是否过期,如果平台监测到设备的SessionKey过期,则会主动更新设备SessionKey并下发给设备;如果入网请求数据设置了 Mode 位为 0,则平台不会检查设备的 SessionKey 是否过期。 入网sing值计算请参考文档《Lierda_NB860&MB960&MB260_Application_Notes_MQTT对接Lierda X平台》 备注: 设备每次与 IoT 平台建立新的 MQTT 链接后(首次连接或者断线重连),都必须向平台重新请求入网,否则平台将拒绝与设备进行通信。 数据交互 通过AT+MQTTPUB=<Link_ID>,,,,,命令向平台发布消息。 <Link_ID> 连接ID:取值0~2。 报文标识符:取值1~65535。 发布消息QOS等级:取值0~2。 保留标志:取值0~1。 主题名:0~512字节字符串。 有效载荷:0~1500字节字符串。 示例: AT+MQTTPUB=0,1,0,0,"/sys/5********//86*83/uplink","{ “MessageId” : 1231,“HeaderCtrl”:4,“Mode”:1,“Nonce”:10,“Payload”:“CB963****************EFE”}" □ [11:06:12.040]收←◆ [11:06:12.060]收←◆ +MQTTPUBACK: 0,1,0 OK [11:06:13.680]收←◆ +MQTTRECV:0,8,1,0,/sys/5********//86*83/downlink,{“MessageId”:1231,“HeaderCtrl”:4,“Code”:“200”,“Msg”:“SUCCESS”} +MQTTRECV:0,9,1,0,/sys/5********//86*83/uplink_ack,{“MessageId”:1231,“HeaderCtrl”:4,“Code”:“200”,“Msg”:“SUCCESS”} 设备上报数据可在运行日志中查看;下发透传数据可在在线调试中实现。
至此,我们已完成基于MQTT协议的端(Lierda NB860模组)到云(Lierda X平台)对接并实现数据交互功能。下一期我们将介绍NB860模组配合X平台进行云云对接快速上云,敬请期待。 |
|
嵌入式 最新文章 |
基于高精度单片机开发红外测温仪方案 |
89C51单片机与DAC0832 |
基于51单片机宠物自动投料喂食器控制系统仿 |
《痞子衡嵌入式半月刊》 第 68 期 |
多思计组实验实验七 简单模型机实验 |
CSC7720 |
启明智显分享| ESP32学习笔记参考--PWM(脉冲 |
STM32初探 |
STM32 总结 |
【STM32】CubeMX例程四---定时器中断(附工 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 4:22:10- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |