8258 zigbee sdk,代码流程
1.无人休眠 2分钟
PM_SLEEP_MODE_DEEP_WITH_RETENTION 模式
drv_pm_sleep(sleepMode, wakeupSrc, sleepTime);
2.检测到有人,gpio唤醒,
if(zb_isDeviceJoinedNwk()) //判断是否为true
true然后发包
zcl_iasZone_statusChangeNotificationCmd(SAMPLE_SENSOR_ENDPOINT, &dstEpInfo, 0, &statusChangeNotification);
3、网关只能偶尔收到发的包,大概率丢包。不休眠,则不会丢包
问题:1、是否PM_SLEEP_MODE_DEEP_WITH_RETENTION休眠起来,是要调用什么rejoin的接口,让endpoint设备入网后再发包。
2、zb_isDeviceJoinedNwk 这个为true的时候,也发不了包,是否状态及时刷新。
你好,
唤醒后做个定时器去发包呢,抓包看下怎么交互的,正常情况休眠设备唤醒后不需要rejoin就能发包的。
唤醒后,为了保持状态及时反馈,是马上给网关去发zcl的包,没用定时器去发包。抓包的情况没有看到zcl的报文出来哦。能给参考代码:休眠设备检测到io唤醒后,马上去发包的流程? 顺便说一下,有时候是休眠时间是120s。
情景:1如果是网关距离很远,并且只有一个endpoint。endpoint休眠起来后,发包失败,要怎么检测是否发包失败,然后endpoint发rejoin,重连网关后,再补发包。这个参考代码可以给下吗?保证休眠设备起来后,距离网关远或者网关掉电过的场景下的发包稳定性。
请使用休眠终端的工程实现你的需求,该工程会自动管理休眠,在入网成功后休眠唤醒也不会执行rejoin流程。