3.关于平台显示收到设备的Notify,但是显示设备不存在?
5.设备在Lifetime周期内未上报任何消息,为何平台还显示设备在线?
6.Lifetime的最大值可以设置为多少,一般设置多长较为合理?
9.上传的 Integer/ Float/字符串数据显示为 [10, 100, 123] 这种格式?
10. Read到Resource和Read到Instance,数据上报的格式分别是什么?
11.平台向设备下发命令,在设备没有Notify之前,设备接收到的是Acsii码,但在设备上报后能正确接收到数据。
12.为什么在下发数据的时候经常出现超时问题, 但是有数据交互的时候就不会出现超时问题?
数据上报、更新(Update)和通知(Notify)相关问题 |
答:当接入机接收到设备的Update报文时,更新设备的Lifetime,然后根据Update中的Linkobject包含的对象实例内容,与上一次的资源进行比较,清除原资源中含有而Update中不包含的旧对象实例并取消对应的订阅,添加Update中新的对象实例并对新对象实例下发设备注册时的操作(Observer、Discover)。
答:不可以。由于平台保留了设备注册的缓存信息,可能会出现下面的情况:在线设备被删除后,仍能收到向平台发送数据,且能收到正确响应。
如果设备的Lifetime很长的话,在Lifetime期间内设备是可以上报数据的,当发送下次更新信息后,平台会及时剔除设备。
答:可能是设备未及时Update,平台已经剔除设备。
答:平台收到离线设备上报数据后,会下发Rst,阻止设备再次上行消息。
答:根据平台判断设备离线的机制,设备在线状态显示可能会有一定延迟,大概在一分钟。
答:32位模组Lifetime的最大值是2^32-1(S)。基于设备的用途来设置生命周期。
答:设备的在线状态只跟Lifetime 是否过期有关。
Lifetime 设备连接(Register) 的一个参数,单位为秒,不指定则默认为 86400,Lifetime 到期后,平台就会把设备踢下线,此时设备无法上报数据,只能重新连接(Register)。设备可以在Lifetime未过期时通过发送 Register Update 报文延长 Lifetime。
答:CoAP 协议通过 Message id 和 Token 来过滤重复消息,对于上报(Notify)的包,如果订阅的路径相同,则Token会相同,如果Message id 不变,会被当作重复消息并被过滤。重复消息过滤的时间窗口是 247 秒,即第一条消息被处理后,247秒内的重复消息都会被过滤。
答:没有使用 IPSO 定义的标准资源模型。对于非 IPSO 模型的 Object ID 和 Resource ID, 平台无法判断资源的数据类型,则会按照二进制处理。
读|写|执行、API、缓存命令相关问题 |
答:Read到Resource采用Plain/Text格式上报;Read到Instance采用Tlv格式上报。
答:这是由于模组不知道资源类型导致的,当设备上报Notify了后,模组声明了资源类型,接收到相应平台对相应资源的写命令后,能正确翻译该资源的类型,就可以正确接收到数据。在不知道资源类型的时候,模组会将该资源类型当成Opaque类型,所以看到的是Ascii码。
答:如果长时间没有上行数据,核心网会踢掉之前缓存的连接信息,路由找不到设备,就会导致超时。
答:收到任何Con消息后,接入机都会回复Ack,正常的消息走正常流程,异常的Con消息,接入机会丢弃报文,但是也会下发Ack或者Rst。