I have an XBee3 running the latest Zigbee firmware.
I have now managed to get my MicroPython code to connect to a router and define a device (in this case an on-off switch to get things going). I can get the coordinator to change the state of the switch.
However if I leave it too long (I’ve tried waiting for a minute) I can receive the packet form the coordinator telling me the switch has changed there but when I try to respond using the xbee.transmit() function I get an ENOTCONN error.
If I change the switch in the coordinator fast enough then everything is OK.
I am not using the sleep and I am in a continuous loop for the ‘receive()’ that keeps going.
It would appear that there is some sort of timeout on the Transmit side (after all I receive the packet form the coordinator).
- Is there a timeout?
- how can I set it to be what i want
- even better, can I disable it?
- If I do get that error, and I can’t stop the timeout, what is the correct way to ‘reconnect’ to the coordinator
I am not sure I understand the issue. Are you trying to receive the response from the (router) on the coordinator and it is the response that is not working or is it the router that is unable to send the response to the Coordinator?
Sorry - I should not have mentioned a router as there is only the coordinator and my end node,
When the end node (the XBee3) starts up, it successfully goes through the interview and connection process with the coordinator. That process identifies the XBee3 end node as having a single on-off (cluster ID 0x0006) end point.
The coordinator’s GUI correctly shows a ‘switch’ that can be used to update the state of the end node.
All of this works well and I can turn the end node state ‘on’ and ‘off’ multiple times.
However if I wait for more than about 1 minute between changing states, the end node receives the packet from the coordinator [Cluster ID 0x0006, Attribute 0x00 - on/off)] using the ‘receive()’ function (so that part of the socket must still be working) but when it tries to send back the ‘Default Response’ (ZCL command 0x0b) via the transmit() function I get the ENOTCONN error.
Therefore I can receive but I can’t send which (to me at least) makes no sense.
What version of the XBee firmware are you running?
As I said in the first line of the first post, it is the latest Zigbee firmware - what I didn’t say was that it was version 1012. If there is a newer version then please let me know.
If this is what I think it is, the issue has been addressed and will be resolved on the next release of the firmware. In the mean time, adding a few second delay on the receiving loop or running the 100D firmware is the suggested work around till the next version of the firmware can be released.
Flashed the 100D firmware and the issue looks like the issue has resolved.
Any idea when the next firmware version wil be released?
I am sorry but I don’t. However, if you go to https://my.digi.com, you can create an account and keep track of changes or new releases to anyone of the Digi products.