查看: 9519|回复: 20

OneNET平台NB-IoT能力概览及高频问题集

  [复制链接]

1

主题

89

帖子

278

积分

中级会员

Rank: 3Rank: 3

积分
278
发表于 2019-1-14 11:10:28 | 显示全部楼层 |阅读模式
本帖最后由 李春 于 2019-1-28 09:40 编辑

答咖时间-李春.jpg

OneNET平台NB-IoT能力概览及高频问题集

  本贴对OneNET平台NB-IoT能力进行了一遍梳理,罗列了平台所具备的功能点,同时对一些较易混淆的概念进行了阐述,方便使用平台其他协议的开发者能更好的理解使用。收集了一些目前平台开发者遇到频率较高的问题,并进行了分类,希望开发者能在这里找到答案,也希望这个问题集能不断更新下去,能够越来越全面。
一、OneNET平台NB-IoT能力概览
1. NB-IoT简介
    NB-IoT:Narrow Band Internet of Things,即基于蜂窝的窄带物联网
    NB-IOT采用的应用层协议是LWM2M协议(协议下载地址:http://openmobilealliance.org/release/LightweightM2M/),传输层采用的基于UDP的CoAP协议(协议下载地址:https://tools.ietf.org/html/rfc7252)。
1) LWm2m协议栈如图
      答咖时间-协议栈.png   
2) NB-IoT的特点及优势:
   广覆盖:相比GPRS提升20db
   大连接:每个小区支持5w连接
   低功耗:5Wh电池寿命延长到10年
   低成本:模组、芯片成本较低
3) NB-IoT常见应用场景:
  智慧城市管理:井盖状态、在线监管
  智慧停车:车位管理、深度覆盖
  智慧路灯:远程控制、设备检测
  智能烟感:信息上报
  深林安防:广域覆盖
  智能硬件:定位管理
  能源抄表:远程抄表、告警上报
  资产追踪:苗木监管、车辆追踪

2. NB-IoT数据模型和平台其他协议数据模型对比
之前使用平台其他协议的开发者接触NB-IoT时可能会对他们的数据模型产生疑惑,那么NB-IoT如何对应其他协议的数据流和数据点呢,下面做了个分析对比图
                                                   答咖时间-数据模型.png
3.NB-IoT能力
    OneNET提供了“终端-平台-应用”的整体解决方案,帮助企业实现快速NB-IoT能力升级。
   终端侧:提供基础通信套件,降低设备接入门槛,助力快速接入;
   平台侧:增强数据服务能力;
   应用侧:提供丰富API接口,全面适配各类行业应用;
   NB-IoT能力在全链路中的位置
       答咖时间-全链路.png
   通过上图,能够清楚的了解到NB-IoT在设备终端、基站、核心网以及OneNET平台中所处的位置。
   能力列表:
    1) 设备对象资源读写
    平台实现对NB设备对象资源的读取、写入操作,满足应用和设备的基本操作功能;
    2) 自定义超时时间设置
    实现应用平台对设备进行读、写、执行等操作,根据网络实际情况进行该指令自定义超时时间设置。
    3) 即时命令下发
    当设备在线时,实现对设备的即时命令下发,保证应用平台的命令可实时到达设备侧。
    4) 缓存命令下发
    当设备离线时,实现对设备的缓存命令下发,可以设置设备对缓存命令下发的触发条件组合(注册、更新、数据上报),当平台收到相应的触发条件,会根据生效时间,按顺序向设备下发缓存命令。
    5) 模组固件\软件在线升级(FOTA\SOTA)  
    通过OneNET平台实现对终端设备固件或软件进行在线升级,支持对设备的差分升级,同时提供版本管理和群组管理功能。
    6) 设备消息规则触发
    实现针对NB设备在满足响应条件下的规则触发和联动,满足设备状态及数据的及时告知。
    7) 设备全量及群组消息推送
    实现平台向应用端的全量设备数据推送,同时也支持向应用端开展部分设备的数据推送。
    8) 设备侧SDK预集成
    通过在NB设备模组侧移植SDK,可实现设备快速无缝的接入OneNET平台。
    9) 设备侧DTLS加密(PSK)
    通过在NB设备的模组侧移植SDK,可实现设备和平台间设备的PSK和数字证书的传输加密,保证设备数据安全。(近期即将上线)


二、OneNET平台NB-IoT高频问题集
1. 协议相关
1) 问:NB-IoT的优势是什么?
   答:支持单小区50K用户连接、低功耗优势明显。

2) 问:NB-IoT有几种工作模式?
   答:有3种:Active、Idle和PSM。

3) 问:NB-IoT是否可以切换小区(移动性)?
   答:支持。

4) 问:NB-IoT是否支持短信?
   答:特性上是支持的,但目前没有开通。

5) 问:平台和模组之间的通信都存在丢包的可能?
   答:由于NB网络低吞吐率的特性以及传输层基于UDP,上行和下行均可能出现数据包不能到达的情况,从而导致丢包,出现超时现象。

6) 问:关于MessageId和Token的用途?
   答:首先明确概念,MessageId是用来表示是否为同一个消息,也可用于CON请求报文和ACK响应报文的匹配。Token表示一次会话记录,用于关联请求和响应。二者的区别在于,由于NON报文请求和响应可能不是一对的,这时用MessageId不能匹配,需要使用Token。

2. Api使用
1) 问:关于api超时时间(time_out)以及重试次数?
   答:默认设置为25s,可以通过api设置,设置范围为5-40s。
以默认超时时间25s为例,第一次下发超时(5~7.5s内没有收到回复),平台就会进行重试(这里的重试其实是coap协议的重试,是指在time_out周期内平台内部的重试),下次超时时间为第一次的2倍,因此第二次的重试时间为10s(假设第一次重试为5s),第三次为20s。因此默认25s内,平台最多重试2次,一共下发三次。
应用到设备的超时时间其实就是平台到设备的超时时间,因为应用到平台的正常通信时间基本可忽略不计。
用流程图表述一下上述过程:
答咖时间-超时时间.png
2) 问:write中参数mode=1或者2的区别?
   答: mode为1的话相当于是覆盖操作,会把之前的资源和值全部删掉,只保留当前的写的资源和值。2的话相当于更新,重置或者新增写的资源,会保留之前的资源和值。

3) 问:设备上线时,调用资源列表接口,返回为空?
   答:平台下发discover时,会清空缓存的资源列表,等待设备回复后,可继续正常调用。

4) 问:平台下发命令内容的最大长多是多少?
    答:目前限制在2Kb。

3. 发现、订阅
1) 问:discover资源,返回not_found?
   答:设备不支持discover,或者设备不存在该资源。

2) 问:用户是否可以修改资源属性名字?
   答:目前平台暂时不支持,等后续和自定义资源模版功能一起开发上线。

3) 问:关于平台自动订阅和手动订阅的使用?
   答:自动订阅,当设备上线后,平台会主动向设备下发订阅命令。
    手动订阅,设备上线后,需要手动下发订阅,且该次命令的有效期为一次上线期间,下次上线需要再次订阅。

4) 问:在那些情况下平台会删除订阅?
   答:注册和离线时会删除,如果 update 报文中删除了资源,平台也会移除订阅,删除到instance。
如果用户通过平台订阅到了某个resource下面,设备注册和离线时会单独删除到对应的resource下面。

4. 数据上报
1) 问:在平台删除设备后,设备仍然可以向平台发送数据?
   答:不可以。由于平台保留了设备注册的缓存信息,可能会出现在线设备被删除后,仍能收到向平台发送数据,且能收到正确响应,如果设备的lifetime很长的话,在lifetime期间内设备是可以上报数据的,当发送下次更新信息后,平台会及时剔除设备。

2) 问:关于平台显示收到设备的notify,但是显示设备不存在?
   答:可能是设备未及时update,平台已经剔除设备。

3) 问:设备离线后还能上报数据么?
   答:平台收到离线设备上报数据后,会下发rst,阻止设备再次上行消息。

5. 资源对象读、写、执行
1) 问:read到resource和read到instance,数据上报的格式?
   答:到resource是用plain/text上报,到instance是tlv格式。

2) 问:设备下发命令,在设备没有notify之前,设备收到的是acsII码,上报后能正确收到数据。
   答:这是由于模组不知道资源类型导致的,当设备上报notify了后,模组声明了资源类型,收到相应平台对相应资源的写命令后,能正确翻译改资源的类型,就可以正确收到数据。在不知道资源类型的时候,就会将该资源类型当成opaque类型,所以看到的是ascII码。

3) 问:在下发是数据的时候经常出现超时问题, 有数据交互的时候不会出现?
   答:如果长时间没有上行数据,核心网会踢掉之前缓存的连接信息,路由是找不到设备的,所以会导致超时。

6. 缓存命令
1) 问:OneNet缓存下行指令是否有数量限制,最多缓存多少条?
   答:目前是限制10条。

2) 问:OneNet是否提供API,通过IMEI清空某台设备在OneNet上所有堆积的缓存指令?
   答:目前只能通过uuid进行删除。

3) 问:缓存命令如何触发?
   答:缓存命令的触发条件是有上行消息到达时触发,比如注册、更新、notify,现在缓存命令也可以设置触发的上行命令类型。

7. FOTA
1) 问:推送固件包的超时时间是多少?
   答:总的包的超时时间为20分钟,单包为2分钟左右。

2) 问:设备在fota中,为何会多次收到平台下发discover?
   答:这是一个共性问题,不止出现在fota中,可能是设备在update的时候更新了资源类别,平台会重新下发discover。

3) 问:取消任务不成功?
   答:取消的时候,平台会下发擦除指令,但平台下发指令都会在收到上行数据的时候才会下发,如果心跳设得太长,那么可能需要等一定时间。

4)问:模组需要具备什么条件才能使用平台FOTA能力?
    答:首先,模组本身具备固件升级能力。其次,推荐使用我们提供的SDK。

8. SOTA
1) 问:平台FOTA和SOTA的区别?
   答:FOTA是用于对模组固件进行远程升级,而SOTA是用于对设备MCU中的软件进行远程升级。

9. 数据推送
1) 问:平台是否会推送所有的notify到第三方应用?
   答:是的,nbiot没有数据流模版,会全部推送。

2) 问:当数据上报的obj下有多个resource时,平台是一次性推送到第三方应用平台么?
   答:三个资源,相当于是三个数据流了。数据推送还是会按条推送的,相当于推送三个数据点过来。当然,也可以设置单次推送的数量,也许可以包含这三个值。

3) 问:数据推送失败超过2000次就停止推送是什么意思?
   答:这里的2000次不只是重发,是指onenet推送失败累积达到2000次(包括重发的)。

4)问:若推送地址不可达,OneNET是否会缓存数据?
   答:若推送失败次数没有超过2000次,平台会对未推送成功的数据进行重试,这相当于缓存。若超过2000次,OneNET会停止推送,并会丢弃停止推送后到恢复推送期间的数据点(这里的丢弃是指不向应用平台推送,数据还是会存到平台上的,可以通过api获取)。当推送地址可达后,OneNET会将设备最新的数据点推送出去。

10. 使用疑惑
1) 问:设备在lifetime周期内未上报任何消息,为何平台还显示设备在线?
   答:根据平台判断设备离线的机制,设备在线状态显示可能会有一定延迟,大概在一分钟左右
2) 问:lifetime的最大值可以设置为多少,一般设置多长较为合理?
   答:32位模组lifetime的最大值应该是2^32-1(s)。生命周期设置多长,要根据设备的用途来吧。如果不会用到在线命令的话,可以设置长点。如果要用到在线命令,notify频率又很低的话,建议5min以内。

3) 问:设备向平台发送Con消息,一定会收到回复么?
   答:收到任何Con消息,接入机都会回复ack,正常的消息走正常流程,异常的Con消息,接入机会丢弃报文,但是也会下发ack或者rst。

4) 问:轻应用地图支持NB-IoT定位吗?如何使用?
   答:支持。设备 notify 时,可以使用以下两个obj的资源进行经纬度的上报:
   1. object id 为6,resource id: 0 (纬度), 1(经度)
   2. object id 为 3336,resource id : 5513(纬度),5514(经度)
   在地图中选择对应设备中名为”location”的数据流即可。

5) 问:使用LWM2M协议可以增加数据流并给其命名么?
   答:lwm2m协议的数据流是根据ipso规范来的 objId/instanceId/resourceId
   目前平台支持用户自定义创建资源,这就相当于是可以增加数据流了,在创建的时候可以命名的。

6) 问:自定义数据的使用?
   答:平台数据模型遵循IPSO规范,开发者可以自定义创建资源。自定义资源的数据类型会被转为opaque类型,目前页面能够展示资源值,但不可以在页面上进行自定义资源的读、写、执行操作,需要调用相应的api接口完成。

结语:
    本贴首先简单地剖析介绍了NB-IoT的原理以及其使用场景,对OneNET平台目前具有的NB-IoT能力做了简要的概览,并梳理了其数据模型,和其他协议进行了对比,希望开发者能更快更好地使用OneNET平台NB-IoT能力。同时,对目前贴主遇到的一些高频次问题做了一个归纳汇总,希望能定期更新下去,若有不正确的地方,请各位海量,且能批评指正。
                                                                                                 马赛克版本.png

活动结束后,会抽取三名优质提问者分别赠送《码出高效:Java开发手册》一本
回复

举报

1

主题

89

帖子

278

积分

中级会员

Rank: 3Rank: 3

积分
278
 楼主| 发表于 2019-1-16 09:15:24 | 显示全部楼层
zeyang.li 发表于 2019-1-15 17:02
请问下,
1,数据推送时,推送URL无法访问时,此时有设备上报数据时,onenet是会缓存一段时间,还是直接丢 ...

1.从该产品下第1次推送失败开始到第2000失败,这期间会缓存数据。推送失败2000次后,平台会停止推送。但是,数据还是会存在平台上的,可以通过api获取。
2.可以将该设备从当前产品下删除,重新在其他产品下创建

0

主题

1

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2019-1-14 16:40:26 来自手机 | 显示全部楼层
厉害厉害。。。放张帅点的照片嘛。

2

主题

26

帖子

97

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
97
发表于 2019-1-14 11:43:57 | 显示全部楼层
海量干货,厉害了~ 顶起顶起 ~

0

主题

1

帖子

3

积分

新手上路

Rank: 1

积分
3
发表于 2019-1-15 17:02:57 | 显示全部楼层
请问下,
1,数据推送时,推送URL无法访问时,此时有设备上报数据时,onenet是会缓存一段时间,还是直接丢弃?
2,设备如何在多个帐号下切换?例如烟感设备A先添加在厂家帐号下,后面可以先删除,添加到软件集成商帐号下么?
多谢

1

主题

5

帖子

17

积分

新手上路

Rank: 1

积分
17
发表于 2019-1-15 10:47:07 | 显示全部楼层
NB设备只能通过创建应用页面的方式查看数据吗?
可以出一些创建应用的教程吗?

5

主题

102

帖子

263

积分

中级会员

Rank: 3Rank: 3

积分
263
发表于 2019-1-14 11:31:16 | 显示全部楼层
Wow 帅气的spring帅啊~ 顶起顶起

1

主题

89

帖子

278

积分

中级会员

Rank: 3Rank: 3

积分
278
 楼主| 发表于 2019-1-15 11:04:01 | 显示全部楼层
159******** 发表于 2019-1-15 10:47
NB设备只能通过创建应用页面的方式查看数据吗?
可以出一些创建应用的教程吗? ...

查看设备数据点,可以通过多种方式:1. 在onenet开发者中心中当前设备的数据流下查看
2. 通过调用api查看一个时间段内该设备的数据点
3. 搭建自己的应用平台,在onenet上配置数据推送,自己再自己的应用平台上展示

0

主题

1

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2019-1-14 16:14:01 | 显示全部楼层
本来可以靠脸吃饭,偏偏要靠才华~

1

主题

89

帖子

278

积分

中级会员

Rank: 3Rank: 3

积分
278
 楼主| 发表于 2019-1-14 17:12:08 | 显示全部楼层
Jim_mac 发表于 2019-1-14 16:40
厉害厉害。。。放张帅点的照片嘛。

额  本人就很帅  照片就不放出来了哈  童鞋
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表