NB-IOT 设备接入OneNET平台【包含物模型使用】

本文介绍了如何将NB-IOT设备接入OneNET平台,包括平台注册、物模型设置、设备添加、测试物模以及模块初始化和数据上传的步骤。文章详细阐述了每个阶段的具体操作,特别是物模型的创建和OneJson数据格式的使用,为读者提供了一条清晰的实施路径。
摘要由CSDN通过智能技术生成

1、前言

​ 现在网上的相关资料都是使用的旧版本的OneNET平台的账号,所以旧的文章里最常出现的比如像资源列表这类东西在新平台账号是没有的,使用的NB模块也都是内部集成好SDK的,非内部集成SDK的模块连接也没有那么方便,或者说有些许不一样,并且近两年新出的物模型网上也没有相关资料或者说很难找到,网上可能有新的资料但是不太好找我没有找到,我是到处东拼西凑才摸索着完成的,在这里记录一下方便后来者,毕竟我这份资料应该是你们可以最容易找到的并且是最全的资料了,跟我我的步骤走一定可以顺利走通平台发送数据给到物模型解析。

2、OneNET平台的注册与配置

2.1、注册与创建产品

​ 平台账号很好注册就不说了,至于企业与个人用户的区别就是设备数量等,前期测试倒也无所谓,如果后期有项目正式上线的想法可以后期再认证企业用户,毕竟OneNET的企业认证跟AEP不同还是蛮麻烦的。

  1. 注册好账号之后点击左上角的全部产品服务,选择物联网开放平台
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JQ8PZpbM-1687836381139)(NB-IOT设备接入OneNET平台.assets/image-20230625093417083.png)]

  2. 点击产品开发
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qxpp3FN5-1687836554461)(NB-IOT设备接入OneNET平台.assets/image-20230625093814354.png)]

  3. 点击创建产品[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fsIWr7Tp-1687836381140)(NB-IOT设备接入OneNET平台.assets/image-20230625094021215.png)]

  4. 产品种类自己看着填写接入协议也是看自己的选择,我这里是用的LwM2M,数据协议一定记得选择OneJson这样才可以使用物模,联网方式选择NB,开发方案为标准方案,最后点击确定创建成功
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-a5kbXH0b-1687836381141)(NB-IOT设备接入OneNET平台.assets/image-20230625094222290.png)]

2.2、物模型的设置

​ 可以先了解一下平台对物模型的解释OneNET - 中国移动物联网开放平台 (10086.cn),要是用我的话来简单理解就是,物模型可以把你发的数据按照你设定的数据格式解析出来,然后在平台以类似键值对的形式展示出来。

​ 接下来我们还是先看看怎么在平台设置物模吧:

  1. 创建成功之后点击产品开发 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3U2ZO1gG-1687836381141)(NB-IOT设备接入OneNET平台.assets/image-20230625094600846.png)]

  2. 点击设置物模型
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IFIwuOPb-1687836381141)(NB-IOT设备接入OneNET平台.assets/image-20230625095006170.png)]

  3. 创建一个简单的测试用例物模型

    1. 点击添加自定义功能节点

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bjQnVOSb-1687836381141)(NB-IOT设备接入OneNET平台.assets/image-20230627092941424.png)]

    1. 创建一个简单的物模型,完成后点击新增

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6Bh8qfM1-1687836381142)(NB-IOT设备接入OneNET平台.assets/image-20230627093241581.png)]

    可以看到列表中看到了新增的信息事件,点击保存,就可以将我们刚才设置的事件保存到我们的物模型中

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cJxW09IM-1687836381142)(NB-IOT设备接入OneNET平台.assets/image-20230627093405580.png)]

2.3、添加设备

​ 设置完一个简单的物模型后我们先来测试一下它的可用性,但是此时我们的产品下还没有设备,所以我们先来添加一个设备

  1. 点击设备接入管理->设备管理->添加设备
    在这里插入图片描述

  2. 产品选择我们刚刚创建的测试,设备名称随意,我们还缺少两个必填项IMIEIMSI
    在这里插入图片描述

  3. 打开串口调试助手输入

    AT+CGSN=1 获取IMEI

    AT+CIMI 获取IMSI

    在这里插入图片描述

  4. 将获取到的IMEIIMSI输入,点击确定

    在这里插入图片描述

我们就可以在设备列表中看到我们刚才添加的设备了
在这里插入图片描述

2.4、测试物模

  1. 点击设备详情在这里插入图片描述

  2. 点击设备调试->事件上报->启动调试在这里插入图片描述

  3. 事件选择我们刚才创建的测试用例,具体的参数随意填写,之后点击事件上报在这里插入图片描述

  4. 可以在右边的调试日志中看到设备上报到平台的数据形式在这里插入图片描述
    我们先把它复制出来,在后面需要用到

    { “title”: “事件上报”, “timestamp”: “2023-06-27 09:54:04”, “message”: “{“payloads”:{“id”:“1687830843101”,“version”:“1.0”,“params”:{“Test”:{“value”:{“Begin”:110,“Mid”:119,“End”:120}}},“method”:“thing.event.post”},“url”:”/19/0/0"}" }

    在这里可以先了解一点连接平台相关的知识

    1. 物模型通信协议>OneJson简介

    2. LwM2M协议接入>LwM2M-Studio概览

3、连接NB-IOT

3.1、模块初始化

//确认模块能正常响应 AT 命令

AT

OK

//获取模块 IMEI 号

AT+CGSN=1

+CGSN: “865324037375316”

OK

//查询模块固件版本号

AT+CGMR

+CGMR: N306_C1-E05-STD-BZ-001

OK

//确认模块能识别到 SIM 卡

AT+CPIN?

+CPIN: READY

OK

//获取 IMSI

AT+CIMI

460016657520885

OK

//确认信号良好 12< CSQ <31

AT+CSQ

+CSQ: 31, 99

OK

//主动关闭低功耗模式

AT+ECPMUCFG=1,1

OK

// 查询网络附着情况

AT+CGATT?

+CGATT: 1

OK

// 查询网络注册情况

AT+CEREG?

+CEREG: 0,1

OK

//查询 PDP 是否激活成功

AT+CGPADDR

+CGPADDR: 0,“10.20.221.89”

OK

这里具体的命令可能会有所不同,具体的命令要找模组厂商要资料,我这里使用的是有方的N306模块(很明显这不是广告)

3.2、模块接入 OneNET 平台,完成注册

//查询基础通信套件版本

AT+MIPLVER?
+MIPLVER: 2.3.0

OK

//创建基础通信套件成功,返回 < ref > 为 0,0 是基础通信套件标识,后续 AT 指令都需要使用到它

AT+MIPLCREATE
+MIPLCREATE: 0

OK

//添加对象为 19

AT+MIPLADDOBJ=0,19,1,“1”,1,1
OK

//模块请求注册AT+MIPLOPEN=0,3600
OK

+MIPLEVENT:0,1 //OneNET 平台返回结果 BOOTSTRAP_START

+MIPLEVENT:0,2 //OneNET 平台返回结果 BOOTSTRAP_SUCCESS

//不是内部集成平台SDK的模块不返回0,4

+MIPLEVENT:0,4 //OneNET 平台返回结果 CONNECT_SUCCESS

+MIPLEVENT:0,6 //OneNET 平台返回结果 REG_SUCCESS

//OneNET 平台对象/实例 Observe 请求

+MIPLOBSERVE: 0,125579,1,19,0,-1

//模块响应 Observe 请求,其中 msgid=125579 必须对应 OneNET 平台 Observe 请求消息中下发的 msgidOK

AT+MIPLOBSERVERSP=0,125579,1

//OneNET 平台对象 Discover 请求

+MIPLDISCOVER: 0,60044,19

//模块响应 Discover 请求,其中 msgid=60044 必须对应 OneNET 平台 Discover 请求消息中下发的 msgid。

AT+MIPLDISCOVERRSP=0,60044,1,1,“1”
OK

//平台返回 Discover 请求结果给模块,完成订阅。

+MIPLEVENT: 0,11

到这里我们就成功的与平台建立了通信,查看设备状态为在线

在这里插入图片描述

4、上传数据到ONENET平台

设备要向平台上传能被物模型解析的数据的格式要是16进制的OneJson格式数据

所以这个时候需要用到我们前面在设备调试时复制来的数据了,我们可以用几个实用的工具网站来转换成我们需要的数据

  1. 我们在这里可以使用去转义功能,将我们复制来的数据格式化成我们需要的样子(只需要playload里面的内容)JSON在线 | JSON解析格式化—SO JSON在线工具在这里插入图片描述

转换后我们得到了这样的数据

{
	"id": "1687830843101",
	"version": "1.0",
	"params": {
		"Test": {
			"value": {
				"Begin": 110,
				"Mid": 119,
				"End": 120
			}
		}
	},
	"method": "thing.event.post"
}
  1. 保险起见我们再清除空白字符在线字数统计工具 | 菜鸟工具 (runoob.com)

在这里插入图片描述

我们可以得到这样的结果

{"id":"1687830843101","version":"1.0","params":{"Test":{"value":{"Begin":110,"Mid":119,"End":120}}},"method":"thing.event.post"}
  1. 我们再使用文本转换工具将其转换为16进制数据16进制转换,16进制转换文本字符串,在线16进制转换 | 在线工具 (sojson.com)

在这里插入图片描述

我们就的到了这样的16进制数据

7b226964223a2231363837383330383433313031222c2276657273696f6e223a22312e30222c22706172616d73223a7b2254657374223a7b2276616c7565223a7b22426567696e223a3131302c224d6964223a3131392c22456e64223a3132307d7d7d2c226d6574686f64223a227468696e672e6576656e742e706f7374227d
  1. 最后我们将这个数据复制回我们前面去除空白符的计字工具中,将这个总字符数和转换后的数据记下来,后面要用到

    在这里插入图片描述

  2. 打开串口工具发送数据

    AT+MIPLNOTIFY=0,86296,19,0,0,2,128,"7b226964223a2231363837383330383433313031222c2276657273696f6e223a22312e30222c22706172616d73223a7b2254657374223a7b2276616c7565223a7b22426567696e223a3131302c224d6964223a3131392c22456e64223a3132307d7d7d2c226d6574686f64223a227468696e672e6576656e742e706f7374227d",0,0,797
    

    在这里插入图片描述

回码 26 即为发送成功,打开平台的事件记录

在这里插入图片描述

看到了我们刚才上传的数据

  1. 这里简单介绍一下发送数据命令的格式
AT+MIPLNOTIFY=0,86296 ,19,0,0,2,128,"7b226964223a2231363837383330383433313031222c2276657273696f6e223a22312e30222c22706172616d73223a7b2254657374223a7b2276616c7565223a7b22426567696e223a3131302c224d6964223a3131392c22456e64223a3132307d7d7d2c226d6574686f64223a227468696e672e6576656e742e706f7374227d",0,0,797

0—就是前面的ref基础通信套件标识

86296 —是Observe请求的msdID

19,0,0—平台物模型通道上行-数据上报在前面的OneNET - 中国移动物联网开放平台 (10086.cn)中有提到

2—是不透明型的意思,是AT+MIPLNOTIFY这条指令规定的一种数据类型,如需上传OneJson格式数据被平台物模型解析就要选择这种格式的数据(具体视不同模组厂商的AT指令说明,我这里仅限于我使用的这个模组)

128—这个就是我前面为什么说要记住字符数256,因为这是字节长度是从字符数计算得来的,但是并不是都填写的是字节长度,看具体前面选择的数据类型是什么,但是针对这款NB模组来说的话要上传OneJson数据被物模解析的话,是一定这么选择计算的

"7b22…277d"很明显就是要发送的内容了就是需要经过我上面说的一系列的转化得出来的

最后的0,0,797其实一般来说没有太大的意义,写0,0,0也行

第一个0是指令序号,如果需要多条指令组合成一个完整指令则从N-1 至 0 降序编号,为0则为这条指令结束

第二个0是如果有多条消息的话:

1 第一条消息

2 中间消息

0 最后一条消息

这个797是adcid,该数值随+MIPLEVENT 指令返回,写797也就是个人习惯,0是不会随着指令返回,1-65535都会随着指令返回
在这里插入图片描述

5、注意

  1. 不同模组厂商的AT指令不一定相同,具体实现需要结合自己模组的AT指令。
  2. 文中的Observe有所不同,因为中间出了点小插曲我重连了一遍,懒得再次截图了所以导致了不同,这个注意一下就好了,但是应该没有人会连这个也一起复制走。
  3. AEP平台有的命令下发功能OneNET也是不能够在平台直接实现的,需要自己通过平台API去编写调用。

6、结语

  1. 有疑问的可以在评论区留言交流,哪里写错了也欢迎指正。
  2. 电信AEP平台我也有在使用,但是那个比较简单,如果评论区需要的人多的话我后续也可以再出一个AEP平台的连接使用教程。
  3. 如果觉得写的有帮助到你的话可以送个三连支持一下,谢谢大家ORZ。
OneNET平台NB-IOT接入开发文档 目录 第一章 文档说明 5 第二章 基于OneNET平台NB设备接入及应用开发流程总体综述 6 2.1 NB设备接入OneNET平台流程图 6 2.2 应用开发流程图 6 第三章 NB设备接入OneNET平台 8 3.1 终端设备接入OneNET平台前的准备工作 8 3.1.1 SDK移植到MCU 9 3.1.2 SDK移植到NB通信模组 9 3.1.3 SDK移植到NB芯片 10 3.2 终端设备接入OneNET平台步骤 11 3.2.1 OneNET平台创建产品及设备 12 3.2.2 终端设备软硬件初始化 15 3.2.3 终端创建设备及资源 15 3.2.4 登录OneNET平台 16 3.2.5 平台订阅&发现设备资源 17 第四章 第三方应用开发 18 4.1第三方应用接入OneNET平台 18 4.1.1第三方应用平台接入验证程序 19 4.1.2 OneNET平台配置第三方应用平台 19 4.2 OneNET平台数据推送 20 4.1.1 明文消息 21 4.1.2 密文消息 22 4.1.3 消息相关字段说明 22 4.1.4 加密算法详述 23 4.2 API接口 24 4.2.1创建设备 25 4.2.2查看单个设备信息 26 4.2.3删除设备 27 4.2.4读设备资源 27 4.2.5写设备资源 28 4.2.6下发命令 29 4.2.7获取资源列表 29 4.2.8订阅 30 4.2.9离线命令 31 4.2.10 触发器 35 4.2.11批量查询设备状态 40 4.2.12批量查询设备最新数据 40 4.2.13查看数据点 41 第五章 接入实例 46 5.1 MCU侧工作流程说明 47 5.1.1创建设备(dev) 47 5.1.2向设备添加资源 48 5.1.3登录请求 49 5.2 OneNET平台侧数据收发流程说明 50 5.2.1数据接收 50 5.2.2指令下发 51 第六章 资源下载 57 6.1 数据推送SDK下载 57 6.2 NB-IoT API下载 57 6.3 NB-IoT 开发板资料下载 57 第七章 NB-IoT接入协议说明 58 7.1 基于NB-IoT的LWM2M协议 58 7.1.1 LWM2M协议逻辑实体与逻辑接口 59 7.1.2 LWM2M协议栈 60 7.2基于NB-IoT的CoAP协议 61 7.2.1 CoAP协议栈 61 7.2.2 块传输 63 7.2.3 安全传输 65 第八章 常见问题 66
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Genius-Sue

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值