I am building a ZLL system that using one lighting controller to control multiple lights by ZLL touch linking. After the finish of touch linking (network has been formed), I want to get the current status (ex. power on/off, whether still in network) of each light, could anyone tell me how to do this? And also, is there a unique identity for each light after they joined in one network? The only thing I know is a nodeId, but is there any other more specific ID.
I think you can use CLI "info" to know the node ID, power and network information etc. Regarding how to get these information by using the APIs, please refer to "void emAfCliInfoCommand(void)" in file "core-cli.c".
Each node also has a EUI64 ID which has 8bytes, it is also a unique ID for each node.
Many thanks for the reply. I have tried emAfCliInfoCommand() and been able to get the network, however, this seems could only get the local node info. What I want to get is all of the nodes info from one node (ie. a gateway). On the other hand, do you how to use address table to send messages? I have tried emberSetAddressTableRemoteEui64(index, EUI64) and emberSetAddressTableRemoteNodeId(index, nodeID), and then tried to send unicast messages to a specific node via address table according to table index. But it always gave me sending errors. I thought the address table wasn't set up properly and index is the issue. Could you please tell me how to set the table correctly if you know? Thanks again.
For discovering all the nodes in the network, it is a bit difficult to find a perfect solution. You can use the ZDO IEEE Address Request with "reportKids" set true so that the target will list their children in the response. By this way, the neighbor IDs of the router device will not be obtained. But you can use ZDO LQI Table Request (API: emberLqiTableRequest(...)) to get all neighbors and children associated with the target device. You should be noted that when you use ZDO LQI Table Request, the response data is very long and repetitive, so maybe it will take many queries to get the result back.
Regarding the failure of using address table, maybe you need to do the route discovery first. You can enable the Router Discovery in the APS option bit mask when you send out the message.