OneNET物联网平台 平台介绍 入门手册 设备开发指南 应用开发指南
API
API使用 API列表 API返回码说明 SDK MQTT LwM2M EDP Modbus TCP
消息队列MQ HTTP推送
服务定价 扩展服务 常见问题 发布公告

NB-IoT常见问题

修订记录

文件版本号 修订日期 修订内容 说明
V 1.1 2019.5.24 新建 李春、何龙

1 注册相关

1.1 模组相关

1. 终端无法和OneNET建立连接?

答:请先确认终端是否正常附着到NB网络中,若网络附着正常,再检查终端连接报文和鉴权码是否正常,若两者皆正常工作,可通过4001-100-866转3咨询平台技术人员。

2.SDK初始化模组失败?

答:SDK在启动的时候会首先对当前模组的工作模式进行配置,使其能够附着进NB网络中,配置的方式是通过一系列AT指令,需要注意的是模组处理每条AT指令都需要一定的时间,因此建议AT指令间可以延迟几秒,否则会造成初始化过程失败。

1.2 鉴权失败

1.设备无法连接到平台,返回 4.03?

答:4.03 Forbidden 即接入机鉴权失败,接入机侧对设备鉴权规则如下: 1) 如果设备没有设置Authcode则根据ep进行鉴权,ep不正确导致鉴权失败; 2) 如果设备设置了Authodcode则通过ep+ Authcode 进行鉴权,ep和Authcode不正确或没有Authcode参数都会导致鉴权失败; 3) 平台设置IP黑名单中的用户也会导致鉴权失败。

备注: Endpoint-Name(格式是 imei;imsi中间为分号),以上简称ep

1.3 发现(Discover)、订阅(Observer)

1.关于平台自动订阅和手动订阅的使用?(设备级)

答:自动订阅,当设备上线后,平台会主动向设备下发订阅命令。手动订阅,设备上线后,需要手动下发订阅,且该次命令的有效期为一次上线期间,下次上线需要再次订阅。 备注:设备只有在订阅后才能上报数据。

2.设备如何判断订阅是否成功?

答:平台会在全部订阅完成后,发送read 3/0操作,如果设备收到该read命令,则视为全部订阅成功。

3.关于平台自动发现和手动发现的使用?

答:发现资源可以查看到具体的资源列表。由于终端资源列表一般变化的可能性不大,出于低功耗考虑,平台对新建的产品默认取消自动发现功能,使得不必每次注册都下发Discover命令。如果用户想在平台看到实时的资源列表,可手动进行下发。

备注:开启/关闭自动发现可在产品级设置,手动下发discover则是对应Object下具体的一个Instance

4.在那些情况下平台会删除订阅?

答:注册和离线时会删除,如果 Update 报文中删除了资源,平台也会移除订阅,删除到Instance。如果用户通过平台订阅到了某个Resource下面,设备注册和离线时会单独删除到对应的Resource下面。 数据上报

2 更新(Update)、通知(Notify)

1.关于平台更新资源Update上报的理解

答:当接入机接收到设备的Update报文时,会更新设备的Lifetime,然后根据Update中的Linkobject包含的对象实例内容,与上一次的资源进行比较,清除原资源中含有而Update中不包含的旧对象实例并取消对应的订阅,添加Update中新的对象实例并对新对象实例下发设备注册时的操作(Observer、Discover)

2.在平台删除设备后,设备仍然可以向平台发送数据?

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

3.关于平台显示收到设备的Notify,但是显示设备不存在?

答:可能是设备未及时Update,平台已经剔除设备。

4.设备离线后还能上报数据么?

答:平台收到离线设备上报数据后,会下发Rst,阻止设备再次上行消息。

5.设备在Lifetime周期内未上报任何消息,为何平台还显示设备在线?

答:根据平台判断设备离线的机制,设备在线状态显示可能会有一定延迟,大概在一分

6.Lifetime的最大值可以设置为多少,一般设置多长较为合理?

答:32位模组Lifetime的最大值是2^32-1(S)。生命周期设置多长,要根据设备的用途来。如果不会用到在线命令的话,可以设置任意设置。如果要用到在线命令,Notify频率又很低的话,建议5min以内

7.设备在OneNET 门户页面上为什么是离线状态?

答:设备的在线状态只跟Lifetime 是否过期有关,Lifetime 设备连接(Register) 的一个参数,单位为秒,不指定则默认为 86400,Lifetime 到期后,平台就会把设备踢下线,此时设备无法上报数据,只能重新连接(Register)。设备可以在Lifetime未过期时通过发送 Register Update 报文延长 Lifetime。

8.连续上传数据,每5分钟才有一条数据保存到平台?

答:CoAP 协议通过 Message id 和 Token 来过滤重复消息,对于上报(Notify)的包,如果订阅的路径相同,Token则会相同,如果Message id 不变,会被当作重复消息被过滤。重复消息过滤的时间窗口是 247 秒,即第一条消息被处理后,247秒内的重复消息都会被过滤

9.上传的 Integer/ Float/字符串数据显示为 [10, 100, 123] 这种格式?

答:没有使用 IPSO 定义的标准资源模型。对于非 IPSO 模型的 Object ID 和 Resource ID, 平台无法判断资源的数据类型,则会按照二进制处理。

3 数据下行

3.1 读、写、执行

1.Read到Resource和Read到Instance,数据上报的格式?

答:到Resource是用Plain/Text上报,到Instance是Tlv格式。

2.设备下发命令,在设备没有Notify之前,设备收到的是Acsii码,上报后能正确收到数据。

答:这是由于模组不知道资源类型导致的,当设备上报Notify了后,模组声明了资源类型,收到相应平台对相应资源的写命令后,能正确翻译改资源的类型,就可以正确收到数据。在不知道资源类型的时候,就会将该资源类型当成Opaque类型,所以看到的是Ascii码。

3.在下发是数据的时候经常出现超时问题, 有数据交互的时候不会出现?

答:如果长时间没有上行数据,核心网会踢掉之前缓存的连接信息,路由是找不到设备的,所以会导致超时

4.设备向平台发送Con消息,一定会收到回复么?

答:收到任何Con消息,接入机都会回复Ack,正常的消息走正常流程,异常的Con消息,接入机会丢弃报文,但是也会下发Ack或者Rst。

3.2 下行数据Api的使用

1.关于api超时时间(time_out)以及重试次数?

答:默认设置为25s,可以通过api设置,设置范围为5-40s。 以默认超时时间25s为例,第一次下发超时(5~7.5s内没有收到回复),平台就会进行重试(这里的重试其实是coap协议的重试,是指在time_out周期内平台内部的重试),下次超时时间为第一次的2倍,因此第二次的重试时间为10s(假设第一次重试为5s),第三次为20s。因此默认25s内,平台最多重试2次,一共下发三次。 应用到设备的超时时间其实就是平台到设备的超时时间,因为应用到平台的正常通信时间基本可忽略不计。 用流程图表述一下上述过程: 下行流程

2.write中参数mode=1或者2的区别?

答:mode为1的话相当于是覆盖操作,会把之前的资源和值全部删掉,只保留当前的写的资源和值。2的话相当于更新,重置或者新增写的资源,会保留之前的资源和值。

3.设备上线时,调用资源列表接口,返回为空?

答:平台下发discover时,会清空缓存的资源列表,等待设备回复后,可继续正常调用。

4.平台下发命令内容的最大长多是多少?

答:目前限制在2Kb。

4缓存命令

1.OneNet缓存下行指令是否有数量限制,最多缓存多少条?

答:目前是限制10条。

2.OneNet是否提供API,通过IMEI清空某台设备在OneNet上所有堆积的缓存指令?

答:目前只能通过uuid进行删除。

3.缓存命令如何触发?

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

5FOTA相关

1.推送固件包的超时时间是多少?

答:总的包的超时时间为20分钟,单包为2分钟左右。

2.设备在fota中,为何会多次收到平台下发discover?

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

3.取消任务不成功?

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

4.模组需要具备什么条件才能使用平台FOTA能力?

答:首先,模组本身具备固件升级能力。其次,推荐使用我们提供的SDK。

6SOTA相关

1.平台FOTA和SOTA的区别?

答:FOTA是用于对模组固件进行远程升级,而SOTA是用于对设备MCU中的软件进行远程升级。

7数据推送

1.平台是否会推送所有的notify到第三方应用?

答:是的,nbiot没有数据流模版,会全部推送。

2.当数据上报的obj下有多个resource时,平台是一次性推送到第三方应用平台么?

答:三个资源,相当于是三个数据流了。数据推送还是会按条推送的,相当于推送三个数据点过来。当然,也可以设置单次推送的数量,也许可以包含这三个值。

3.数据推送失败超过2000次就停止推送是什么意思?

答:这里的2000次不只是重发,是指onenet推送失败累积达到2000次(包括重发的)。

4.若推送地址不可达,OneNET是否会缓存数据?

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

8其他问题

1.平台是否支持 DTLS加密传输?

答:当前平台只支持基于PSK的DTLS加密(使用 Coaps 和 5684端口连接),后续还将会支持基于公钥和 X.509 证书的DTLS加密方式。

2.自定义数据的使用?

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

3.轻应用地图支持NB-IoT定位吗?如何使用?

答:支持。设备 notify 时,可以使用以下两个obj的资源进行经纬度的上报:object id 为6,resource id: 0 (纬度), 1(经度) object id 为 3336,resource id : 5513(纬度),5514(经度) 在地图中选择对应设备中名为”location”的数据流即可。 注意:两个资源需要同时上报,放在一个instance下

个搜索结果,搜索内容 “

    0 个搜索结果,搜索内容 “