Bond Home (bondhome.io)

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.]

I was able to get the same error. I tweaked the scheduling slightly and am not getting it now. Can you test again: https://drive.google.com/open?id=1C5xP2fQHfMq2Auw8gURfx1yI_FAhonXz

Make sure you stop and clear your cache before you add the new binding:

sudo systemctl stop openhab2.service
sudo openhab-cli clean-cache
sudo systemctl restart openhab2.service

I think you might have more devices tied to your Bond bridge than I do, and definitely different devices, so I really appreciate your testing. I have 5 fans (4 with lights) and a TV that I use as a generic device just so Alexa can turn it on and off.

Also, for some reason for me every time I clear the cache half of my bindings won’t load. I always end up stopping openHab on my pi, clearing the cache, restarting it, waiting for it to load and spit out errors, and then restarting again without clearing the cache. My pi particularly dislikes the Alexa/Echo control binding.

So if the first time you reload everything after clearing the cache it all bombs out, please try again. (Sorry!)

This is normal. I have the same issues starting with OH 2.3 on a Synology NAS.

Best, Jay

Thanks for the updated version.

I stopped the previous version of the binding via the karaf console, stopped OH, removed the previous version and copied the updated version to openhab_addons/. I cleared cache and tmp before restarting OH. (The goofy startup after clearing cache and tmp is, in my experience, normal.) I’m still getting errors for some, but not all Bond devices. I tried restarting again this morning with the same results.

I confirmed that I only have a single version of the bondhome binding installed:

openhab> bundle:list -s -r | grep bondhome
203 │ Active │  80 │ 2.5.4.202004020344      │ org.openhab.binding.bondhome                             │ [osgi.identity; type="osgi.bundle"; version:Version="2.5.4.202004020344"; osgi.identity="org.openhab.binding.bondhome"]

Statuses of my Bond things after restarting OH:

bondhome:bondBridge:BondHub (Type=Bridge, Status=OFFLINE (COMMUNICATION_ERROR): Unable get Bond bridge version via API, Label=Bond Home Bridge, Bridge=null)
bondhome:bondFan:BondHub:1e516d36 (Type=Thing, Status=ONLINE, Label=Guest 1 Ceiling Fan, Bridge=bondhome:bondBridge:BondHub)
bondhome:bondFan:BondHub:1f7b46ee (Type=Thing, Status=OFFLINE (CONFIGURATION_ERROR): Bond API call to /v2/devices/1f7b46ee failed: java.util.concurrent.ExecutionException: java.io.EOFException: HttpConnectionOverHTTP@40e9847a::SocketChannelEndPoint@3d881778{/192.168.1.212:80<->/192.168.1.253:55522,ISHUT,fill=-,flush=-,to=0/0}{io=0/0,kio=0,kro=1}->HttpConnectionOverHTTP@40e9847a(l:/192.168.1.253:55522 <-> r:/192.168.1.212:80,closed=false)=>HttpChannelOverHTTP@6708dbcc(exchange=HttpExchange@77b28b12 req=TERMINATED/null@null res=PENDING/null@null)[send=HttpSenderOverHTTP@4810ee95(req=QUEUED,snd=COMPLETED,failure=null)[HttpGenerator@355e1338{s=START}],recv=HttpReceiverOverHTTP@14a968e4(rsp=IDLE,failure=null)[HttpParser{s=CLOSED,0 of -1}]], Label=Guest 2 Ceiling Fan, Bridge=bondhome:bondBridge:BondHub)
bondhome:bondFan:BondHub:42d91be2 (Type=Thing, Status=OFFLINE (CONFIGURATION_ERROR): Bond API call to /v2/devices/42d91be2/properties failed: java.util.concurrent.ExecutionException: java.io.EOFException: HttpConnectionOverHTTP@168dea56::SocketChannelEndPoint@3317bd50{/192.168.1.212:80<->/192.168.1.253:55494,ISHUT,fill=-,flush=-,to=1/0}{io=0/0,kio=0,kro=1}->HttpConnectionOverHTTP@168dea56(l:/192.168.1.253:55494 <-> r:/192.168.1.212:80,closed=false)=>HttpChannelOverHTTP@6515928d(exchange=HttpExchange@3f60f2c0 req=TERMINATED/null@null res=PENDING/null@null)[send=HttpSenderOverHTTP@266021fd(req=QUEUED,snd=COMPLETED,failure=null)[HttpGenerator@2813f55c{s=START}],recv=HttpReceiverOverHTTP@615b8b29(rsp=IDLE,failure=null)[HttpParser{s=CLOSED,0 of -1}]], Label=Master Ceiling Fan, Bridge=bondhome:bondBridge:BondHub)
bondhome:bondShades:BondHub:02fdc065 (Type=Thing, Status=OFFLINE (CONFIGURATION_ERROR): Bond API call to /v2/devices/02fdc065 failed: java.util.concurrent.ExecutionException: java.io.EOFException: HttpConnectionOverHTTP@62a41542::SocketChannelEndPoint@5a607e97{/192.168.1.212:80<->/192.168.1.253:55490,ISHUT,fill=-,flush=-,to=24/0}{io=0/0,kio=0,kro=1}->HttpConnectionOverHTTP@62a41542(l:/192.168.1.253:55490 <-> r:/192.168.1.212:80,closed=false)=>HttpChannelOverHTTP@464b26fb(exchange=HttpExchange@64a85af2 req=TERMINATED/null@null res=PENDING/null@null)[send=HttpSenderOverHTTP@201ef6e9(req=QUEUED,snd=COMPLETED,failure=null)[HttpGenerator@79d3a0bb{s=START}],recv=HttpReceiverOverHTTP@66302d84(rsp=IDLE,failure=null)[HttpParser{s=CLOSED,0 of -1}]], Label=Guest 1 Shade, Bridge=bondhome:bondBridge:BondHub)
bondhome:bondShades:BondHub:21f89265 (Type=Thing, Status=OFFLINE (CONFIGURATION_ERROR): Bond API call to /v2/devices/21f89265 failed: java.util.concurrent.ExecutionException: java.nio.channels.ClosedChannelException, Label=Office W Shades, Bridge=bondhome:bondBridge:BondHub)
bondhome:bondShades:BondHub:37823011 (Type=Thing, Status=OFFLINE (CONFIGURATION_ERROR): Bond API call to /v2/devices/37823011 failed: java.util.concurrent.ExecutionException: java.io.EOFException: HttpConnectionOverHTTP@6270719::SocketChannelEndPoint@1721329b{/192.168.1.212:80<->/192.168.1.253:55508,ISHUT,fill=-,flush=-,to=0/0}{io=0/0,kio=0,kro=1}->HttpConnectionOverHTTP@6270719(l:/192.168.1.253:55508 <-> r:/192.168.1.212:80,closed=false)=>HttpChannelOverHTTP@5223be1b(exchange=HttpExchange@562a3b5 req=TERMINATED/null@null res=PENDING/null@null)[send=HttpSenderOverHTTP@633ba88d(req=QUEUED,snd=COMPLETED,failure=null)[HttpGenerator@7d90eb9b{s=START}],recv=HttpReceiverOverHTTP@320c4154(rsp=IDLE,failure=null)[HttpParser{s=CLOSED,0 of -1}]], Label=Dining E Shades, Bridge=bondhome:bondBridge:BondHub)
bondhome:bondShades:BondHub:43ad5f9f (Type=Thing, Status=OFFLINE (CONFIGURATION_ERROR): Bond API call to /v2/devices/43ad5f9f/properties failed: java.util.concurrent.ExecutionException: java.io.EOFException: HttpConnectionOverHTTP@7e5d2e36::SocketChannelEndPoint@74d2e7e4{/192.168.1.212:80<->/192.168.1.253:55510,ISHUT,fill=-,flush=-,to=0/0}{io=0/0,kio=0,kro=1}->HttpConnectionOverHTTP@7e5d2e36(l:/192.168.1.253:55510 <-> r:/192.168.1.212:80,closed=false)=>HttpChannelOverHTTP@37452a35(exchange=HttpExchange@4ded2f1a req=TERMINATED/null@null res=PENDING/null@null)[send=HttpSenderOverHTTP@2cdc8eac(req=QUEUED,snd=COMPLETED,failure=null)[HttpGenerator@4f52b114{s=START}],recv=HttpReceiverOverHTTP@51d83e49(rsp=IDLE,failure=null)[HttpParser{s=CLOSED,0 of -1}]], Label=Portal SW Shade, Bridge=bondhome:bondBridge:BondHub)
bondhome:bondShades:BondHub:492e89d1 (Type=Thing, Status=ONLINE, Label=Dining S Shade, Bridge=bondhome:bondBridge:BondHub)
bondhome:bondShades:BondHub:4969f173 (Type=Thing, Status=ONLINE, Label=Media Room Shade, Bridge=bondhome:bondBridge:BondHub)
bondhome:bondShades:BondHub:591d09a2 (Type=Thing, Status=ONLINE, Label=Portal NW Shade, Bridge=bondhome:bondBridge:BondHub)
bondhome:bondShades:BondHub:6104bec5 (Type=Thing, Status=OFFLINE (CONFIGURATION_ERROR): Bond API call to /v2/devices/6104bec5/properties failed: java.util.concurrent.ExecutionException: org.eclipse.jetty.io.EofException, Label=Master W Shades, Bridge=bondhome:bondBridge:BondHub)
bondhome:bondShades:BondHub:6385a8f6 (Type=Thing, Status=ONLINE, Label=Office N Shade, Bridge=bondhome:bondBridge:BondHub)
bondhome:bondShades:BondHub:7a9c7488 (Type=Thing, Status=OFFLINE (CONFIGURATION_ERROR): Bond API call to /v2/devices/7a9c7488/properties failed: java.util.concurrent.ExecutionException: java.io.EOFException: HttpConnectionOverHTTP@5ecd7462::SocketChannelEndPoint@12ec2fde{/192.168.1.212:80<->/192.168.1.253:55498,ISHUT,fill=-,flush=-,to=0/0}{io=0/0,kio=0,kro=1}->HttpConnectionOverHTTP@5ecd7462(l:/192.168.1.253:55498 <-> r:/192.168.1.212:80,closed=false)=>HttpChannelOverHTTP@242e4e1e(exchange=HttpExchange@6a596251 req=TERMINATED/null@null res=PENDING/null@null)[send=HttpSenderOverHTTP@755ea26e(req=QUEUED,snd=COMPLETED,failure=null)[HttpGenerator@63ff1c4{s=START}],recv=HttpReceiverOverHTTP@50b711a3(rsp=IDLE,failure=null)[HttpParser{s=CLOSED,0 of -1}]], Label=Master N Shades, Bridge=bondhome:bondBridge:BondHub)
bondhome:bondShades:BondHub:7d46c364 (Type=Thing, Status=ONLINE, Label=Great Room Screen, Bridge=bondhome:bondBridge:BondHub)

Logs:
bondhome.log (86.5 KB)

I can fix the “broken” things by deleting and rediscovering them.

Thanks for working to sort this out!

I’ll keep working on it.

Before deleting and recreating non working things, try disabling and then re-enabling them. That also causes it to reinitialize and saves you some annoying data entry.

I’ll give that a try next time I restart OH, thanks.

Is this the place for the latest Bond JAR build? I’m ready to start testing this in OH setup.

Best, Jay

@jwiseman - yes, that should be the one

Hey Scott,

Before I drop this JAR into my OH system; is everything working OK with yours? I don’t have blinds; mine is truly only fans and fan lights (5x). Right now; I’m using Amazon routines to turn these devices on/off with routines with OH calling them which has been pretty solid for the last year.

Best, Jay

My experience was that I had to delete and rediscover most of my Bond Home things every time I restarted OH. The binding shows promise, but is still pretty rough around the edges.

I’m not criticizing @SRGDamiano, I understand that, like you, she also has no blinds or shades that she is using with her OH setup, so I really appreciate her taking time to look at the issues I had with the binding.

@scottk - is okay. I appreciate you even trying the binding. I’ve submitted a pull request for it, but I’m fully expecting it to need more work and not expecting it to be accepted any time soon.

@jwiseman it mostly works for me. I really created the binding for the very narrow use case of being able to use a tasmota smart switch to turn off my overhead light from the main light switch without also turning off the fan or waiting for the back and forth to the Alexa cloud. All the other functions work for me and I haven’t had issues with needing to recreat over and over, but it’s also not as stable or dependable as the Bond Alexa skill. If your already have everything working to your satisfaction, I’m not sure you’ll get a huge benefit by changing.

@SRGDamiano I am trying to use your Bond Home binding with Smart by Bond fans. It is able to recognize the Bond Bridge that is built into the fan and discover the devices. But after that the binding is getting stuck since it is probably expecting some values that only a Bridge provides and not Smart by Bond.

I could modify your binding, but I don’t know how to compile and package it as a jar to test it.

Would you be able to send me some simple instructions on how to compile and create the jar.

I have been a programmer in the past and I can follow along. However, I have never developed a binding for Openhab and hence your tips will help me customize your binding. I will be happy to contribute my code back to you.

I have a Smart by Bond fan as well and would be happy to test. I don’t code so I can’t help with that aspect of it…