I've got a couple Pico's I configured to control a Zooz dimmer via RM4. Button 1 is turn on Dimmer, Button 2 is +25, Button 3 is -25, and Button 4 is off.
I've noticed an interesting behavior when I dim down to 0 (rather than turn off with button 4), where if I then hit button 2 (+25) it jumps to "49" (50) rather than going to 25.
Does this make sense? Am I missing something obvious?
Possibly: is that "dim to 0" button doing a "Set Level" to "0" as I might assume? If so, while drivers may vary in how they implement this, for most drivers and devices, that is equivalent to an "Off" command--i.e., the device will "remember" its last level but turn off, and if turned on again (via a plain "On" command) will return to that same level. In terms of attributes ("Current States" in the upper right of the device page), what you would see is that the "level" attribute remains the same after setting the level to 0, while the "switch" attribute will report "off."
So, what this all means it that if your level was 24 or 25 before doing a "Set Level" to "0," then when you to the action that increases the level by 25%, what will happen is that the bulb will go to level 49 or 50. It will also turn on, as a "Set Level" command will also conventionally turn on a bulb/dimmer that is off ("prestaging" that some devices offer being an exception here). My guess, without seeing exactly what you're doing, is that this is what's happening here.
Sorry, there's no button "dim to 0". There's On, Off, and + and - 25. So basically on returns to previous level before off. But, hitting -25 multiple times should result in "0".
Oh... I see what you're saying. So it's never actually getting set to 0. It's just seeing the -25 as "turn off" and remembering the previous value.
That does make sense, but is a bit odd. Suppose I could add a bit of logic to have it go down to 1... interesting.
Yeah, that would be my guess as to what is happening--if your -25 action ever effectively sends a "Set Level" to 0, then it's just an "Off," and the old level is saved. Adding some logic to get 1 as the minimum value, as you suggest, would be an easy way around that.
If your devices support the "Start Level Change" and "Stop Level Change" commands, you could also look into using those instead of stepping up/down by specific levels, but that also works best if you have a button device that supports "released" events and devices that behave consistently in response to these commands. Another story, but my preference whenever I can.