Advanced Button Controller (ABC)



I’ve attempted to use ABC with three button devices to incrementally DIM lights up and down with no luck When I trigger increasing the light level by any increment I get a “run way” reaction all the way to 100%. Every attempt to decrease the brightness does nothing. The lights are OSRAM Lightify Spots and the button controllers are the Lightify button, Mi Cube, and Iris Key Fob.

The other ABC functions I’ve tried all work.

Has anyone had any success using ABC to “increase level by” or “decrease level by” options?


Are you using the pushed or held option for the button device. Also please post a link to the driver you are using for both the light and the button device.


Same here, using osram lightify bulbs with a osram lightify 2(4) button dimmer. 2 buttons, supports held and push though I have not gotten held working consistently. I will tell it to dim up 25 percent a push, the first push works but the next push does nothing until I manually refresh the bulb. I need to make a webcore app to refresh everything on push maybe?


That is by design. The dim value increments based on the value that the device reports back. If the device does not refresh its value quickly enough the you would have to wait till that time before hitting the button again.


That seems a poor design to me. For every additional push within a short time frame, it should store and send the additional increase. Waiting for a refresh sucks. :slight_smile: Could you use double and triple tap to send larger increases and decreases?


Probably is, and I’m sure there are many other design flaws. Unfortunately, I’m not a developer and I’m not able to see/design around every potential issue. I can’t forsee what problems may arise by using your method @EdwardN but have no plans to update the ABC app for this right now (time is limited and I’m focusing on other automatons at the moment).
If someone wants to update, test and share their method for adjusting dims incrementally, I’ll happily update the code in my repo accordingly.


I apologize. I didn’t intend it to be a criticism. I see reference in the code for double-click but it’s not appearing as an option for my caseta picos. I assume it has to be supported by the device driver?

@joelclendineng , I’d recommend you use push for one increase and hold for a larger one, if you don’t have hold already mapped to something else.


No need to apologize. You are probably correct that it’s not the best way. I built it in a way that worked for me in ST. I haven’t had the time to test everything in Hubitat yet.

That’s correct. The driver has to explicitly say it supports Double Click. This isn’t a software workaround like it was done in ST. Hubitat has built in support for device that send unique data for double clicks. Picos do not natively support double click so they won’t give that option but I’m sure eventually someone with the need and motivation will create a custom driver that can emulate 2x clicks.


There’s code for using a double-click here:

But it’s specific to toggling a secondary switch on double tap. It could probably be converted though. I’m not sure how much messing with it would be needed or if it’d screw up the native double-tap of certain button devices.

In Smartthings it was unreliable because the timing for cloud responses were inconsistent. That shouldn’t be a problem for Hubitat though.


That app would probably work as is but you would have play around with the numeric value on line 58 to find the right timing (since this is not cloud based). However…I have a feeling that any software implementation of double click would not be completely reliable.
Any button controller with native double click would not need this app at all (if the driver was updated to use Hubitat button implementation)


I figured 5 seconds (5000 ms) was a little on the high side for a local system. Probably 2 seconds would be sufficient. I might try playing around with it and see if I can figure out how to add it in as another option to ABC.


Sorry, somehow I managed to miss your offer for help. I have another problem to solve first. The button controller is only registering button 1, so maybe the issue is with the device or the driver. When I get button 2 registering I'll try ABC again.


Update 6/02/18:
v1.0.20180602 of ABC Button Mapping child app
added support to cycle fan speeds using my custom Hampton Bay Zigbee Fan Controller driver


Update 6/30/18:
v1.0.20180630 of ABC Child App

  • adapted fan cycle to be compliant with fanControl capability (removed cycle support for custom driver)
  • added ability to set specific fan speed.
  • added support for ramping (graceful dimming) - switch/bulb needs changeLevel capability and button device needs releaseableButton capability.


Update 7/01/18:
1.0.20180701 of ABC Button Mapping Child App
- added Released event handling for all control sections
- pushed/Held/DoubleTapped/Released hidden from Dimmer Ramp section based on devices capabilities


***Update 7/03/18 ***

Please note that the ABC Controller Parent App has also been updated this go round.
It is a cosmetic update that adds icons and I have readded the version checker that was available previously in Smartthings. (If a new version is available the Main ABC Icon will change to an UPDATE Icon.

ABC Child App is now v1.0.20180703
7/03/18 - code cleanup
- Added pictures enhancements and reordered options for better flow
- Corrected default child app label (previously defaulted to "ABC Button Mapping" on first save)


This looks fantastic. Thanks so much for your dedication to this app!


Thanks @SmartHomePrimer
I always felt that it was difficult to find and tweak settings with the generic HE layout. Once I learned the neat trick that @bangali used in his Rooms Manager app, I figured ABC could use a little spit and shine. It makes app navigation a whole lot easier.

And I figured I would fix a couple of small bugs along the way.


For the life of me I can't find the code for this. Am I just blind ?