MN316 OpenCPU丨连接OneNET介绍

OneNET NB-IoT物联网套件(现接入协议LwM2M数据协议IPSO)提供了一种方便用户使用NB模组将设备连接到OneNET平台实现丰富NB-IoT应用的能力。平台侧可实现与中国移动NB-IoT网络无缝对接,满足高并发大量设备的快速入云需求,同时实现对设备进行资源订阅、存储、转发和命令下发等功能。

本文通过对MN316 SDK中的OneNET demo代码进行解析,介绍如何使用MN316连接至OneNET NB-IoT物联网套件。

一、OneNET使用流程解析

以下流程图为使用MN316 OpenCPU SDK OneNET功能时的常见流程介绍。

图1 OneNET连接使用流程

1介绍了使用OneNET连接的使用流程,可结合MN316_OpenCPU(R14)_Standard_X.X.X.XXXXXX_release\examples\onenet cm_demo_onenet.c中的demo示例程序加深理解。

OneNET功能包含的全部函数接口详细定义可在include\cmiot\cm_onenet.h中查看

二、OneNET连接demo代码解析

SDK中有一个OneNET连接常规使用方法的demo程序,可在cm_demo_onenet.c文件中查看,下面我们详细看一下。

2.1 初始化OneNET任务

2 初始化OneNET任务

第一步初始化OneNET任务(cm_OneNET_init):需在使用OneNET相关函数之前调用。

2.2 设置回调函数

3 设置回调函数

第二步使用cm_cot_cb_t结构体定义回调函数,如图3所示

cm_cot_cb_t设置的回调参数有

①cot_read_cb_t:读回调,平台下发Read请求时触发

②cot_write_cb_t: 写回调,平台下发Write请求时触发

③cot_execute_cb_t:执行回调,平台下发Exec请求时触发

④cot_observe_cb_t:订阅回调,平台下发订阅请求时触发

⑤cot_params_cb_t:策略参数回调,平台下发策略时触发

⑥cot_event_cb_t:事件状态通知

⑦cot_notify_cb_t:Notify通知

⑧cot_discover_cb_t:平台下发Discover请求时触发

2.3 创建cot设备

4 创建设备

第三步使用cm_onenet_create()函数设置OneNET平台接入参数,创建设备,如图4所示此函数有3个参数如下

①第一个参数IP:需注册的OneNET平台服务器IP或域名

②第二个参数is_bs:是否bootstrap服务器

③第三个参数是cot_cb:需注册的回调函数

2.4 添加object

5 添加object

步使用cm_onenet_add_obj()函数添加object,如图5所示,此函数有5个参数如下

①第一个参数objid是object id(本次需添加的object)

②第二个参数 inscount是设置该object对象的instance个数

③第三个参数为bitmap是实例位图,字符串格式(每一个字符表示为一个实例,其 中1表示可用,0表示不可用)

④第四个参数为attcount是属性个数,当前版本暂不使用,置0即可

⑤第五个参数为actcount是操作个数,当前版本暂不使用,置0即可

2.5 添加object的资源列表

6 mqtt连接

步使用cm_onenet_discover()函数添加资源列表(resource)如图6所此函数有3个参数如下

①第一个参数objid是需discover操作的对象ID

②第二个参数 len是data的长度

③第三个参数为data是object的resource要求(多个resource之间使用分号";"隔开,例如"1101;1102;1103")

2.6 订阅主题向OneNET平台发起注册请求

7向OneNET平台发起注册请求

步使用cm_onenet_open()函数向平台发起注册请求,如图7所示此函数有2个参数如下

①第一个参数timeout是本次注册的超时时长,单位为s,超时后将关闭当前操作, 并上报(不可为0)

②第二个参数lifetime是本次注册成功后生命周期,单位为s。(生命周期超时后 如未及时update将注销当前连接,并上报消息给模组)

2.7 判断注册请求是否成功

判断注册回调函数的事件,可判断CM_CIS_EVENT_BOOTSTRAP_SUCCESS表示Bootstrap 流程成功、CM_CIS_EVENT_REG_SUCCESS注册 OneNET 平台成功等上报类型,如图8所示

8 状态事件上报类型

可参考demo进行判断,如图9所示

9 状态事件上报判断

2.8 发送数据至OneNET

当第八步使用cm_onenet_notify()函数发送数据,如图10所示,此函数有8个参数

10 发送数据至OneNET

①objid:object id(本次需上报数据的对象ID)

②insid:instance id(本次需上报数据的实例ID)

③resid:resource id(本次需上报数据的资源ID)

④type:发送的数据类型:1-string-字符串、2-opaque-不透明、3- integer-整形、4-float-浮点型、5-bool-布尔型,其中不透明类型为十六进制字符串直接上报

⑤value:发送的数据

⑥flag:消息标识(0:该Notify消息暂不上报,1:上报未上报的Notify消息(同一instance下))

⑦ack_id:指定该消息是否以响应形式上报(-1:非响应模式, >=0:响应模式;如果为响应模式,该条Notify消息成功时将被cot_notify_cb_t回调,该ack_id应该为不同的值)

⑧mode:是否使用RAI功能,当前暂不提供该功能

2.9 接收OneNET平台下发数据

当第九步接收平台下发数据,将在读、写、执行回调函数中进行打印输出如图11所示

11接收下行数据

2.10 对读、写和执行操作进行回复

(1)通过cm_onenet_read()函数进行读回复,如图12所示,该函数有7个参数

①mid:收到的+MIPLREAD的消息携带的mid

objid:object id,本次需回复数据的对象ID

③insid:instance id,本次需回复数据的实例ID

④resid:resource id,本次需回复数据的资源ID

⑤type:回复的数据类型:1-string-字符串、2-opaque-不透明、3- integer-整形、4-float-浮点型、5-bool-布尔型,其中不透明类型为十六进制字符串直接上报

⑥value:回复的数据

⑦flag:消息标识 0:该read回复暂不回复 1:回复未回复的read消息(同一instance下)

12 读回复

(2)通过cm_onenet_result()函数进行写和执行回复,如图13所示,该函数有3个参数

①mid:收到的操作消息携带的mid

result:操作结果返回

③is_observe:是否是MIPLOBSERVE操作

13写和执行回复

2.11 断开连接

(1)通过cm_onenet_close()函数断开连接;cm_onenet_del_obj()函数释放obj订阅的资源,如图14所示

14断开连接

cm_onenet_close()函数有1个参数,如图15所示

①Level:2(注销与OneNET连接,清除resource数据);4(关闭与OneNET连接,清除所有resource、instance、object数据)

15 level值

三、OneNET连接使用流程示例

下面我们使用MN316  OpenCPU SDK提供的 OneNET接口进行平台连接和数据收发,整体程序流程与第二章MQTT demo代码几乎一致,为避免重复,我们只解析与第二章存在差异的部分,以下为完整步骤及程序流程解析。

3.1 平台侧创建LWM2M产品及设备

首先,登录OneNET平台https://open.iot.10086.cn/,进入首页右上角“开发者中心”,点击左上角“全部产品服务”-“基础服务”-“物联网开放平台”,进入页面后点击产品开发,然后开始创建产品,添加设备,完成以上步骤后即可继续在SDK继续以下操作

3.2 修改服务器地址为LWM2M服务器接入地址

“OneNET平台-OneNET LWM2M接入”的地址为183.230.40.39,若要接入其他省级平台需更换为对应接入地址;端口为5683。

3.3 登录平台并上传数据

 输入CM:OneNET:CHECKIN登录OneNET平台,并上行数据

16 登录OneNET平台,并上行数据

3.4 接收下行数据

OneNET平台下发数据,模组回调函数打印相关信息

17 接收下行消息

3.5 注销平台

输入CM:OneNET:CHECKOUT,注销OneNET平台

18 注销ONENET平台

四、常见问题

设备登录OneNET平台需要先在平台创建产品和创建设备,可参考阅读以下链接进行相关操作:

https://open.iot.10086.cn/doc/v5/develop/detail/115 OneNET - 中国移动物联网开放平台

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值