-
Notifications
You must be signed in to change notification settings - Fork 7.6k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Zigbee readManufacturer fail leads to reboot #10777
Comments
@AndunHH Thank you for the report, I will work on fixing it. |
@AndunHH Can you test with this changed code in the example? Just replace the part of listing devices:
|
Thanks for the fast solution approach. The first response: Yes, the device is not rebooting endlessly because of the readModel() or readManufacturer(). But sadly, it's also not working as expected. I refer the millisecond counter from the log file:
Therefore: reading the manufacturer in the application is not possible after un- and replugging the outlet. Here is the complete log and below my actual sketch: complete log
My Sketch
|
@AndunHH The reading there is duplicated, I have fixed it in the PR I opened. |
Board
seeed xiao esp32-c6
Device Description
I use the Seeeduino-XIAO-Expansion-Board/
Hardware Configuration
nothing added
Version
latest master (checkout manually)
IDE Name
Arduino IDE 2 and pioarduino
Operating System
Ubuntu 2024.04
Flash frequency
80Mhz
PSRAM enabled
yes
Upload speed
921600
Description
When calling
zbSwitch.readManufacturer(device->endpoint, device->short_addr, device->ieee_addr)
within the zigbee Switch example the manufacturer is reported.Unfortunately, the timeout within this function leads to a rebooting device, because it is not handled, when the device is not answering.
I expect, that the function
readManufacturer()
returns a "n/a" or likewise, but is not resetting the controller, when no information could be obtained.I tried to avoid the problem by checking
zbSwitch.bound()
before callingreadManufacturer()
, but this doesn't solve the problem, because bound() doesn't know, that I just unplugged the light.Sketch
Debug Message
Other Steps to Reproduce
In the pasted example I changed the xQueueReceive timeout in line 161 to 200 ticks to get to the end of the loop().
The really interesting part, is that I added the for loop in line 193 from the printBoundDevice function.
I'm using the latest master for arduino-esp32: commit 9eb7dc6
The behavior is independent of a factory-reset or not.
When the light is not available the readManufacturer runs into the unhandled exception.
I can reproduce this problems when
a) I disconnected the light bulb after successfull connection and toggling.
b) if the esp32c6 restarts and remembers the bound devices, but the actual reconnection to the light needs some time, but I'm already asking for a manufacturer.
I have checked existing issues, online documentation and the Troubleshooting Guide
The text was updated successfully, but these errors were encountered: