michaelcreamer wrote:When a nodeAwake is received, Indigo says it is "skipping battery check (next check in xxx mins)". This device is set to wake up every 5 minutes (while I'm troubleshooting it) so why isn't Indigo issuing a requestBatteryLevel command? Where is it getting 330 minutes from?
To help reduce battery usage Indigo will request the battery level at most every 12 hours. Every command received (and acknowledged) by the module and every command sent by the module reduces the battery, so Indigo will immediately tell a module that wakes up to go back to sleep, unless it has been around 12 hours since Indigo last requested the battery level. If you choose the
Interfaces->Z-Wave->Reload... menu item Indigo will query the battery level on the next wake. That is, the last query time isn't saved across interface reloads so you can force it by cycling the Z-Wave plugin.
michaelcreamer wrote:The initial battery report shows the correct battery level (45%) but the additional reports always show 100%.
I have no explanation for why it is doing that, other than it must be a firmware bug. Decoding the bytes the module is sending it is indeed reporting (unsolicited by Indigo) that the battery level is 45% for the first two reports and 100% for the last two shown in the log snippet.
michaelcreamer wrote:Z-Wave Debug RCVD packet: 01 18 00 13 CB 00 00 06 01 7F 7F 7F 7F 7F 00 01 03 07 00 00 00 02 01 00 00 41 (hex). <<== WHAT IS THIS?
That is a ACK back from the module for the goToSleep command sent by Indigo. Indigo logs it a bit differently than normal (just as the raw hex and doesn't get decoded) because Indigo specifically doesn't check if an ACK is returned after sending a goToSleep command. This is because some modules fail to ACK after a goToSleep (they go to sleep too fast), and we don't want to log an error in that case since it is benign.
Unfortunately, none of this really helps the situation – the raw packets in both cases (bad module and working module) look as I would expect, with the exception that the bad module is sending a lot of unsolicited (and inaccurate) batteryLevels back to Indigo.