I'm using the stop level change command in my Somfy ZRTSI driver and after upgrading to ZwaveJS it has broken.
hubitat/somfy-zrtsi/somfy-zrtsi.driver.groovy at master · augoisms/hubitat · GitHub
sendToDevice(zwave.switchMultilevelV3.switchMultilevelStopLevelChange())
It appears that the command is sent twice. This results in the MY position not working as the first command starts movement and the second command stops it.
Can someone on the Hubitat team take a look please? Thank you.
@bobbyD
2 Likes
How does this function ever result in movement starting?
The only command being send to the device is to stop.
void myPosition() {
logDebug "myPosition()"
sendToDevice(zwave.switchMultilevelV3.switchMultilevelStopLevelChange())
sendOpeningClosingEvent(50)
runIn(travelDuration, 'sendEvents', [data: [level:50]]);
}
It's a quirk of this particular device. If the window shade is not moving and it receives the StopLevelChange command, then it moves to the pre-programmed "MY" position. If the shade is currently moving it will stop the movement.
Typically sending it twice would have no impact which is probably why it has gone unnoticed.
Anyway... I think it would be useful if you opened to the z-wave logs and then run the command again. Then copy and paste the resulting zwave logs into a code block in a reply.
I didn't realize there were z-wave logs, thanks for that.
Not sure how to interpret these yet, but I am seeing MultilevelSwitchCCStopLevelChange
twice
2025-06-03 02:48:35.216 PMDRIVER all queues idle
2025-06-03 02:48:35.212 PMDRIVER « [REQ] [SendDataBridge] - callback id: 4 - transmit status: OK, took 10 ms - routing attempts: 1 - protocol & route speed: Z-Wave, 40 kbit/s - routing scheme: LWR - ACK RSSI: -63 dBm - ACK channel no.: 1 - TX channel no.: 1
2025-06-03 02:48:35.209 PMSERIAL » [ACK] (0x06)
2025-06-03 02:48:35.206 PMSERIAL « 0x011d00a90400000100c17f7f7f7f01010300000000020100007f7f7f7f7ff0 (31 bytes)
2025-06-03 02:48:35.201 PMDRIVER « [RES] [SendDataBridge] - was sent: true
2025-06-03 02:48:35.193 PMSERIAL » [ACK] (0x06)
2025-06-03 02:48:35.191 PMSERIAL « 0x010401a90152 (6 bytes)
2025-06-03 02:48:35.186 PMSERIAL « [ACK] (0x06)
2025-06-03 02:48:35.184 PMDRIVER » [Node 072] [REQ] [SendDataBridge] - │ source node id: 1 - │ transmit options: 0x25 - │ callback id: 4 - └─[MultilevelSwitchCCStopLevelChange]
2025-06-03 02:48:35.180 PMSERIAL » 0x011000a9000100480226052500000000040f (18 bytes)
2025-06-03 02:48:35.176 PMDRIVER one or more queues busy
2025-06-03 02:48:35.172 PMDRIVER all queues idle
2025-06-03 02:48:35.165 PMDRIVER « [REQ] [SendDataBridge] - callback id: 3 - transmit status: OK, took 10 ms - routing attempts: 1 - protocol & route speed: Z-Wave, 40 kbit/s - routing scheme: LWR - ACK RSSI: -63 dBm - ACK channel no.: 1 - TX channel no.: 1
2025-06-03 02:48:35.161 PMSERIAL » [ACK] (0x06)
2025-06-03 02:48:35.157 PMSERIAL « 0x011d00a90300000100c17f7f7f7f01010300000000020100007f7f7f7f7ff7 (31 bytes)
2025-06-03 02:48:35.152 PMDRIVER « [RES] [SendDataBridge] - was sent: true
2025-06-03 02:48:35.150 PMSERIAL » [ACK] (0x06)
2025-06-03 02:48:35.147 PMSERIAL « 0x010401a90152 (6 bytes)
2025-06-03 02:48:35.142 PMSERIAL « [ACK] (0x06)
2025-06-03 02:48:35.140 PMDRIVER » [Node 072] [REQ] [SendDataBridge] - │ source node id: 1 - │ transmit options: 0x25 - │ callback id: 3 - └─[MultilevelSwitchCCStopLevelChange]
2025-06-03 02:48:35.135 PMSERIAL » 0x011000a90001004802260525000000000308 (18 bytes)
2025-06-03 02:48:35.132 PMDRIVER one or more queues busy
I found this same thing for MultilevelSwitchCCSet which I posted over in beta for anyone who has access you can see the whole thread.
Just trying this two reports together.
After activating the device physically where the duration works a few times, leaving it OFF. Then if I activate to ON from the hub, this first time it sorts of works better from the perspective of the driver, since I get a duration. However this is horribly inefficient for Z-wave traffic.
It still looks like the hub is sending TWO on commands in a row for some reason. In this case both came back with Success duration of 0 (not sure why no duration 3 this time, device quirk maybe). But then after that it looks like the hub took it upon itself to send a MultilevelSwitch Get? That is what finally resulted in the duration getting passed back to the driver.
Is something broken with the supervision response handling?
2025-06-11 06:49:06.587 AMDRIVER « [Node 043] [REQ] [BridgeApplicationCommand] - │ RSSI: -74 dBm - └─[Security2CCMessageEncapsulation] - │ sequence number: 41 - │ security class: S2_Authenticated - └─[MultilevelSwitchCCReport] - current value: 99 - target value: 99 - duration: 0s
2025-06-11 06:49:06.583 AMCNTRLR [Node 043] [~] [Multilevel Switch] currentValue: 0 => 99 [Endpoint 0]
2025-06-11 06:49:06.579 AMCNTRLR [Node 043] [~] [Multilevel Switch] duration: {"value":0,"unit":"s [Endpoint 0] - econds"} => {"value":0,"unit":"seconds"}
2025-06-11 06:49:06.566 AMCNTRLR [Node 043] [~] [Multilevel Switch] targetValue: 255 => 99 [Endpoint 0]
2025-06-11 06:49:06.561 AMSERIAL » [ACK] (0x06)
2025-06-11 06:49:06.557 AMSERIAL « 0x011f00a8000001002b119f0329008e2f4ac947df7bcbfa414022f100b6007f7f5 (33 bytes) - 2
2025-06-11 06:49:06.549 AMSERIAL » [ACK] (0x06)
2025-06-11 06:49:06.544 AMSERIAL « 0x011d00a99100000100b67f7f7f7f00000300000000030100007f7f7f7f7f13 (31 bytes)
2025-06-11 06:49:06.539 AMDRIVER « [RES] [SendDataBridge] - was sent: true
2025-06-11 06:49:06.534 AMSERIAL » [ACK] (0x06)
2025-06-11 06:49:06.525 AMDRIVER » [Node 043] [REQ] [SendDataBridge] - │ source node id: 1 - │ transmit options: 0x25 - │ callback id: 145 - └─[Security2CCMessageEncapsulation] - │ sequence number: 124 - │ security class: S2_Authenticated - └─[MultilevelSwitchCCGet]
2025-06-11 06:49:06.519 AMSERIAL » 0x011c00a90001002b0e9f037c00676015ac9f68e9463728250000000091c3 (30 bytes)
2025-06-11 06:49:06.512 AMDRIVER one or more queues busy
2025-06-11 06:49:01.507 AMDRIVER all queues idle
2025-06-11 06:49:01.496 AMDRIVER « [Node 043] [REQ] [BridgeApplicationCommand] - │ RSSI: -74 dBm - └─[Security2CCMessageEncapsulation] - │ sequence number: 40 - │ security class: S2_Authenticated - └─[SupervisionCCReport] - session id: 20 - more updates follow: false - status: Success - duration: 0s
2025-06-11 06:49:01.492 AMSERIAL » [ACK] (0x06)
2025-06-11 06:49:01.486 AMSERIAL « 0x011f00a8000001002b119f032800db6c64f6a509eec7edb7663b6400b6007f7fb (33 bytes) - 2
2025-06-11 06:49:01.480 AMDRIVER « [REQ] [SendDataBridge] - callback id: 144 - transmit status: OK, took 10 ms - routing attempts: 1 - protocol & route speed: Z-Wave, 100 kbit/s - routing scheme: LWR - ACK RSSI: -74 dBm - ACK channel no.: 0 - TX channel no.: 0
2025-06-11 06:49:01.476 AMSERIAL » [ACK] (0x06)
2025-06-11 06:49:01.472 AMSERIAL « 0x011d00a99000000100b67f7f7f7f00000300000000030100007f7f7f7f7f12 (31 bytes)
2025-06-11 06:49:01.464 AMSERIAL » [ACK] (0x06)
2025-06-11 06:49:01.460 AMSERIAL « 0x010401a90152 (6 bytes)
2025-06-11 06:49:01.455 AMSERIAL « [ACK] (0x06)
2025-06-11 06:49:01.450 AMDRIVER » [Node 043] [REQ] [SendDataBridge] - │ source node id: 1 - │ transmit options: 0x25 - │ callback id: 144 - └─[Security2CCMessageEncapsulation] - │ sequence number: 123 - │ security class: S2_Authenticated - └─[SupervisionCCGet] - │ session id: 20 - │ request updates: true - └─[MultilevelSwitchCCSet] - target value: 255
2025-06-11 06:49:01.446 AMSERIAL » 0x012200a90001002b149f037b005645f7391db6a0842845c32a640763ed2500000 (36 bytes) - 0009023
2025-06-11 06:49:01.438 AMDRIVER one or more queues busy
2025-06-11 06:49:01.421 AMDRIVER all queues idle
2025-06-11 06:49:01.411 AMDRIVER « [Node 043] [REQ] [BridgeApplicationCommand] - │ RSSI: -74 dBm - └─[Security2CCMessageEncapsulation] - │ sequence number: 39 - │ security class: S2_Authenticated - └─[SupervisionCCReport] - session id: 19 - more updates follow: false - status: Success - duration: 0s
2025-06-11 06:49:01.407 AMSERIAL » [ACK] (0x06)
2025-06-11 06:49:01.403 AMSERIAL « 0x011f00a8000001002b119f0327007e6daf21b68b8ba4a7b2cc9de200b6007f7f5 (33 bytes) - 7
2025-06-11 06:49:01.396 AMDRIVER « [REQ] [SendDataBridge] - callback id: 143 - transmit status: OK, took 10 ms - routing attempts: 1 - protocol & route speed: Z-Wave, 100 kbit/s - routing scheme: LWR - ACK RSSI: -75 dBm - ACK channel no.: 0 - TX channel no.: 0
2025-06-11 06:49:01.391 AMSERIAL » [ACK] (0x06)
2025-06-11 06:49:01.383 AMSERIAL « 0x011d00a98f00000100b57f7f7f7f00000300000000030100007f7f7f7f7f0e (31 bytes)
2025-06-11 06:49:01.373 AMDRIVER « [RES] [SendDataBridge] - was sent: true
2025-06-11 06:49:01.371 AMDRIVER » [Node 043] [REQ] [SendDataBridge] - │ source node id: 1 - │ transmit options: 0x25 - │ callback id: 143 - └─[Security2CCMessageEncapsulation] - │ sequence number: 122 - │ security class: S2_Authenticated - └─[SupervisionCCGet] - │ session id: 19 - │ request updates: true - └─[MultilevelSwitchCCSet] - target value: 255
2025-06-11 06:49:01.369 AMSERIAL « [ACK] (0x06)
2025-06-11 06:49:01.355 AMSERIAL » 0x012200a90001002b149f037a00e82ecf1b739d3d3370d5459b22d816c22500000 (36 bytes) - 0008fa1
2025-06-11 06:49:01.346 AMDRIVER one or more queues busy
@bobbyD @bcopeland Has this been issue been acknowledged yet and in the pipeline for fixing? I've had to implement a hacky workaround in my driver where I send my own commands twice to make this work. Thanks.
This appears to be a ZWave-JS code issue.. I am able to reproduce on the version that is out there, but I am testing a newer version that doesn't have this same issue.
3 Likes
That's good news. Thanks for the update!
2 Likes
Observed similar trigger "Echos". The triggering device logs shows a single event but the rule log showed a second trigger event ~ 250ms after the first which caused my dimmer level logic to misbehave. Forced me into private boolean to block triggers until the end of the rule plus a little delay ducking that second trigger.