Bond Home (bondhome.io)

One thing that’s disappointing from the start…

State feedback is not implemented

Seems like you could get control through the http or execute (with curl) bindings… this is their example for setting the fan speed.

http://192.100.0.61/v2/devices/79135791/actions/SetSpeed -X PUT -d '{"argument": 3}'

Squid

I’ve been using Alexa Routines to execute the commands for Bond (Fans are Smart Devices in Alexa) for the past year now.

The native app for Bond does have a state feature they implemented about 6 months ago; guess they didn’t implement it in the API yet.

I’ve even wrote them about OH many months ago for an integration piece; they sent a canned response saying they will investigate it.

Best, Jay

State feedback works for all Bond devices over the V2 API. The one gatcha is, with Bond Bridge, the state may be wrong if you use the factory remote (since the Bridge doesn’t know you changed the speed/light). — Smart by Bond fans don’t have that problem, as the remote is tied into the Bond chip in the fan.

Hi Bond,

Do you have an OpenHAB binding for us to try?

Best, Jay

I just received Bond’s email newsletter for their API and links to competitors of OH via gitHub interfaces.


We believe that smart homes should be simple, reliable, and affordable. But a truly smart home is a home where everything is connected and works together seamlessly. With this in mind, we just launched a local OpenAPI enable developers to easily create and share integrations with other platforms.

It takes a village! We’re inviting you to be part of it.

We could not have achieved this goal without the help and input from our Forum Community, so we’d like to take this moment to thank our communiy and Beta testers. If you haven’t yet joined this team, and are curious about what the future holds for smart homes this is a must. Check out the discussions here: https://forum.bondhome.io/

Our new OpenAPI drivers allow anyone with basic coding skills to develop custom solutions and functionality for integrating local Wi-Fi with home automation systems. Here are a few examples of what has already been developed:

Bond integration for Control 4 - ceiling fans, motorized shades, & fireplaces **URC support coming soon

Bond Integration for ELAN - ceiling fans and motorized shades

Bond Integration for Hubitat. This currently supports both fireplaces and fans. https://github.com/dcmeglio/hubitat-bond

Bond Plug-in for Homebridge . This makes Bond available in HomeKit https://github.com/aarons22/homebridge-bond

Looks like the easiest out-of-the-box integration would be to set up your Bond bridge to talk to a custom MQTT broker, and then use the pre-existing MQTT Binding.

I’m in the process of trying this myself and will report back here if/when I get it working.

UPDATE: I asked on the BondHome forums about the MQTT binding and unfortunately it is very poorly documented at the moment, so it looks like this is not an easy path to integration

I ended up having Alexa discover the Bond devices and then use Alexa routines via OH to control it the devices.

Best, Jay

I seen this post last year, and meant to mess around and look into a binding, but things happened, long story short, OH/Zwave network destroyed in an update with no backups, finally got around to rebuilding it. Also, my Bond version was one of the originals, so it wasn’t as straight forward to update it to a beta.

Today I found some time and updated my Bond to firmware 2.x, then tested out the v2 API from Bond, looks fairly straight forward. Following instructions from http://docs-local.appbond.com/#section/Getting-Started/Finding-the-Bond-IP, I was able to control my Bond devices, and it worked well. I’m not experienced with writing bindings, but have wanted to look into it, maybe this is good kickstart.

#You can search for all Bonds on your local network. On Linux, do:
avahi-browse -a | grep bond

#And on MacOS, do:
dns-sd -B _bond._tcp .

#get bond version
curl -i http://<IP>/v2/sys/version

#get bond token (to get token, you need to power cycle bond)
curl -i http://<IP>/v2/token

#get devices, this would be to get a list of things in OH
#devices can be of types
##CF : Ceiling Fan
##FP : Fireplace
##MS : Motorized Shades
##GX : Generic device
curl -H "BOND-Token: <token>" -i http://<ip>/v2/devices

#get info on device, this would get a list of channels in for each device in OH
curl -H "BOND-Token: <token>" -i http://<ip>/v2/devices/<device id>

These would be the actions associated with items in OH

#send action with arguments (below is setting the speed of a device)
curl -H "BOND-Token: <token>" -i http://<ip>/v2/devices/<device id>/actions/SetSpeed -X PUT -d "{\"argument\": 1}"

#send action with no arguments (below is turning off a device)
curl -H "BOND-Token: <token>" -i http://<ip>/v2/devices/<device id>/actions/TogglePower -X PUT -d "{}"

2 Likes

I’ve been trying to command my bond with the http binding with zero success (although the comdmands work perfectly with PostMan). Have you tried the http binding or has the sysexec binding been what you’ve used?

I created a custom utility to surface Bond Home devices via MQTT here: https://github.com/ssmall/bondhome-mqtt

I thought it would be easier to use the existing MQTT bindings instead of having to invent a new binding specifically for Bond Home.

Use at your own risk! I’ve been using it for a short time in my local setup but I don’t have a lot of devices connected, so it may not work for everything. I’m happy to accept pull requests if anybody else is interested in contributing. I will continue to add features and fix bugs as I connect more devices and evolve my own personal OpenHAB installation.

I’ve also starting work on a binding here: https://github.com/SRGDamia1/openhab2-addons/tree/bondhome/bundles/org.openhab.binding.bondhome

Alright, I think I have something working. Here’s the jar: https://drive.google.com/open?id=1UuGl9diqNDLfcBShs2N47Nk7oskIUIpL

It should be able to discover and control any type of device, but it’s only tested on the fans and “generic” devices I have. You do have to set up everything with the Bond app first. It’s using the local HTTP api for discovery and periodic low-frequency polling and the BPUP protocol for immediate events.

Feedback is appreciated!

3 Likes

I had some time available this weekend so I thought I would try adding this binding to my OpenHAB setup here. I had some initial trouble sorting out how to configure the binding because initially it was not available to configure via either PaperUI or HABmin, it simply was not in the list of bindings available for configuring.

I then tried configuring the binding with a text configuration file. I looked at the source for the binding and found the configuration item IDs there, so I tried the following:

Thing	bondhome:bondBridge:bondhub	[ipAddress="192.168.1.212", localToken="xxxxxxxxxxxxxxxx", bondId="BH12345"]

That at least got things started, but still no joy. It seems the binding can’t be configured with a text configuration file, although it did get the localToken and bondId values. It seems it attempted to save the IP address, but as that can’t be saved when using text configuration, it failed.

I then deleted the text config file and restarted OH. The configuration setup for the bondBridge now appeared in PaperUI, where I set the localToken, bondId and ipAddress. Next, I used HABmin to discover new bondhome Things. All of my bond-connected shades and fans were discovered, but the shades, which I am most interested in operating through OH, don’t provide any appropriate channels for shade control, all channels provided are fan control channels.


The firmware version installed on my Bond hub is v2.10.21.

I suppose since you don’t have any shades connected to your Bond hub, I’ll have t sort this out from here, but any ideas you may have would be much appreciated.

Thanks!

1 Like

I’m sorry I missed this. I don’t have any shades myself, but I thought I had the channels right for them. But, obviously, I never tested it. I’ll check into it when I get a chance.

I’m not sure why the configuration files didn’t work for you; I prefer setting up with paper-UI, but the files should have worked.

@scottk - Would you mind setting your logging level for Bond home to “trace” and removing and re-adding the shades?

To set to trace, in org.ops4f.pax.logging.cfg in your userdata:

log4j2.logger.org_openhab_binding_bondhome.level = WARN
log4j2.logger.org_openhab_binding_bondhome.name = org.openhab.binding.bondhome

That was interesting! I tried to use my normal logging configuration, which sets up separate directories for each binding, but I could not get that to work for the Bond Home binding. I simply let it log to the root logger, which logs to logs/openhab.log.

2020-03-31 09:43:02.144 [TRACE][1255248921-1452][home.internal.BondHomeHandlerFactory] - Creating handler for Bond bridge
2020-03-31 09:43:02.149 [DEBUG][1255248921-1452][g.bondhome.internal.api.BPUPListener] - Starting BPUP Listener...
2020-03-31 09:43:02.151 [DEBUG][1255248921-1452][e.internal.handler.BondBridgeHandler] - Created a BondBridgeHandler for thing 'bondhome:bondBridge:BondHub'
2020-03-31 09:43:02.152 [TRACE][1255248921-1452][home.internal.BondHomeHandlerFactory] - Registering a discovery service for the Bond bridge.
2020-03-31 09:43:02.160 [DEBUG][    safeCall-14][e.internal.handler.BondBridgeHandler] - Start initializing the Bond bridge!
2020-03-31 09:43:02.162 [TRACE][    safeCall-14][e.internal.handler.BondBridgeHandler] - Attempting to get IP address for Bond Bridge BH35389.local
2020-03-31 09:43:43.232 [TRACE][1255248921-1453][e.internal.handler.BondBridgeHandler] - Disposing Bond Bridge handler
2020-03-31 09:43:43.233 [TRACE][1255248921-1453][e.internal.handler.BondBridgeHandler] - Stopping UDP listener job
2020-03-31 09:43:43.234 [DEBUG][1255248921-1453][e.internal.handler.BondBridgeHandler] - Start initializing the Bond bridge!
2020-03-31 09:43:43.235 [DEBUG][1255248921-1453][ng.bondhome.internal.api.BondHttpApi] - HTTP GET for to http://192.168.1.212/v2/sys/version
2020-03-31 09:43:43.305 [DEBUG][1255248921-1453][ng.bondhome.internal.api.BondHttpApi] - HTTP response from : {"target":"snowbird","fw_ver":"v2.10.21","fw_date":"Wed Feb 19 15:29:18 UTC 2020","uptime_s":597816,"bondid":"BH35389","upgrade_http":true,"api":2,"_":"d7e19f8a"}

... log was too large, full log upload follows

bond-binding.log (93.9 KB)

There are two fans that were not added to the list of discovered things during discovery. The channels for the shades are fan channels.

I appreciate you taking a look at this. If there is something more I can provide, please let me know.

Thanks again!

@scottk - Doh! I looked at your log and was stumped for a while. After searching all around, I realized the problem was right in the first configuration file I should have checked:

<channel-group id="shadeChannels" typeId="ceilingFanChannelGroup" />

Doh.

I’ll get you a new jar soon.

Here’s the new jar. The correct channels should reappear, but if they don’t after refreshing once or twice, try deleting and re-adding the things.

Thank you, @SRGDamiano! I’ll give it a try this morning.

That revision is looking better. I still get some errors for a couple shades when I restart OH2. I don’t see ERROR in the logs, but HABmin indicates that there were some initialization errors:

Sorry about the readability of that screen capture, my primary monitor died this morning so I had to fall back from UHD to HD, which left the typefaces I use looking pretty marginal.

I have uploaded logs from suuccessful discovery through several OH2 restarts.

bondhome.log (764.1 KB)

[Edit: I replaced the screen capture with one that I think may be more readable.]