Hi all,
I've been trying to troubleshoot a manufacturer-proprietary (and zealously undocumented) Leviton command string that used to work from a custom device driver on my C3, but doesn't work anymore on my new C8-Pro.
Initially, I couldn't operate any of Z-Wave devices at all after migrating to the C8-Pro, but @bcopeland had me switch over to Z-Wave JS, and then (after some remote log analysis) disable watchdog to overcome a known firmware bug:
http:///hub/zwave2/watchdog/disable
This indeed brought back all of my other Z-Wave devices, except for the fact that my Leviton VRCZ4-M04 Zone Controllers were still not getting their on-switch LEDs set properly. (This is something I'd noticed post-migration to the C8-Pro, but had initially attributed to the general Z-Wave failure.)
I then thought this might be due to the switch to Z-Wave JS -- especially after I saw @bertabcd1234's comment (here) that the erstwhile Advanced "Send Z-Wave Command" on the device page (which I'd just come across, and had hoped to experiment with) "wouldn't work on Z-Wave JS nowadays anyway."
I'm still curious why that is, in case it's still somehow related to my issue?
I reverted my C8-Pro to legacy Z-Wave, which did indeed re-break all of my other Z-Wave commands without restoring VRCZ4 LED control (of course, since it's now clear that nothing is receiving any Z-Wave commands from my C8-Pro under legacy Z-Wave). And switching back to Z-Wave JS again brought back all of the (other) Z-Wave functionality (without having to re-disable watchdog, which I'd also tried to do in legacy mode) except for the VRCZ4 LEDs.
So apparently something else in the C3-to-C8-Pro upgrade has broken (only?) my Manufacturer Proprietary Z-Wave command for controlling the VRCZ4s' on-switch LED indicators. (All my other outgoing Z-Wave commands are switch bindings for non-proprietary devices, and they're all fine under Z-Wave JS with watchdog disabled.)
Does this ring any bells or otherwise suggest any possible issues to anyone?
FWIW, this is concerning setLightStatus() in my Leviton VRCZ4-M04 Zone Controller driver at lines 391-414. Specifically, line 413:
sendHubCommand(new hubitat.device.HubAction("${start.join()}${String.format("%02X",light)}${end.join()}${String.format("%02X",checksum)}", hubitat.device.Protocol.ZWAVE))
sends (for example):
91001D0D01FFBB00000A28
to turn the button 2 and 4 LEDs to amber and the button 1 and 3 LEDs off for node id 05. All of these bytes are hard-wired (fixed) except for the last two bolded bytes (BB and 28). I inherited the command construction from a prior VRCS4 controller, but just now found confirmation of the first bolded bit here; the un-bolded (and hard-wired) bit in the middle remains unexplained. The BB is a hex encoding of the LED statuses and colors, while the 28 comprises a checksum that XORs all of the other bytes plus four more "hidden" bytes -- three of which are also hard-coded, and the last of which is the target node ID.
I'm wondering if it's possible that the sendHubCommand((new HubAction()) syntax above was somehow good enough for legacy Z-Wave on the C3, but not for Z-Wave JS on the C8-Pro?
Thanks,
Michael
