本文介绍使用3.x和2.3.0版本C Link SDK的高级能力时,可能遇到的问题和解决方法。
背景信息
如果您尚未接入物联网平台,推荐使用最新版本的SDK。更多信息,请参见概述。
子设备接入时,导致出现“_iotx_linkkit_upstream_sync_callback_list_remove(158): Message Found: 3, Delete It”的原因是什么?
该错误的原因,是由于回调函数中存在阻塞操作,使SDK内部上线子设备的API无法获取指定数据。您可以检查回调函数的设置,避免出现阻塞。
网关离线后,子设备自动离线;为什么网关上线,子设备不能自动上线?
子设备通过网关代理接入物联网平台,当网关离线,子设备会自动离线。
网关和子设备重连机制不同,重新上线方式不同。
- 网关设备属于直连设备,与物联网平台建立长连接。SDK默认的重连机制,使设备在指定情况下,断连后自动重新连接物联网平台。
- 通过调用登录和登出接口,子设备实现上下线,不直接与物联网平台建立连接。您需要自行实现子设备的重连,例如:
- 在MQTT长连接断开回调中,感知网关设备离线。
- 网关设备离线后,子设备离线。
- 当网关设备重连成功后,再通过MQTT长连接回调,调用登录接口,异步处理子设备重新上线。
子设备数量大时,为什么上线过程长?
3.x和2.3.0版本的SDK采用单个上线子设备的方法,所以当子设备数量大时,注册或上线子设备会比较慢。
最新版本的SDK支持批量上线子设备,建议您使用该版本的SDK,更多信息,请参见网关与子设备。
子设备上线时,出现“The resource count exceeds limit, cur 255, max 255”,该如何解决?
该错误说明子设备的Topic注册达到上限,您可以修改如下两处代码:
- ./src/protocol/coap/local/CoAPServer.c中
param.res_maxcount = 255
的值。 - ./src/protocol/coap/local/CoAPExport.h中
CoAPInitParam
结构体的res_maxcount
类型,修改为unsigned int
。