一、OneNET平台介绍

中国移动物联网开放平台OneNET是由中国移动打造的PaaS物联网开放平台。平台能够帮助开发者轻松实现设备接入与设备连接,快速完成产品开发部署,为智能硬件、智能家居产品提供完善的物联网解决方案。本人使用OneNET平台差不多已经有一年半,最初使用它的时候是有一个大学生创新项目,做的是老人健康监护手表,由于团队当初不会开发自己的服务器,因此借助了OneNET。想要使用OneNET需有一个OneNET账号,注册一个即可,注册流程很简单,这里不多介绍。

二、NBIOT模组M5310介绍

1、M5310模组采用华为海思Hi2110芯片。

2、M5310模组内置UDP控制命令、可以连接自己的服务器。

3、M5310模组内置LWM2M控制指令、可以直接连接ONENET。

由于内置了LWM2M协议,并且以AT指令的形式来连接OneNET,因此使用起来非常方便。

三、在OneNET创建NBIOT产品并添加设备

OneNET创建产品并添加设备操作很简单,只需在页面进行创建和添加即可:

1、点击右上角的“开发者中心”

接着点击创建产品

2、编辑产品信息

填写完信息后点击“确定”就完成产品的创建。

3、添加设备

点击平台的设备管理进行添加设备

设备类型:选择正式设备。

设备名称:随便命名。

IMEI:为NBIOT模组M5310的IMEI号。

Auth_Code:可不填写。

IMSI:为NBIOT物联SIM卡的IMSI号。

IMEI和IMSI和分别向模组发送AT+CGSN=1和AT+CIMI命令得到。

填写完毕后,选择“自动订阅”再点击“确定”就完成设备的添加。

四、M5310模组连接OneNET

1、配置串口调试助手,波特率为9600

2、上电初始化M5310

M5310
OK  //开机启动信息
AT  //开机之后循环发送 AT 直到返回 OK,证明模块初始化正常
OK
AT+COPS=1,2,"46000"  //设置手动注册移动运营商 MNC
OK
AT+NEARFCN=0,3555  //锁定频点为 3555,锁频可以有效减小搜网时间,但是频点设置错误会导致搜网失败,建议通常情况下不要设置锁频
OK
AT+CSCON=1  //打开信号提示自动上报
OK
AT+CEREG=1  //打开注册信息自动上报
OK

3、生成模组侧设备注册码

模组侧设备创建使用 AT+MIPLCONF 指令,其使用格式为:
AT+MIPLCONF=<size>,<config>,<index>,<flag>
其中,
<size> 指示<config>部分总数据长度,按照ASCII计数;
<config>  具体的设备配置数据,满足配置结构体规范;
<index> 配置数据分片参数;
<flag> 配置数据流结束符。

这里介绍两种生成注册码的方法:

(1)使用OneNET平台的专用配置工具OneNET_config_v1.2.exe进行注册码生成:

A.用DOS命令串口打开OneNET_config_v1.2.exe工具并按如下格式填写数据:

按回车键生成对应的数据:

其中,各参数具体含义如下:
<boot>: -b Bootstrap 模式设置,1 为打开,0 为关闭; 需要 设置为 1 ;
<encrypt>: -e 加密模式设置,1 为打开,0 为关闭;目前不支持加密模式;
<debug>:  -d Debug 等级设置:
0  关闭 debug 模式
1  仅打印接收/发送包数据长度
2  打印发送数据包长度和接收数据内容及数据长度
3  打印接收/发送数据内容及数据长度
<internet>: -i  host 设置,格式为”ServerURI:Port”;
ServerURI 远端服务器地址, 重庆平台使用 183.230.40.39
Port 远端服务器端口号, 重庆平台使用 5683
<name>:  -n 鉴权参数,格式为”IMEI;IMSI”, 对应平台侧设备 注册 时的鉴
权参数 IMEI 和 和 IMSI;
<port>:  -p 本端端口号,范围 0~65535;缺省值 0,当选择缺省时,模组
会自动从 32768~65535 中选择一个可用的端口号;
<time>:  -t  设备存活时间,标示终端和 OneNET 平台之间连接的存活周
期,设置范围为 10s~86400s;
<block1>:  -u 设置 PUT 和 POST 指令分片长度,范围 0~6,指示分片长度
为 2^(4+u),缺省值为 5;
<block2>:  -g 设置GET指令分片长度,范围0~6,指示分片长度为2^(4+g),
缺省值为 5;
<block2th>: -x 设置触发分片操作的最大长度,范围 0~2,指示阈值为
2^(4+x),缺省值为 2。
如 无 特殊 需求,建议分片参数 block1 和 和 block2  设置 为缺省值,block2th  设
置为 为 1 。

这种方法适用于采用串口调试助手调试M5310模组。

(2)使用相关算法生成注册码:

#include "memory.h"
#include "string.h"
#include "stdio.h"
#include "stdlib.h"
#include "string.h"typedef enum
{MIPL_DEBUG_LEVEL_NONE = 0,MIPL_DEBUG_LEVEL_RXL,MIPL_DEBUG_LEVEL_RXL_RXD,MIPL_DEBUG_LEVEL_TXL_TXD,
} MIPL_DEBUG_LEVEL_E;typedef unsigned char uint8;
typedef unsigned short uint16;
typedef unsigned uint32;#define MIPL_BOOT       1
#define MIPL_ENCRYPT    0
#define MIPL_DEBUG      MIPL_DEBUG_LEVEL_NONE
#define MIPL_PORT       0
#define MIPL_KEEP_ALIVE 3000
#define MIPL_BLOCK1     5
#define MIPL_BLOCK2     5
#define MIPL_BLOCK2TH   1
#define MIPL_URI        "coap:\/\/183.230.40.39:5683"
#define MIPL_ENDPOINT   "862018102915220;460040236709122"typedef struct
{uint8 boot;uint8 encrypt;MIPL_DEBUG_LEVEL_E debug;uint16 port;uint32 keep_alive;size_t uri_len;char* uri;size_t ep_len;char* ep;uint8 block1;  //COAP option BLOCK1(PUT or POST),0-6. 2^(4+n)  bytesuint8 block2; //COAP option BLOCK2(GET),0-6. 2^(4+n)  bytesuint8 block2th;   //max size to trigger block-wise operation,0-2. 2^(8+n) bytes
} MIPL_T;void mipl_generate(char *buf, size_t buflen, MIPL_T *mipl);int main(void)
{char config[1024];MIPL_T m5310_mipl_t;m5310_mipl_t.block1 = MIPL_BLOCK1;m5310_mipl_t.block2 = MIPL_BLOCK2;m5310_mipl_t.block2th = MIPL_BLOCK2TH;m5310_mipl_t.boot = MIPL_BOOT;m5310_mipl_t.debug = MIPL_DEBUG;m5310_mipl_t.encrypt = MIPL_ENCRYPT;m5310_mipl_t.ep_len = strlen((char*)MIPL_ENDPOINT);m5310_mipl_t.ep = (char*)MIPL_ENDPOINT;m5310_mipl_t.keep_alive = MIPL_KEEP_ALIVE;m5310_mipl_t.port = MIPL_PORT;m5310_mipl_t.uri = (char*)MIPL_URI;m5310_mipl_t.uri_len = strlen((char*)MIPL_URI);mipl_generate(config, sizeof(config), &m5310_mipl_t);while(1);return 0;
}void output_buffer(unsigned char *buffer, int length,int index, int flag)
{int i = 0;while( i < length ){printf( "%02X", buffer[i++] );}printf(",%d,%d\r\n",index,flag);
}void mipl_generate(char *buf, size_t buflen, MIPL_T *mipl)
{uint32 offset = 0;int mipl_num = 0;char mode = 0;memset(buf, 0, buflen);mode = ((mipl->boot & 0x1) << 4) | (mipl->encrypt & 0x1);memcpy(buf + offset, &mode, 1);offset++;memcpy(buf + offset, &mipl->debug, 1);offset++;memcpy(buf + offset, &mipl->port, 2);offset += 2;memcpy(buf+offset, &mipl->keep_alive, 4);offset += 4;memcpy(buf + offset, &mipl->uri_len, 2);offset += 2;memcpy(buf + offset, mipl->uri, mipl->uri_len);offset += mipl->uri_len;memcpy(buf + offset, &mipl->ep_len, 2);offset += 2;memcpy(buf + offset, mipl->ep, mipl->ep_len);offset += mipl->ep_len;*(buf + offset) = mipl->block1;offset++;*(buf + offset) = mipl->block2;offset++;*(buf + offset) = mipl->block2th;offset++;mipl_num = 0;while(offset > 1024)//每条+MIPLCONF命令最多输入1024字节配置数据{printf("AT+MIPLCONF=%d,",1024);output_buffer( (unsigned char *)(buf + (mipl_num >> 10)),1024,mipl_num + 1,0);//index从1起始mipl_num++;offset -= 1024;}printf("AT+MIPLCONF=%d,",offset);output_buffer( (unsigned char *)(buf + (mipl_num >> 10)),offset,mipl_num + 1,1);//结束
}

这种方法适用于通过MCU控制M5310模组。

将生成的注册码发送到M5310:

AT+MIPLCONF=71,10000000B80B00001900636F61703A2F2F3138332E3233302E34302E33393A353638331F003836323031383130323931353232303B343630303430323336373039313232050501,1,1

0

OK

0为<ref>

4、  订阅Object 组 配置

命令格式:AT+MIPLADDOBJ=<ref>,<objectid>,<instanceid>

objectid代表的类型可参考IPSO 资源模型,http://www.openmobilealliance.org/wp/OMNA/LwM2M/LwM2MRegistry.html。

如发送:AT+MIPLADDOBJ=0,3303,0

5、模组侧发起登录

AT+MIPLOPEN=0,15

上述指令中,30 代表登录超时时间;如果超过该时间,模组还未接收到平台的登录响应,模组则会上报登录失败的通知。

登录结果上报:
模组上报登录请求,服务器收到登录请求数据之后,会根据数据内容,返回本次登录结果;如果登录失败,或者登录超时,模组都会上报登录失败的响应。
登录成功上报打印如下:
+MIPLOPEN:0,1
登录失败上报打印如下:
+MIPLOPEN:0,0
需要注意的是, 如果在注册码中的 debug参数设置为非0,则在登录过程中,除了上报登录信息之外,还会应显示对应debug 等级的数据内容。

模组登录成功后,平台会下发Observer 消息和 Discover 消息;模组收到这两条消息之后,会自动处理,无需用户另行处理:

同时OneNET会显示设备在线:

6、向OneNET平台发送数据

命令格式:AT+MIPLNOTIFY=<ref>,<objectid>,<instanceid>,<resourceid>,<valuetype>,<value>,<flag>[,<ackid>]

这里使用不带ackid方法上报:

AT+MIPLNOTIFY=0,3303,0,5700,4,"24.5"

OK

查看上报的数据:

参数说明:

<resourceid>:资源ID,请参考IPSO 资源模型,http://www.openmobilealliance.org/wp/OMNA/LwM2M/LwM2MRegistry.html。

<valuetype>:

1 2 3 4 5 6
string opaque integer float bool hex_str

五、命令总结

1、上电检查流程
(1) AT //判断模组是否上电开机成功
(2) AT+CSQ //信号质量检查
(3) AT+CEREG? //判断 PS 域附着状态,标识位返回 1 或 5 表示附着正常
(4) AT+CGATT? //检查模组 PS 附着状态

2、模组侧设备创建及资源订阅,登录流程
(1) AT+MIPLCONF=72,1003000………. 3033393639050501,1,1//设置模组侧设备注册码
(2) AT+MIPLADDOBJ=0,3200,0  //订阅 Object 3200 资源设置
(3) AT+MIPLNOTIFY=0,3200,0,5505,6," E309C82FE6 ",1 //订阅 Resource 5500 资源设置
(4) AT+MIPLOPEN=0,30 //设备登录到 OneNET 平台

3、OneNET  数据收发流程
(1) AT+MIPLNOTIFY=0,3200,0,5505,6," E309C82FE6 ",1 //数据上传
(2) AT+MIPLREAD=0,60204,3200,0,5505," E309C82FE6 ",1  //Read 操作回复流程
(3) AT+MIPLWRITE=0,62069,1 //Write 操作回复流程
(4) AT+MIPLEXECUTE=0,46081,1 //Execute 操作回复流程

4、模组侧设备注销流程
(1) AT+MIPLCLOSE=0  //登录注销流程
(2) AT+MIPLDELOBJ=0,3200,0 //模组侧订阅资源列表释放
(3) AT+MIPLDEL=0 //模组侧通信实例删除

六、IPSO 资源模型示例

更多请参考:OMA LightweightM2M (LwM2M) Object and Resource Registry

NBIOT模组M5310接入OneNET平台相关推荐

  1. NBIOT模组M5310接入中国移动物联网开放平台示例文档

    版权声明:本文为转载,并非原创 M5310模组采用的是海思Hi2110芯片,在全球eSIM NB-IoT模组中的尺寸最小,仅19×18.4×2.7mm,节省布板面积达30%以上,具有工业级.低功耗.深 ...

  2. 公有云平台专题《电信云平台,NB-IoT模组对接电信CTWing平台》

    目录 1.电信CTWing平台介绍 2.电信CTWing平台注册 3.CTWing平台创建产品 4.NB模组对接CTWing平台 5.NB模组上报数据.接收下行数据 6.NB模组对接电信CTWing平 ...

  3. m5310模组数据上传至onenet_NBIOT模组M5310接入中国移动物联网开放平台示例文档

    <time>: -t 设备存活时间,标示终端和 OneNET 平台之间连接的存活周 期,设置范围为 10s~86400s: : -u 设置 PUT 和 POST 指令分片长度,范围 0~6 ...

  4. stm32代码_ME3616 NB-IoT模组对接OneNET教程以及STM32代码

    前言 本文讲解所有采用MT2625设计的NB-IoT模组ME3616对接OneNET,适用所有所有采用MT2625设计的NB-IoT模组. MT2625内置OneNET SDK,采用CoAP+LwM2 ...

  5. ME3616 NBIOT模组对接OneNET教程以及STM32代码

    前言 本文讲解所有采用MT2625设计的NBIOT模组ME3616对接OneNET,适用所有所有采用MT2625设计的NBIOT模组.MT2625内置OneNET SDK,采用CoAP+LwM2M协议 ...

  6. 公有云平台专题《中移云平台,NB-IoT模组对接中移OneNET平台》

    目录 1.中移OneNET平台介绍 2.中移OneNET平台注册 3.OneNET平台创建产品 4.NB模组对接OneNET平台 5.NB模组上报数据.接收下行数据 1.中移OneNET平台介绍 On ...

  7. NBIOT 设备接入ONENET平台

    NBIOT 设备接入ONENET平台 一.ONENET平台的注册与配置 1.1.注册与创建产品 1.2.添加设备: 1.2.1 获取 IMEI 及 IMSI 二.连接NB-IOT 2.1 ONETET ...

  8. NBIOT开发(一):NBIOT模组以及芯片厂家都有哪些?

    本文来源:全球物联网观察:由"物联网时空"微信公众号(IoT-LPWAN)整理发布,转载请注明来源. 2014年,华为先提出了窄带技术NB M2M,而后与高通.爱立信等公司的方案融 ...

  9. 以一物驱万物,第三代5G NB-IoT模组OpenCPU开发新模式

    伴随着物联网行业的发展,越来越多的物联网设备都逐渐趋于低成本.小型化.高集成的模式,传统的MCU+物联网模组的方式已经很难满足需求.利尔达NB860系列模组推出OpenCPU方案,满足客户低代码开发需 ...

最新文章

  1. linux内核态串口读写程序,linux 0.11 内核学习 -- rs_io.s,串口汇编代码
  2. Arcgis桌面开发,Python引用GDAL库的方法
  3. linux主流文件系统及日志和非日志文件系统的区别
  4. MFC内嵌web页面
  5. halcon file_exists 检查文件是否存在
  6. Flutter中使用友盟统计
  7. linux mysql 安装测试_linux下安装MySQL - 1583651986的个人空间 - 51Testing软件测试网 51Testing软件测试网-软件测试人的精神家园...
  8. Android系列之开发环境搭建
  9. mnist数据集可视化
  10. 低智商社会,娱乐至死,2书推荐,世界12大理论,
  11. 使用pytorch实现crnn
  12. 2021高考成绩答题卡查询,【助力高考】2021届高考答题卡原来长这样,赶快看看...
  13. SECS/GEM介绍
  14. Spring学习笔记
  15. Python | 封包
  16. 在线旅游网站盈利模式
  17. matlibplot之条形图
  18. 甘肃环讯信息科技有限公司加入openGauss社区
  19. Squirrel脚本语言..游戏开发.
  20. 故障分析 | 报错 ERROR 5270 -HY000-- object not in RECYCLE BIN 引发的几个思考

热门文章

  1. AndroidIos抓https包
  2. 【备忘】Java从零到精通学习路线培训教程
  3. TCP协议用socket连接时客户端请求服务器read()一直阻塞解决
  4. Ext.get()和Ext.getCmp()
  5. JAVA 实现《五子棋单机版》游戏
  6. openlayers标注面要素
  7. 爬取链家二手挂单房屋 - 匹配百度地图API坐标 - python出地图【2】(end) echarts调用百度地图画自己喜欢的底图,最终python出地图
  8. 抛弃传统IPO,直接上市,你准备好了吗?
  9. AI中英文翻译软件,一键批量多语种翻译
  10. 解决小程序自定义导航栏和右边胶囊高度一致