An idiot's guide for "push", "double-tap", "hold-release" vs "toggle on/off" (and making "on" always start at max dimmer level)

So. I do NOT understand the logic and the sequence of events when programming room lighting.

I understand "push", "double-tap" and "hold-release" just fine, but when combined with "toggle on/off" and dimmer control everything falls apart. There has to be something I am missing, because it sure feels something IS missing. So my first question is if there is an idiot's guide to this, somewhere. Because that feels exactly like something I would need...

To make things (fairly) simple lets assume that on the control side I use control buttons with "push", "double-tap" and "hold-release", none of which actually controls any wiring. On the receiver end I use "simple on/off switches" and "dimmer controls" (both dimmable bulbs and zigbee-controlled led transformators). All (zigbee) bulbs are connected to a Hue Bridge, that is connected to Hubitat using the standard built-in Hue Bridge Integration app. The built-in "Button controllers"-app (5.1) is used for button rules.

What I want to achieve is:

  1. a "push"-command acts as a normal on/off toggle
  2. a "hold" starts a down-ward dimming procedure that stops on "release"
  3. a "double tap" can be used for anything (like turning on lights at 50%, or turning off all lights, it doesn't matter)

The problems I experience:

A. when using the "toggle on/off" function on multiple lights, occasionally some bulbs/lights will not turn on/shut off, putting the lighting group in "de-sync" => generating a "push"-command will turn some of them on and some off, with the next toggle command switching that around.

I suspect this is due to some sort of de-sync between a bulb and the Hue Bridge and/or the Hue Bridge and Hubitat. But is really irritating (you have to "reset" the lighting group the hard way in order for the lights to sync again). It also feels ridiculous.

B. When dimming lights using "hold-release", the lights will stay dimmed even when turned off and back on. And there is of course no way to dim them back up again, so after dimming they stay permanently dimmed (until you manually log in to Hubitat and put them back at 100%, which sort of misses the mark from a "lighting control" viewpoint). This is so incredible dumb that I am sure I am missing something, but I don't have clue what that is.

I assumed there would be an "always turn on at X level"-setting somewhere (that is what my first smart home Chinese system had) , but I can't seem to find such a setting anywhere.

I even tried using "if...then"-based logic instead of the simple (and very useable) toggle function, but it feels downright silly to go through "if on then turn off" and "if off then turn on" and "set to level 100" for a lot of lighting. So silly you could probably call it "un-smart home automation"...

In addition to all this some of the "switch"- and "dimmer"-commands seems to have their own internal logic. Like it being impossible to dim down to zero (= "off") using the "start lowering"-command and setting dimmer level will also turn a light on (so you can't reset the level to 100 after turning a dimmed light off, because that will turn it on again). And if you have a dimmable bulb behind a normal on/off switch, the bulb is of course not even controllable when the switch is set to "off" (as the bulb then gets no electricity).

Even if I am "dumb" I figured that I am not the only one, and that this probably is a very common problem (that thousands upon thousands have already solved). But I can't seem to find any such relevant information, not on the Hubitat forum or on the 'net. So if someone could point me in the right direction, I would be very grateful.

Lighting is probably the first thing anyone starts controlling and push control buttons have been around like forever, so I really do feel a bit dumb not being able to figure this out. Or rather: figuring out how to elegantly use built-in functions for such basic lighting control, without having to resort to "coding"...

Have you checked out the Button Controllers app?

And Dimmer Button Controller for dimmers...

1 Like

On the note of being unable to dim up if you dim too far, this is what I've got on one of my button controllers:

That is, holding triggers a dim down, but a second one within ten seconds dims up, and it continues to flip-flop directions until you leave it alone for ten seconds.

(And then because these bulbs are stupid and turn off if you dim too far, I turn them on at the end if they got turned off.)

1 Like

Why I love zooz dimmers (assume other can as well). I can customize the switch in each room to set the minimum dimming level.
image

1 Like

That's nice too, but this is a case of dimming to zero equating to off, not a case of dropping below their minimum voltage.

Yep. As it says in the OP, I'm using the Button Controller app (5.1).

Thanks for the explanations, but I am sort of beyond this point. I use the Button Control app, and I use the Push, Double Tap and Hold-Release functions. I also grasp the difference between buttons (of different kinds) and switches, and I am a lapsed programmer (so the command flow logic is quite clear). My problem in that regard is what the actual commands do, and don't do.

A good example of this is achieving a button Push functionality that would always turn the light on at 100% if it is off, and always turn it off if it is on. because that is how all the "mechanical dimmers" we still have work, and that is how all the dimmers we've ever had works. The lights turn on at "full" and then you dim "down" (if you want). Such a functionality seems to be incompatible with the Toggle command (since it will turn on the lights at whatever level they had when your turned them off).

I could and have successfully tried using one command for "on" (Push) and another for "off" (in my case Double Tap). But it seems a waste using 66% of your control options for a simple on/off function, and it also makes "Smart Home" buttons act differently from "stupid mechanical" ones (which go "on" with a push if "off", and "off" with a push if "on").

I rarely get a desync on the Toggle function if I use buttons, switches and bulbs that are connected to Hubitat only (regardless if they are zigbee or z-wave). However, it is fairly common to get such desyncs when toggling lights that are connected to a Hue Bridge (first) and then included in Hubitat (second). So one solution to that problem could be to remove all the lights from the Hue Bridge (which then becomes completely superfluous) and transfer them to Hubitat.

After some consideration I have come to the conclusion that I was wrong in stating a need for an "idiot's guide", that was just my irritation taking precedence. What i really want is an 4.5 ounce & 890 page "programmer's guide" with every single command explained in all it's glorious detail, with examples that shows exactly what it does and what you can use it for. Like that setting the level for a dimmable lamp will ALSO turn it on, so even if your device is on and able to receive commands you cannot affect the level with that command (without turning it on). It is hard to build a functional system using commands whose functions you are not 100% sure about.

Anyway, thanks for your help everyone. It isn't too much trouble to use multiple commands and/or a little bit of code to get a working solution. Most of my irritation came from thinking this was everyday solutions that everyone needs, and that they would logically be included in some shape or form (like setting a "starting level" for the device, even). And then not being able to figure out how that was supposed to work... :slightly_smiling_face:

Thanks. That is also my conclusion. And it is fine, I just went in with the wrong presupposition (that the functionality was already there and I just had to figure out how to use the standard commands).

Doing it the Rule Machine way also sort of clarifies how to potentially go about adding other possibilities, like setting starting levels other than 100 (for instance at night and/or controlled by a movement sensor). And/or add the dim up&down-functionality (like in another example, thanks btw).

Dimmer Button Controller has your back:

1 Like

Thanks! Also @dstutz!

My "plan" was to add all buttons, switches, sensors etc. "one by one", aiming for testing all kinds of functionality. And then at some point go for a "really smart" ( :grinning:) home, adding in "states" (time-of-day, lighting levels (outside & per room), human presence (in different rooms) etc. and rules making everything work flawlessly together (at that some point).

I now realize I really have to go about this the other way round, creating a logical framework "for everything" first and with that thought-out and planned (and at least partially implemented) only then starting to add in more complex "device"-functionality on a room-by-room basis. That is, anything beyond "on-off"-functionality.

So this has been a great help, and your example was a kind of wake-up call, to not do a lot of button-by-button programming without having a framework thought out first.

Big thanks!

1 Like