When toggling relay of ZEN16, reported currentValue ends up not being targetValue
See original GitHub issueDescribe the bug
When toggling a relay of a Zooz ZEN16, currentValue gets misreported at some point. It first gets the correct value then changes to the wrong value. ie. Toggling targetValue cause currentValue to toggle as expected reflecting the actual state of the relay, but will then toggle again, thus reporting currentValue incorrectly. The physical relay actually only switches once. To actually toggle the state and report the correct value, the targetValue needs to be clicked twice (without toggling, just the same value).
In attached log file,
22:15:45.027 DRIVER » [Node 010] [REQ] [SendData]
│ transmit options: 0x25
│ callback id: 86
└─[MultiChannelCCCommandEncapsulation]
│ source: 0
│ destination: 1
└─[BinarySwitchCCSet]
target value: true
...
22:15:45.058 CNTRLR [Node 010] [~] [Binary Switch] currentValue: false => true [Endpoint 1]
...
22:15:45.132 CNTRLR [Node 010] [~] [Binary Switch] currentValue: true => true [Endpoint 1]
...
22:15:45.135 DRIVER « [Node 010] [REQ] [ApplicationCommand]
└─[MultiChannelCCCommandEncapsulation]
│ source: 1
│ destination: 0
└─[BinarySwitchCCReport]
current value: true
...
22:15:46.062 DRIVER » [Node 010] [REQ] [SendData]
│ transmit options: 0x25
│ callback id: 87
└─[MultiChannelCCCommandEncapsulation]
│ source: 0
│ destination: 1
└─[BinarySwitchCCGet]
22:15:46.113 CNTRLR [Node 010] [~] [Binary Switch] currentValue: true => false [Endpoint 1]
...
22:15:46.117 DRIVER « [Node 010] [REQ] [ApplicationCommand]
└─[MultiChannelCCCommandEncapsulation]
│ source: 1
│ destination: 0
└─[BinarySwitchCCReport]
current value: false
Only one BinarySwitchCCSet
is sent.
Switching the relays with the physical switches do correctly report the currentValue.
Device information
Zooz ZEN16 Multirelay
Node 10
This is a device with 3 relays and 3 switches, my switches are configured as [10-112-0-2] Switch Type for Relay 1 (Sw1)
: Toggle switch (follow switch)
.
This did not occur with ozw.
Last Known Working Configuration
-
New device
-
Previously working device (node-zwave-js)
- Which library version/docker image/adapter version?
- Have you made any recent configuration changes to the device? Describe.
-
Previously working device (other platform)
- ozw
- Have you made any recent configuration changes to the device? No
Installation information
How did you install node-zwave-js
?
-
zwavejs2mqtt
(latest) docker image -
zwavejs2mqtt
(dev) docker image - ioBroker.zwave2 adapter
- Pkg
- Manual Docker build
node-zwave-js
branch:zwavejs2mqtt
branch:
- Manually built (as described in the docs)
- Other:
To Reproduce Steps to reproduce the behavior:
- Go to ‘Control Panel’
- Select node
- Expand Binary Switch
- Toggle targetValue. currentValue will then report the current value, before switching a second time.
Additional context Add any other context about the problem here.
Logfile: zwavejs_1.log
Issue Analytics
- State:
- Created 3 years ago
- Comments:65 (25 by maintainers)
Top GitHub Comments
All, Zooz provided me with a test firmware which fixes this issue. They were hoping to release it as soon as tomorrow. I’ll update when they do.
I am seeing this EXACT behavior with this device right now (actually two of them I’ve just added to my network) on the zwave 1.4 integration which uses the OZW 1.4 library. That points to a HW issue, I would think. I will report to Zooz as well. I’ve a pretty good relationship with them, as I own a LOT of Zooz products.
After reading #1532 I’m not sure the solution as described will solve this particular problem, if I’m understanding what the fix does. It sounds like that you will decide NOT to do a poll if you receive an update following a set. But the problem I’m seeing with my device is a BinarySwitch report showing the CORRECT state, followed by a second BinarySwitch report showing the WRONG state, which gives the application the opposite impression of the true state. And, it appears to be random as to when I receive that spurious second report.