Bond Home (bondhome.io)

I have the original Bond Bridge and 5 Emerson fans/lights tied to it. Going to implement your binding today.

Best, Jay

Just an FYI that I picked up the PR ([bondhome] New binding: Bond Home by SRGDamia1 · Pull Request #7260 · openhab/openhab-addons · GitHub) to try and get this merged into the main repo ([bondhome] New binding: Bond Home by ccutrer · Pull Request #13459 · openhab/openhab-addons · GitHub). It is not a drop-in replacement for the last published version from @SRGDamiano or @swamiller, since there were significant changes to the channel structure per review comments. You can find the JAR at Release Bond Home 2022-09-29 v1 · ccutrer/openhab-addons · GitHub.

1 Like

The new 2022-09-29 code does not handle the local hash in the new version of the api (v3.0.0). The local hash “__” is paired with the subtree hash “_” which you are accounting for.
It ends up throwing this:
[WARN ] [ernal.discovery.BondDiscoveryService] - Error getting devices for discovery: Bond API call to /v2/devices/__ failed: Unexpected http response:

I did not look further into the new code for similar issues, but the local hash also exists on Properties and State

Thanks for the report. I’ll get a fix up soon. My hub doesn’t support 3.0, but I’ve got a friend that just got a hub and had the same issue.

I am said friend, I’ll get a PR over to @ccutrer today. There was another v3 thing I ran into (addr is treated as a long in the code, but is defined as a string in the API) that I had to fix as well.

New pre-release JAR with the firmware v3 fixes at Release Bond Home 2022-11-03 v1 · ccutrer/openhab-addons · GitHub

1 Like

New pre-release JAR with I18n, a few smaller fixes from code review, and a fix for state bouncing back and forth due to improper handling of some BPUP updates: Release Bond Home 2022-11-25 v1 · ccutrer/openhab-addons · GitHub

The PR has been merged, and will be in 3.4.0.M6!

Great job and thank you!

I use to run v3.3 of BOND and it had addtional channels for the Fan Power, Last Updated and Stop.

There seems to be only 2 channels now for v 3.4 for Fans which are Speed and Light.

How do you turn the Fan ON/OFF now with the Fan Speed? Use 0?

Best, Jay

You can send 0 or OFF to a Dimmer channel to turn it off. Remember that Dimmer is a subtype of Switch.

1 Like

Can I do this with a group of fans tied to a dimmer item?

gBondFanSpeed.sendCommand(new PercentType(66))

Best, Jay

Yes. In general sending a command to a group item just repeats that command to each member.

Hey @ccutrer,

Been getting this during OH startup, are you aware of it?

OH3.2 using this version → org.openhab.binding.bondhome-3.4.0-SNAPSHOT.jar

2023-06-23 05:30:40.731 [WARN ] [.openhab.binding.bondhome.internal.api.BondHttpApi] - Unable to execute device action!
java.io.IOException: java.util.concurrent.ExecutionException: java.io.EOFException: HttpConnectionOverHTTP@103fd3e::SocketChannelEndPoint@e1af6e{l=/192.168.0.32:34372,r=/192.168.0.151:80,ISHUT,fill=-,flush=W,to=3/0}{io=0/0,kio=0,kro=1}->HttpConnectionOverHTTP@103fd3e(l:/192.168.0.32:34372 <-> r:/192.168.0.151:80,closed=false)=>HttpChannelOverHTTP@1adde35(exchange=HttpExchange@13b84e{req=HttpRequest[PUT /v2/devices/0000001f/actions/TurnOff HTTP/1.1]@f3557f[TERMINATED/null] res=HttpResponse[null 0 null]@1a01b90[PENDING/null]})[send=HttpSenderOverHTTP@3b23a7(req=QUEUED,snd=COMPLETED,failure=null)[HttpGenerator@12730a6{s=START}],recv=HttpReceiverOverHTTP@1bfd650(rsp=IDLE,failure=null)[HttpParser{s=CLOSED,0 of -1}]]
	at org.openhab.binding.bondhome.internal.api.BondHttpApi.executeDeviceAction(BondHttpApi.java:202) [bundleFile:?]
	at org.openhab.binding.bondhome.internal.handler.BondDeviceHandler.handleCommand(BondDeviceHandler.java:198) [bundleFile:?]
	at jdk.internal.reflect.GeneratedMethodAccessor204.invoke(Unknown Source) ~[?:?]
	at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
	at java.lang.reflect.Method.invoke(Method.java:566) ~[?:?]
	at org.openhab.core.internal.common.AbstractInvocationHandler.invokeDirect(AbstractInvocationHandler.java:154) [bundleFile:?]
	at org.openhab.core.internal.common.InvocationHandlerSync.invoke(InvocationHandlerSync.java:59) [bundleFile:?]
	at com.sun.proxy.$Proxy1785.handleCommand(Unknown Source) [?:?]
	at org.openhab.core.thing.internal.profiles.ProfileCallbackImpl.handleCommand(ProfileCallbackImpl.java:80) [bundleFile:?]
	at org.openhab.core.thing.internal.profiles.SystemDefaultProfile.onCommandFromItem(SystemDefaultProfile.java:48) [bundleFile:?]
	at jdk.internal.reflect.GeneratedMethodAccessor203.invoke(Unknown Source) ~[?:?]
	at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
	at java.lang.reflect.Method.invoke(Method.java:566) ~[?:?]
	at org.openhab.core.internal.common.AbstractInvocationHandler.invokeDirect(AbstractInvocationHandler.java:154) [bundleFile:?]
	at org.openhab.core.internal.common.Invocation.call(Invocation.java:52) [bundleFile:?]
	at java.util.concurrent.FutureTask.run(FutureTask.java:264) [?:?]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) [?:?]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) [?:?]
	at java.lang.Thread.run(Thread.java:829) [?:?]
Caused by: java.util.concurrent.ExecutionException: java.io.EOFException: HttpConnectionOverHTTP@103fd3e::SocketChannelEndPoint@e1af6e{l=/192.168.0.32:34372,r=/192.168.0.151:80,ISHUT,fill=-,flush=W,to=3/0}{io=0/0,kio=0,kro=1}->HttpConnectionOverHTTP@103fd3e(l:/192.168.0.32:34372 <-> r:/192.168.0.151:80,closed=false)=>HttpChannelOverHTTP@1adde35(exchange=HttpExchange@13b84e{req=HttpRequest[PUT /v2/devices/0000001f/actions/TurnOff HTTP/1.1]@f3557f[TERMINATED/null] res=HttpResponse[null 0 null]@1a01b90[PENDING/null]})[send=HttpSenderOverHTTP@3b23a7(req=QUEUED,snd=COMPLETED,failure=null)[HttpGenerator@12730a6{s=START}],recv=HttpReceiverOverHTTP@1bfd650(rsp=IDLE,failure=null)[HttpParser{s=CLOSED,0 of -1}]]
	at org.eclipse.jetty.client.util.FutureResponseListener.getResult(FutureResponseListener.java:118) ~[?:?]
	at org.eclipse.jetty.client.util.FutureResponseListener.get(FutureResponseListener.java:101) ~[?:?]
	at org.eclipse.jetty.client.HttpRequest.send(HttpRequest.java:730) ~[?:?]
	at org.openhab.binding.bondhome.internal.api.BondHttpApi.executeDeviceAction(BondHttpApi.java:200) ~[?:?]
	... 18 more
Caused by: java.io.EOFException: HttpConnectionOverHTTP@103fd3e::SocketChannelEndPoint@e1af6e{l=/192.168.0.32:34372,r=/192.168.0.151:80,ISHUT,fill=-,flush=W,to=3/0}{io=0/0,kio=0,kro=1}->HttpConnectionOverHTTP@103fd3e(l:/192.168.0.32:34372 <-> r:/192.168.0.151:80,closed=false)=>HttpChannelOverHTTP@1adde35(exchange=HttpExchange@13b84e{req=HttpRequest[PUT /v2/devices/0000001f/actions/TurnOff HTTP/1.1]@f3557f[TERMINATED/null] res=HttpResponse[null 0 null]@1a01b90[PENDING/null]})[send=HttpSenderOverHTTP@3b23a7(req=QUEUED,snd=COMPLETED,failure=null)[HttpGenerator@12730a6{s=START}],recv=HttpReceiverOverHTTP@1bfd650(rsp=IDLE,failure=null)[HttpParser{s=CLOSED,0 of -1}]]
	at org.eclipse.jetty.client.http.HttpReceiverOverHTTP.earlyEOF(HttpReceiverOverHTTP.java:376) ~[?:?]
	at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:1614) ~[?:?]
	at org.eclipse.jetty.client.http.HttpReceiverOverHTTP.shutdown(HttpReceiverOverHTTP.java:259) ~[?:?]
	at org.eclipse.jetty.client.http.HttpReceiverOverHTTP.process(HttpReceiverOverHTTP.java:181) ~[?:?]
	at org.eclipse.jetty.client.http.HttpReceiverOverHTTP.receive(HttpReceiverOverHTTP.java:79) ~[?:?]
	at org.eclipse.jetty.client.http.HttpChannelOverHTTP.receive(HttpChannelOverHTTP.java:131) ~[?:?]
	at org.eclipse.jetty.client.http.HttpConnectionOverHTTP.onFillable(HttpConnectionOverHTTP.java:172) ~[?:?]
	at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311) ~[?:?]
	at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105) ~[?:?]
	at org.eclipse.jetty.io.ChannelEndPoint$1.run(ChannelEndPoint.java:104) ~[?:?]
	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:338) ~[?:?]
	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:315) ~[?:?]
	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:173) ~[?:?]
	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:131) ~[?:?]
	at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:386) ~[?:?]
	at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:883) ~[?:?]
	at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1034) ~[?:?]
	... 1 more

Best, Jay

I have not seen that, no. Do commands work through openHAB after boot is complete?