Fibaro Dimmer 2, Direct Association and Toggle/Momentary Button: Correct Setup?

I’ve got a setup as detailed here:

Quick summary: Fibaro Dimmer 2 behind a wall switch with direct association to another Dimmer 2 which controls a light - this allowed me to install lights using existing wall switches without having to run cabling between the switch and the light.

Up till now, this has been working fine with a toggle switch - a bit of pain when an automation turned off a light and we had to double-switch it, so I eventually got around get getting some momentary switches. I installed once of these today and have come across an anomaly I hope someone can explain, even if its to tell me what I’m doing wrong.

I’m using @zcapr17’s Dimmer 2 DTH.

When the switch Dimmer 2 parameter 20 (Switch Type) is set to 1 (Toggle), then turning the switch off sends the correct command to the associated Dimmer 2 that controls the light and it turns off.

Here’s an excerpt from the logs of the Dimmer 2 that is controlling the light and showing the event is receives. You can see that the level sent is 0.

346169e9-109e-4b69-b86a-b29e3d01c1c7 23:44:35: info Dimmer level is 0%
346169e9-109e-4b69-b86a-b29e3d01c1c7 23:44:35: info Dimmer turned off.
346169e9-109e-4b69-b86a-b29e3d01c1c7 23:44:35: trace zwaveEvent(): Switch Multilevel Report received: SwitchMultilevelReport(value: 0)
346169e9-109e-4b69-b86a-b29e3d01c1c7 23:44:35: trace zwaveEvent(): Security Encapsulated Command received: SecurityMessageEncapsulation(commandByte: [0], commandClassIdentifier: 38, commandIdentifier: 3, reserved13: 0, secondFrame: false, sequenceCounter: 0, sequenced: false)
346169e9-109e-4b69-b86a-b29e3d01c1c7 23:44:35: trace parse(): Parsing raw message: zw device: 18, command: 9881, payload: 00 26 03 00

However, when I change the switch Dimmer 2 to a Momentary type (value 0), although the switch Dimmer correctly identifies the level as 0%, the Dimmer 2 controlling the light receives an event with a 1% level.

346169e9-109e-4b69-b86a-b29e3d01c1c7 23:43:11: trace zwaveEvent(): Switch Multilevel Report received: SwitchMultilevelReport(value: 1)
346169e9-109e-4b69-b86a-b29e3d01c1c7 23:43:11: trace zwaveEvent(): Security Encapsulated Command received: SecurityMessageEncapsulation(commandByte: [1], commandClassIdentifier: 38, commandIdentifier: 3, reserved13: 0, secondFrame: false, sequenceCounter: 0, sequenced: false)
346169e9-109e-4b69-b86a-b29e3d01c1c7 23:43:10: trace parse(): Parsing raw message: zw device: 18, command: 9881, payload: 00 26 03 01 

Can anyone shed any light onto what might be causing this. I’ve gotten around it for now by hacking the DTH to set the level to 0 if it comes in as 1, but that makes me feel dirty.

Any ideas?

FWIW, I am using “codersaur” DTH on 7 lamps and it works like a dream. I have not yet setup secondary associations, but everything else works fine. Maybe try that.