[Merged Topics] Challenges with Bond in Home Assistant

I tried everthing to connect bond to HA but could not find a way to make a button to turn on/off the light.

Have you posted in the Home Assistant forums to get help with wherever you want to add a button controller?

Meanwhile, let’s start with the basics.
Does the Bond app function for you as desired?
Do your lights and ceiling fans, or whatever you’ve configured there, work as expected whenever you hit Light On / Light Off / Toggle or Fan Power On / Off / Toggle?

If those aren’t reliable, let’s work together to fix that layer first.

But if the app is all working, then it might be a Home Assistant specific configuration issue.
What firmware version is your Bond Bridge (or Smart by Bond, if that’s the type of Bond device you’re attempting to integrate)?
Does the Bond device show in Home Assistant at all, and if so, do any of your fans/lights show too?
I don’t use Home Assistant very much / very well, but I was able to Configure the Bridge in Home Assistant by providing the Token key (available in the Bond app) from either “discovered” devices or via IP address:
image

… and then the devices showed up in HA:

I caught up with your previous post:

I am new in home assistant. Tried to use the bond integration.
The integration recognized all my fans but only created buttons for fan speeds, revert fan, increase/decrease light brightness. The most trivial button of turning on, turning off, toggle light (which in my fan is the same button) the integration didn’t add. Why is it? How can I had those buttons to my home assistant?

(In my bond app there are those buttons)

Tnx!!!

What remote template do you show in your Bond app?
Go to your fan in Bond, hit the menu button, hit Settings, expand Advanced.
Do you see a Template listed, like so?
image

I also found an old post from you in 2022. Not sure if you’re still controlling the same five fans as you were last year, but I thought this was potentially relevant:

To me, it doesn’t look like with point #3 above that there is a discrete single command for LIGHT ON or LIGHT OFF on your original remote. That may be why you don’t have a button in Home Assistant to toggle the light ON or OFF, since there is no single button press that can reliably do that, even on the original remote.

Hi Matt,

In the bond app I don’t have the same settings.
I don’t have the template/

I use v.3.3.13

‫בתאריך שבת, 8 באפר׳ 2023 ב-4:02 מאת ‪Matt Burke via Bond Home Forum‬‏ <‪notifications@bond1.discoursemail.com‬‏>:‬

I posted everywhere no one had something useful to offer.
I found people who said for them the homeassitant managed to add toggle/turn on/turn off buttons.

In the bond app everything work ( while configuring at first I used your help and used specific signals - manual input)

the version is v.3.3.13

All bond devices are shown in HA they can set the fan to work (same speeds like the bond app)
and can set the brightness. but no toggle / turn on / turn off buttons.

Please your kind help!!!

Zeev

‫בתאריך שבת, 8 באפר׳ 2023 ב-3:06 מאת ‪Matt Burke via Bond Home Forum‬‏ <‪notifications@bond1.discoursemail.com‬‏>:‬

It may be the reason.
But still the home assistant does not have a button which changes the light temperature(as mention in bullet 3)

The fan I showed you as an example in HA has a button on the original remote that turns the light on and off, and a second button for changing the temperature of the light.
Only the Light Power Toggle shows up in HA for me.

Again, I don’t actually use Home Assistant, so it may be worth asking in their forums as well about what attributes a Fan or Light can have natively. Anyone else that knows HA here on these forums is welcome to chime in.

If nothing else, you should be able to use RESTful commands in HA which you manually add to perform the Bond API Actions on the device as you want.
I also saw this post on their forums; true, it is about ZigBee bulbs but it sorta makes sense to me that it might have some tricks to help you with your ceiling fan light.

Again, I get the feeling that the Bond plugin won’t automatically do what you want in HA (or at least not with the current version of it), but it does look like you could add additional pieces to HA to get what you want.

I tried restful commands but could not get it working. Also curl command.

I think the problem may be the bond app.
As you mentioned for some reason the bond app could not learn automatically the ir signal for turning light on/off and I had to add it manually. That may be the reason? How can I be sure the bond app recognises backend those signals as turn on/off light and not something else?

Tnx

Until we get cURL via a computer on the same network as your Bond (or RESTful in HA) working, then we know that there is more we can try.

The Bond app works to do what you want, as you said, but because you had to “raw record” / teach the Bond the OEM commands, it doesn’t have a template matching to fans/lights the Bond team has seen before.
That’s not a big issue, as more than half of the devices I control with three different Bond Bridges are not templated ones.
Just makes it a little more work on the homeowner / DIY end - but once we figure out cURL (and then apply that to RESTful HA entities), it will be pretty seamless.

Let’s go ahead and try to get cURL working for you first, then.
If you can input this command into a terminal or command prompt window via a computer on the same network as Bond, we can get a list of the Actions and Commands (+ their signals).

Make sure to get the Bridge’s IP address from the Bond app:

  • Go to the Bridge in the app, expand the Advanced button, tap “Network Info”, and note what it says here:
    image

… then BOND-Token from the Bond app:

… and finally get the relevant device ID from the Bond app:

  • Go to the Fan device in the app, tap the menu button, hit Settings, and note what it says here:
    image

Use the IP address to replace the x.x.x.x, the BOND-Token to replace the aaaaaaaaaaaaaaaa, and the device ID to replace the bbbbbbbbbbbbbbbb:
curl -H "BOND-Token: aaaaaaaaaaaaaaaa" -i http://x.x.x.x/v2/devices/bbbbbbbbbbbbbbbb

You should get a response once you hit {ENTER} that looks something similar to, but not exactly the same as, this:

HTTP/1.1 200 OK
BOND-Flags: 4
Content-Length: 504
Content-Type: application/json; charset=utf-8

{"name":"AM04","type":"CF","location":"Master Bedroom","tech":240,"actions":["BreezeOn","DecreaseSpeed","IncreaseSpeed","SetDirection","SetSpeed","SetTimer","Stop","ToggleDirection","ToggleDownLight","ToggleLight","TogglePower","ToggleUpLight","TurnDownLightOff","TurnDownLightOn","TurnLightOff","TurnLightOn","TurnOff","TurnOn","TurnUpLightOff","TurnUpLightOn"],"_":"a1c9eda7","__":"97172a3f","commands":{"_":"8cc6511a"},"state":{"_":"8e1cebf0"},"properties":{"_":"d4e2fa5b"},"skeds":{"_":"00000000"}}

Once you can get that, use the same command but add “/commands” to the end of it, like so:
curl -H "BOND-Token: aaaaaaaaaaaaaaaa" -i http://x.x.x.x/v2/devices/bbbbbbbbbbbbbbbb/commands

You should get a list of command IDs – now they don’t really make much sense right away, but we will look at them one by one to find which one corresponds to the “Toggle Light Power or Color” button on the OEM remote that you recorded:

HTTP/1.1 200 OK
BOND-Flags: 4
Content-Length: 314
Content-Type: application/json; charset=utf-8

{"_":"xxxxxxxxx","__":"xxxxxxxx","1111111111111111":{"_":"xxxxxxxx"},"2222222222222222":{"_":"xxxxxxxxx"},"3333333333333333":{"_":"xxxxxxxx"},"4444444444444444":{"_":"xxxxxxxxx"},"5555555555555555":{"_":"xxxxxxxx"},"6666666666666666":{"_":"xxxxxxxxx"},"7777777777777777":{"_":"xxxxxxxx"},"8888888888888888":{"_":"xxxxxxxxx"},"9999999999999999":{"_":"xxxxxxxx"}}

Pay close attention to the pattern above – we’re going to ignore anything in your version that corresponds to the x’s in my example version, and only focus on the pieces of your version that correspond to the 1, 2, 3, … 9.
For each of them, we’re going to add the /command/deviceID to the end of the command we’ve been using all along, to see what the name and details of each command are, until we find the one you want.

So your commands will now be something like this (remember to replace the 1111111111111111 or 9999999999999999 with your IDs that correspond to the same places as the example above):
curl -H "BOND-Token: aaaaaaaaaaaaaaaa" -i http://x.x.x.x/v2/devices/bbbbbbbbbbbbbbbb/commands/1111111111111111
up through
curl -H "BOND-Token: aaaaaaaaaaaaaaaa" -i http://x.x.x.x/v2/devices/bbbbbbbbbbbbbbbb/commands/9999999999999999.

For each one you should get some output like this:

HTTP/1.1 200 OK
BOND-Flags: 4
Content-Length: 248
Content-Type: application/json; charset=utf-8

{"name":"Lights OFF","action":"TurnLightOff","argument":null,"button_type":"tap","category_name":"Light","feedback":"state.light==0","icon":"light_off","hidden":false,"_":"315708c1","__":"286273e6","signal":{"_":"7bf6e21b"},"tx":{"_":"00000000"}}

This example of mine is a “Lights OFF” command – you are looking for a command ID that matches the name of whatever button you selected when you “raw-recorded” / taught the Bond Bridge your OEM remote’s light toggle key (which matches the button name in the Bond app you tap to turn the light on, switch colors, then turn off). Maybe it’s “Toggle Light”?

Finally, once you find that, you will have two options you can use for cURL commands (and eventually adapting to RESTful HA entities).
You can attempt to call the Command directly via TX:
curl -H "BOND-Token: aaaaaaaaaaaaaaaa" -i http://x.x.x.x/v2/devices/bbbbbbbbbbbbbbbb/commands/YourDesiredCommandIDhere/tx -X PUT -d "{}"

or you can identify the Action assigned to that Command (from the output above corresponding to “action”:DesiredActionName) and call the Action via its name:
curl -H "BOND-Token: aaaaaaaaaaaaaaaa" -i http://x.x.x.x/v2/devices/bbbbbbbbbbbbbbbb/actions/DesiredActionName -X PUT -d "{}"

3 Likes