2024-12-02 09:37 AM
Hello,
I am developing a temperature measurement system which consists of a coordinator and multiple sleepy end devices. On the Coordinator Side ZbZclAttrReportConfigReq is used to set end devices reporting interval. To ensure the sleepy end-devices do not miss the command from the coordinator, i implemented the following:
Coordinator (in APP_ZIGBEE_NwkForm in case of success):
uint8_t res;
uint16_t tr_pers_time = 0x2AF8; //Dec 11000
res = ZbNwkSet(zigbee_app_info.zb, ZB_NWK_NIB_ID_TransactionPersistenceTime, &tr_pers_time, sizeof(nwk_pers_time));
Intention: keep transactions on coordinator for 11 seconds.
Sleepy End Device (every 10 seconds):
struct ZbNlmeSyncReqT syncreq;
syncreq.track = false;
uint8_t res = ZbNlmeSyncReq(zigbee_app_info.zb, &syncreq, NULL, NULL);
Intention: poll the coordinator for new data
Expected result:
Sleepy end device changes the reporting at latest 10 seconds after ZbZclAttrReportConfigReq was executed and the ZbZclAttrReportConfigReq callback is called.
Actual result:
If ZbZclAttrReportConfigReq is executed within 1-2 seconds after one of the end device ZbNlmeSyncReq the ZbZclAttrReportConfigReq callback will not be exuted and/or the message does not change the end device behavior.
What am I missing?
Thanks for the help and best regards!