[BETA] Advanced Button Controller (ABC)

Not sure if I’m in the right place…but I’m just looking for a pretty simple smartapp to control a few things with my Xiaomi button…will this smartapp Work with that?

I’m running vers 1.02 of the device handler with WD100+ dimmers and ABC smart app. It’s all new to me but I’ve programmed the virtual buttons in ABC for double tap events, but the physical HomeSeer wall switches don’t respond to a double tap.

Should the app be syncing up with the physical switch capabilities? Or does this functionality require HomeSeer software/hub?


Great smartapp - much better than stock!

Is there a way to map the same smartapp to multiple remotes? As an example, I have two minimotes in our family room with identical button mapping. It appears right now that I have to separately configure an app for each remote, and then when I want to change what a button does, change it on separate smartapps for each remote?

Thank you, Carl.

Not sure what you mean by separate smartApps…but you need to have a separate child App for every remote you configure.
As you can see in the picture below, I have a separate configuration for each remote. Unfortunately that is necessary.

You should NOT have separate smartApps for each remote. Just once instance of the ABC smartApp with multiple child Apps for each controller.


You hit the nail on the head. I have only one install of ABC, but was wondering if there was a way to apply the same child app to multiple remotes, and it sounds like there is not.

Thanks for your response - fortunately my settings are not all that complicated to re-create for each remote.


i’ve installed darwins device handler: HomeSeer HS-WD100+ and more (Simple DTH in post 27, advanced feature DTH in post 32)
which works. double tap and tripple tap register for the device in the ipad app.

i installed ABC app: [BETA] Advanced Button Controller (ABC) but when i hit “New Button Device Mapping” the app appears to lock up, the spinning wheel doesn’t go away!

I think this is a bug caused by new app, but if you hit the line above new button device mapping and create your first mapping your good…

i’m using dragon tech switches.

this is nit-picky, but app shows the dimmer switch rather then the switch icon when device is a switch, app needs a conditional statement to show the correct icon (very low priority to fix).
i do like that ABC allow me to program scenes for single press.

Not a problem. The icons for the HomeSeer devices were created by @dalec (muchas gracias Dale).

I actually planned to rewrite some of the code for efficiency and add a couple more features but decided against it because of all the upcoming changes to the API. I don’t know if all the custom smartApps like this one will remain fully functional so I don’t plan on investing any more time into my existing smartApps. We’ll have to wait and see what Samsung has planned for the future.

That being said, If you provide the icons I could easily add them to my github repo and they will automatically appear in the smartApp.

This is happening to me too.
(Darwins DH and ABC app installed; HS-WD100 hardware)

@bellevino @RottenMutt, does this lockup happen every time you click on New Button Mapping? If so, please try again while you have live logging open and let me know if you see any errors there you can share. Also what phones are you using Android or IOS?

Ok guys, I was able to replicate the problem. Luckily I have an IPad for my son that I was able to test with. I had to completely delete the ABC app and start over.

It looks like if you are setting up the App for the first time on an IOS device (android works fine) it locks up as described. I don’t believe this happened before the recent smartthings app update.

It only seems to happen the very first time you try to create a new mapping directly after installing the smartApp. After the initial lock up everything runs fine for me.

I will dig into this and hopefully it’s something simple.

You’re right… I was getting the error on the new iPhone.
On Monday I’ll try it on an Android device.

Hi - this looks amazing, as a former StaplesConnect user I’m very excited at the prospect of being able to use Picos as plain buttons again. (Wink has not worked out for me).

Can anyone give me a rundown of pre-reqs to make this work? I assume I need to obtain a physical Lutron Caseta Hub for the radio/clearconnect, then I add Picos to that, and then ST/ABC will be able see them when I establish the connection between Lutron & ST?

Unfortunately you would need everything you mentioned and you also need another intermediary device like a PC or a raspberry pi that can house a nodejs script. See link below for details.

1 Like

Thanks - I’ll go away and digest that, will see if it’s something feel like biting off.
EDIT 2: ok, i’ll stop reacting to every 3rd word i read and actually go away and digest it lol.

Thanks @stephack, this worked great for my Xiaomi Aqara smart switch.
Since the switch only supports a single button press (and only has one button), I added “Dimmer (Cycle Up)” and “Dimmer (Cycle Down)” functions so that I could cycle a bulb with each button press from off->1%->40%->100%->off->… (and the opposite for cycle down). It was essentially the same code as adjustFan.

If anyone is interested, the general details are below.

The device handler I used:
definition (name: “Xiaomi Zigbee Aqara Button AQ2”, namespace: “terk”, author: “terk”)

Basic code additions:
def getPreferenceDetails(){
def detailMappings =
[id:‘dimCPlus_’,desc:‘Cycle Brightness +’,comm:cycleUp, type:“normal”],
[id:‘dimCMinus_’,desc:‘Cycle Brightness -’,comm:cycleDown, type:“normal”],

section(“Dimmers (Cycle Up)”, hideable: true, hidden: !shallHide(“dimCPlus_${buttonNumber}”)) {
input “dimCPlus_${buttonNumber}pushed", “capability.switchLevel”, title: “When Pushed”, multiple: true, required: false, submitOnChange: collapseAll
if(showHeld()) input "dimCPlus
${buttonNumber}held", “capability.switchLevel”, title: “When Held”, multiple: true, required: false, submitOnChange: collapseAll
section(“Dimmers (Cycle Down)”, hideable: true, hidden: !shallHide("dimCMinus
${buttonNumber}”)) {
input “dimCMinus_${buttonNumber}pushed", “capability.switchLevel”, title: “When Pushed”, multiple: true, required: false, submitOnChange: collapseAll
if(showHeld()) input "dimCMinus
${buttonNumber}_held”, “capability.switchLevel”, title: “When Held”, multiple: true, required: false, submitOnChange: collapseAll

def cycleUp(devices) {
log.debug "Cycling up: $device"
def currentLevel = devices.currentValue(‘level’)[0]
if(devices*.currentValue(‘switch’).contains(‘off’)) devices.setLevel(1)
else if (currentLevel < 34) devices.setLevel(40)
else if (currentLevel < 85) devices.setLevel(100)
else devices.off()

def cycleDown(devices) {
log.debug "Cycling down: $device"
def currentLevel = devices.currentValue(‘level’)[0]
if(devices*.currentValue(‘switch’).contains(‘off’)) devices.setLevel(100)
else if (currentLevel > 85) devices.setLevel(40)
else if (currentLevel > 34) devices.setLevel(1)
else devices.off()

@stephack can I please have Github settings.


Thank you.

OK I don’t know what I am doing wrong. I installed the app, no errors. I checked for updates in Github. No updates. I opened my IOS SmartThings app. Went to the Marketplace and to My Apps clicked on the Advanced Button Controller. Then New button Device Mapping. I get the black gear, and it spins forever and nothing happens. It locks up SmartThings App. Any ideas on what is wrong? I have a new Aeon Quad coming tomorrow, and was hoping this would work. Thanks.