Problem compiling org.openhab.binding.broadlink from themillhousegroup

Hello,
I am trying to update the code for the broadlink addin from @themillhousegroup. The idea is to have it running on OH 3.4.x so we can then make a PR and add it to the code.

I have managed to compile this code under the 3.4.x branch, and that is good news.

The bad news is that when trying to test it, the addin is detected by my openhab installation (3.4.1) but it does not show up on the web interface. I set the log level to debug on karaf, and can see the following:

18:43:46.298 [DEBUG] [link.internal.BroadlinkHandlerFactory] - bundle org.openhab.binding.broadlink:3.4.3.202303022236 (378)[org.openhab.binding.broadlink.internal.BroadlinkHandlerFactory] : BundleComponentActivator : ComponentHolder created.
18:43:46.308 [DEBUG] [l.discovery.BroadlinkDiscoveryService] - bundle org.openhab.binding.broadlink:3.4.3.202303022236 (378)[org.openhab.binding.broadlink.internal.discovery.BroadlinkDiscoveryService] : BundleComponentActivator : ComponentHolder created.
18:43:46.320 [DEBUG] [link.internal.BroadlinkHandlerFactory] - bundle org.openhab.binding.broadlink:3.4.3.202303022236 (378)[org.openhab.binding.broadlink.internal.BroadlinkHandlerFactory] : Component created: DS=DS13, implementation=org.openhab.binding.broadlink.internal.BroadlinkHandlerFactory, immediate=true, default-enabled=true, factory=null, configuration-policy=optional, activate=activate, deactivate=deactivate, modified=null configuration-pid=[binding.broadlink]
18:43:46.326 [DEBUG] [link.internal.BroadlinkHandlerFactory] - bundle org.openhab.binding.broadlink:3.4.3.202303022236 (378)[org.openhab.binding.broadlink.internal.BroadlinkHandlerFactory] : Component Services: scope=singleton, services=[org.openhab.core.thing.binding.ThingHandlerFactory]
18:43:46.339 [DEBUG] [link.internal.BroadlinkHandlerFactory] - bundle org.openhab.binding.broadlink:3.4.3.202303022236 (378)[org.openhab.binding.broadlink.internal.BroadlinkHandlerFactory] : Component Properties: {}
18:43:46.345 [DEBUG] [link.internal.BroadlinkHandlerFactory] - bundle org.openhab.binding.broadlink:3.4.3.202303022236 (378)[org.openhab.binding.broadlink.internal.BroadlinkHandlerFactory] : Querying state disabled
18:43:46.351 [DEBUG] [link.internal.BroadlinkHandlerFactory] - bundle org.openhab.binding.broadlink:3.4.3.202303022236 (378)[org.openhab.binding.broadlink.internal.BroadlinkHandlerFactory] : Querying state disabled
18:43:46.358 [DEBUG] [link.internal.BroadlinkHandlerFactory] - bundle org.openhab.binding.broadlink:3.4.3.202303022236 (378)[org.openhab.binding.broadlink.internal.BroadlinkHandlerFactory] : Component can not be activated since it is in state disabled
18:43:46.364 [DEBUG] [link.internal.BroadlinkHandlerFactory] - bundle org.openhab.binding.broadlink:3.4.3.202303022236 (378)[org.openhab.binding.broadlink.internal.BroadlinkHandlerFactory] : Querying state disabled
18:43:46.371 [DEBUG] [link.internal.BroadlinkHandlerFactory] - bundle org.openhab.binding.broadlink:3.4.3.202303022236 (378)[org.openhab.binding.broadlink.internal.BroadlinkHandlerFactory(519)] : Updating target filters
18:43:46.378 [DEBUG] [link.internal.BroadlinkHandlerFactory] - bundle org.openhab.binding.broadlink:3.4.3.202303022236 (378)[org.openhab.binding.broadlink.internal.BroadlinkHandlerFactory(519)] : Changed state from disabled to unsatisfiedReference
18:43:46.384 [DEBUG] [link.internal.BroadlinkHandlerFactory] - bundle org.openhab.binding.broadlink:3.4.3.202303022236 (378)[org.openhab.binding.broadlink.internal.BroadlinkHandlerFactory(519)] : Component enabled
18:43:46.390 [DEBUG] [link.internal.BroadlinkHandlerFactory] - bundle org.openhab.binding.broadlink:3.4.3.202303022236 (378)[org.openhab.binding.broadlink.internal.BroadlinkHandlerFactory(519)] : ActivateInternal
18:43:46.397 [DEBUG] [link.internal.BroadlinkHandlerFactory] - bundle org.openhab.binding.broadlink:3.4.3.202303022236 (378)[org.openhab.binding.broadlink.internal.BroadlinkHandlerFactory(519)] : Querying state unsatisfiedReference
18:43:46.403 [DEBUG] [link.internal.BroadlinkHandlerFactory] - bundle org.openhab.binding.broadlink:3.4.3.202303022236 (378)[org.openhab.binding.broadlink.internal.BroadlinkHandlerFactory(519)] : Querying state unsatisfiedReference
18:43:46.409 [DEBUG] [link.internal.BroadlinkHandlerFactory] - bundle org.openhab.binding.broadlink:3.4.3.202303022236 (378)[org.openhab.binding.broadlink.internal.BroadlinkHandlerFactory(519)] : Activating component from state unsatisfiedReference
18:43:46.415 [DEBUG] [link.internal.BroadlinkHandlerFactory] - bundle org.openhab.binding.broadlink:3.4.3.202303022236 (378)[org.openhab.binding.broadlink.internal.BroadlinkHandlerFactory(519)] : Querying state unsatisfiedReference
18:43:46.422 [DEBUG] [link.internal.BroadlinkHandlerFactory] - bundle org.openhab.binding.broadlink:3.4.3.202303022236 (378)[org.openhab.binding.broadlink.internal.BroadlinkHandlerFactory(519)] : Querying state unsatisfiedReference
18:43:46.428 [DEBUG] [link.internal.BroadlinkHandlerFactory] - bundle org.openhab.binding.broadlink:3.4.3.202303022236 (378)[org.openhab.binding.broadlink.internal.BroadlinkHandlerFactory(519)] : Changed state from unsatisfiedReference to satisfied
18:43:46.435 [DEBUG] [link.internal.BroadlinkHandlerFactory] - bundle org.openhab.binding.broadlink:3.4.3.202303022236 (378)[org.openhab.binding.broadlink.internal.BroadlinkHandlerFactory(519)] : registration change queue [registered]
18:43:46.466 [DEBUG] [link.internal.BroadlinkHandlerFactory] - bundle org.openhab.binding.broadlink:3.4.3.202303022236 (378)[org.openhab.binding.broadlink.internal.BroadlinkHandlerFactory(519)] : Checking constructor public org.openhab.binding.broadlink.internal.BroadlinkHandlerFactory()
18:43:46.473 [DEBUG] [link.internal.BroadlinkHandlerFactory] - bundle org.openhab.binding.broadlink:3.4.3.202303022236 (378)[org.openhab.binding.broadlink.internal.BroadlinkHandlerFactory(519)] : Found constructor with 0 arguments : public org.openhab.binding.broadlink.internal.BroadlinkHandlerFactory()
18:43:46.480 [DEBUG] [link.internal.BroadlinkHandlerFactory] - bundle org.openhab.binding.broadlink:3.4.3.202303022236 (378)[org.openhab.binding.broadlink.internal.BroadlinkHandlerFactory(519)] : This thread collected dependencies
18:43:46.487 [DEBUG] [link.internal.BroadlinkHandlerFactory] - bundle org.openhab.binding.broadlink:3.4.3.202303022236 (378)[org.openhab.binding.broadlink.internal.BroadlinkHandlerFactory(519)] : getService (single component manager) dependencies collected.
18:43:46.495 [DEBUG] [link.internal.BroadlinkHandlerFactory] - bundle org.openhab.binding.broadlink:3.4.3.202303022236 (378)[org.openhab.binding.broadlink.internal.BroadlinkHandlerFactory(519)] : Querying state satisfied
18:43:46.501 [DEBUG] [link.internal.BroadlinkHandlerFactory] - bundle org.openhab.binding.broadlink:3.4.3.202303022236 (378)[org.openhab.binding.broadlink.internal.BroadlinkHandlerFactory(519)] : Querying state satisfied
18:43:46.509 [DEBUG] [link.internal.BroadlinkHandlerFactory] - bundle org.openhab.binding.broadlink:3.4.3.202303022236 (378)[org.openhab.binding.broadlink.internal.BroadlinkHandlerFactory(519)] : getting activate: activate
18:43:46.517 [DEBUG] [link.internal.BroadlinkHandlerFactory] - bundle org.openhab.binding.broadlink:3.4.3.202303022236 (378)[org.openhab.binding.broadlink.internal.BroadlinkHandlerFactory(519)] : Locating method activate in class org.openhab.binding.broadlink.internal.BroadlinkHandlerFactory
18:43:46.525 [DEBUG] [link.internal.BroadlinkHandlerFactory] - bundle org.openhab.binding.broadlink:3.4.3.202303022236 (378)[org.openhab.binding.broadlink.internal.BroadlinkHandlerFactory(519)] : Declared Method org.openhab.binding.broadlink.internal.BroadlinkHandlerFactory.activate([interface org.osgi.service.component.ComponentContext]) not found
18:43:46.532 [DEBUG] [link.internal.BroadlinkHandlerFactory] - bundle org.openhab.binding.broadlink:3.4.3.202303022236 (378)[org.openhab.binding.broadlink.internal.BroadlinkHandlerFactory(519)] : Locating method activate in class org.openhab.core.thing.binding.BaseThingHandlerFactory
18:43:46.541 [DEBUG] [link.internal.BroadlinkHandlerFactory] - bundle org.openhab.binding.broadlink:3.4.3.202303022236 (378)[org.openhab.binding.broadlink.internal.BroadlinkHandlerFactory(519)] : Found activate method: protected void org.openhab.core.thing.binding.BaseThingHandlerFactory.activate(org.osgi.service.component.ComponentContext)
18:43:46.548 [DEBUG] [link.internal.BroadlinkHandlerFactory] - bundle org.openhab.binding.broadlink:3.4.3.202303022236 (378)[org.openhab.binding.broadlink.internal.BroadlinkHandlerFactory(519)] : invoking activate: activate: parameters [org.apache.felix.scr.impl.manager.ComponentContextImpl]
18:43:46.557 [DEBUG] [link.internal.BroadlinkHandlerFactory] - bundle org.openhab.binding.broadlink:3.4.3.202303022236 (378)[org.openhab.binding.broadlink.internal.BroadlinkHandlerFactory(519)] : invoked activate: activate
18:43:46.565 [DEBUG] [link.internal.BroadlinkHandlerFactory] - bundle org.openhab.binding.broadlink:3.4.3.202303022236 (378)[org.openhab.binding.broadlink.internal.BroadlinkHandlerFactory(519)] : Set implementation object for component
18:43:46.573 [DEBUG] [link.internal.BroadlinkHandlerFactory] - bundle org.openhab.binding.broadlink:3.4.3.202303022236 (378)[org.openhab.binding.broadlink.internal.BroadlinkHandlerFactory(519)] : Changed state from satisfied to active
18:43:46.584 [DEBUG] [l.discovery.BroadlinkDiscoveryService] - bundle org.openhab.binding.broadlink:3.4.3.202303022236 (378)[org.openhab.binding.broadlink.internal.discovery.BroadlinkDiscoveryService] : Component created: DS=DS13, implementation=org.openhab.binding.broadlink.internal.discovery.BroadlinkDiscoveryService, immediate=true, default-enabled=true, factory=null, configuration-policy=optional, activate=activate, deactivate=deactivate, modified=null configuration-pid=[discovery.broadlink]
18:43:46.592 [DEBUG] [l.discovery.BroadlinkDiscoveryService] - bundle org.openhab.binding.broadlink:3.4.3.202303022236 (378)[org.openhab.binding.broadlink.internal.discovery.BroadlinkDiscoveryService] : Component Services: scope=singleton, services=[org.openhab.core.config.discovery.DiscoveryService]
18:43:46.599 [DEBUG] [l.discovery.BroadlinkDiscoveryService] - bundle org.openhab.binding.broadlink:3.4.3.202303022236 (378)[org.openhab.binding.broadlink.internal.discovery.BroadlinkDiscoveryService] : Component Properties: {}
18:43:46.606 [DEBUG] [l.discovery.BroadlinkDiscoveryService] - bundle org.openhab.binding.broadlink:3.4.3.202303022236 (378)[org.openhab.binding.broadlink.internal.discovery.BroadlinkDiscoveryService] : Querying state disabled
18:43:46.615 [DEBUG] [l.discovery.BroadlinkDiscoveryService] - bundle org.openhab.binding.broadlink:3.4.3.202303022236 (378)[org.openhab.binding.broadlink.internal.discovery.BroadlinkDiscoveryService] : Querying state disabled
18:43:46.621 [DEBUG] [l.discovery.BroadlinkDiscoveryService] - bundle org.openhab.binding.broadlink:3.4.3.202303022236 (378)[org.openhab.binding.broadlink.internal.discovery.BroadlinkDiscoveryService] : Component can not be activated since it is in state disabled
18:43:46.629 [DEBUG] [l.discovery.BroadlinkDiscoveryService] - bundle org.openhab.binding.broadlink:3.4.3.202303022236 (378)[org.openhab.binding.broadlink.internal.discovery.BroadlinkDiscoveryService] : Querying state disabled
18:43:46.635 [DEBUG] [l.discovery.BroadlinkDiscoveryService] - bundle org.openhab.binding.broadlink:3.4.3.202303022236 (378)[org.openhab.binding.broadlink.internal.discovery.BroadlinkDiscoveryService(520)] : Updating target filters
18:43:46.643 [DEBUG] [l.discovery.BroadlinkDiscoveryService] - bundle org.openhab.binding.broadlink:3.4.3.202303022236 (378)[org.openhab.binding.broadlink.internal.discovery.BroadlinkDiscoveryService(520)] : Changed state from disabled to unsatisfiedReference
18:43:46.649 [DEBUG] [l.discovery.BroadlinkDiscoveryService] - bundle org.openhab.binding.broadlink:3.4.3.202303022236 (378)[org.openhab.binding.broadlink.internal.discovery.BroadlinkDiscoveryService(520)] : Component enabled
18:43:46.657 [DEBUG] [l.discovery.BroadlinkDiscoveryService] - bundle org.openhab.binding.broadlink:3.4.3.202303022236 (378)[org.openhab.binding.broadlink.internal.discovery.BroadlinkDiscoveryService(520)] : ActivateInternal
18:43:46.663 [DEBUG] [l.discovery.BroadlinkDiscoveryService] - bundle org.openhab.binding.broadlink:3.4.3.202303022236 (378)[org.openhab.binding.broadlink.internal.discovery.BroadlinkDiscoveryService(520)] : Querying state unsatisfiedReference
18:43:46.670 [DEBUG] [l.discovery.BroadlinkDiscoveryService] - bundle org.openhab.binding.broadlink:3.4.3.202303022236 (378)[org.openhab.binding.broadlink.internal.discovery.BroadlinkDiscoveryService(520)] : Querying state unsatisfiedReference
18:43:46.678 [DEBUG] [l.discovery.BroadlinkDiscoveryService] - bundle org.openhab.binding.broadlink:3.4.3.202303022236 (378)[org.openhab.binding.broadlink.internal.discovery.BroadlinkDiscoveryService(520)] : Activating component from state unsatisfiedReference
18:43:46.684 [DEBUG] [l.discovery.BroadlinkDiscoveryService] - bundle org.openhab.binding.broadlink:3.4.3.202303022236 (378)[org.openhab.binding.broadlink.internal.discovery.BroadlinkDiscoveryService(520)] : Querying state unsatisfiedReference
18:43:46.691 [DEBUG] [l.discovery.BroadlinkDiscoveryService] - bundle org.openhab.binding.broadlink:3.4.3.202303022236 (378)[org.openhab.binding.broadlink.internal.discovery.BroadlinkDiscoveryService(520)] : Querying state unsatisfiedReference
18:43:46.698 [DEBUG] [l.discovery.BroadlinkDiscoveryService] - bundle org.openhab.binding.broadlink:3.4.3.202303022236 (378)[org.openhab.binding.broadlink.internal.discovery.BroadlinkDiscoveryService(520)] : Changed state from unsatisfiedReference to satisfied
18:43:46.705 [DEBUG] [l.discovery.BroadlinkDiscoveryService] - bundle org.openhab.binding.broadlink:3.4.3.202303022236 (378)[org.openhab.binding.broadlink.internal.discovery.BroadlinkDiscoveryService(520)] : registration change queue [registered]
18:43:46.721 [DEBUG] [l.discovery.BroadlinkDiscoveryService] - bundle org.openhab.binding.broadlink:3.4.3.202303022236 (378)[org.openhab.binding.broadlink.internal.discovery.BroadlinkDiscoveryService(520)] : Checking constructor public org.openhab.binding.broadlink.internal.discovery.BroadlinkDiscoveryService()
18:43:46.730 [DEBUG] [l.discovery.BroadlinkDiscoveryService] - bundle org.openhab.binding.broadlink:3.4.3.202303022236 (378)[org.openhab.binding.broadlink.internal.discovery.BroadlinkDiscoveryService(520)] : Found constructor with 0 arguments : public org.openhab.binding.broadlink.internal.discovery.BroadlinkDiscoveryService()
18:43:46.736 [DEBUG] [l.discovery.BroadlinkDiscoveryService] - bundle org.openhab.binding.broadlink:3.4.3.202303022236 (378)[org.openhab.binding.broadlink.internal.discovery.BroadlinkDiscoveryService(520)] : This thread collected dependencies
18:43:46.744 [DEBUG] [l.discovery.BroadlinkDiscoveryService] - bundle org.openhab.binding.broadlink:3.4.3.202303022236 (378)[org.openhab.binding.broadlink.internal.discovery.BroadlinkDiscoveryService(520)] : getService (single component manager) dependencies collected.
18:43:46.751 [DEBUG] [l.discovery.BroadlinkDiscoveryService] - bundle org.openhab.binding.broadlink:3.4.3.202303022236 (378)[org.openhab.binding.broadlink.internal.discovery.BroadlinkDiscoveryService(520)] : Querying state satisfied
18:43:46.758 [DEBUG] [l.discovery.BroadlinkDiscoveryService] - bundle org.openhab.binding.broadlink:3.4.3.202303022236 (378)[org.openhab.binding.broadlink.internal.discovery.BroadlinkDiscoveryService(520)] : Querying state satisfied
18:43:46.766 [INFO ] [l.discovery.BroadlinkDiscoveryService] - BroadlinkDiscoveryService - Constructed
18:43:46.774 [DEBUG] [l.discovery.BroadlinkDiscoveryService] - bundle org.openhab.binding.broadlink:3.4.3.202303022236 (378)[org.openhab.binding.broadlink.internal.discovery.BroadlinkDiscoveryService(520)] : getting activate: activate
18:43:46.781 [DEBUG] [l.discovery.BroadlinkDiscoveryService] - bundle org.openhab.binding.broadlink:3.4.3.202303022236 (378)[org.openhab.binding.broadlink.internal.discovery.BroadlinkDiscoveryService(520)] : Locating method activate in class org.openhab.binding.broadlink.internal.discovery.BroadlinkDiscoveryService
18:43:46.789 [DEBUG] [l.discovery.BroadlinkDiscoveryService] - bundle org.openhab.binding.broadlink:3.4.3.202303022236 (378)[org.openhab.binding.broadlink.internal.discovery.BroadlinkDiscoveryService(520)] : Declared Method org.openhab.binding.broadlink.internal.discovery.BroadlinkDiscoveryService.activate([interface org.osgi.service.component.ComponentContext]) not found
18:43:46.795 [DEBUG] [l.discovery.BroadlinkDiscoveryService] - bundle org.openhab.binding.broadlink:3.4.3.202303022236 (378)[org.openhab.binding.broadlink.internal.discovery.BroadlinkDiscoveryService(520)] : Locating method activate in class org.openhab.core.config.discovery.AbstractDiscoveryService
18:43:46.804 [DEBUG] [l.discovery.BroadlinkDiscoveryService] - bundle org.openhab.binding.broadlink:3.4.3.202303022236 (378)[org.openhab.binding.broadlink.internal.discovery.BroadlinkDiscoveryService(520)] : Declared Method org.openhab.core.config.discovery.AbstractDiscoveryService.activate([interface org.osgi.service.component.ComponentContext]) not found
18:43:46.811 [DEBUG] [l.discovery.BroadlinkDiscoveryService] - bundle org.openhab.binding.broadlink:3.4.3.202303022236 (378)[org.openhab.binding.broadlink.internal.discovery.BroadlinkDiscoveryService(520)] : Found activate method: protected void org.openhab.core.config.discovery.AbstractDiscoveryService.activate(java.util.Map)
18:43:46.820 [DEBUG] [l.discovery.BroadlinkDiscoveryService] - bundle org.openhab.binding.broadlink:3.4.3.202303022236 (378)[org.openhab.binding.broadlink.internal.discovery.BroadlinkDiscoveryService(520)] : invoking activate: activate: parameters [org.apache.felix.scr.impl.helper.ReadOnlyDictionary]
18:43:46.827 [DEBUG] [l.discovery.BroadlinkDiscoveryService] - bundle org.openhab.binding.broadlink:3.4.3.202303022236 (378)[org.openhab.binding.broadlink.internal.discovery.BroadlinkDiscoveryService(520)] : invoked activate: activate
18:43:46.834 [DEBUG] [l.discovery.BroadlinkDiscoveryService] - bundle org.openhab.binding.broadlink:3.4.3.202303022236 (378)[org.openhab.binding.broadlink.internal.discovery.BroadlinkDiscoveryService(520)] : Set implementation object for component
18:43:46.841 [DEBUG] [l.discovery.BroadlinkDiscoveryService] - bundle org.openhab.binding.broadlink:3.4.3.202303022236 (378)[org.openhab.binding.broadlink.internal.discovery.BroadlinkDiscoveryService(520)] : Changed state from satisfied to active
18:43:50.636 [DEBUG] [l.discovery.BroadlinkDiscoveryService] - bundle org.openhab.binding.broadlink:3.4.3.202303022236 (378)[org.openhab.binding.broadlink.internal.discovery.BroadlinkDiscoveryService(520)] : Querying state active
18:43:50.645 [DEBUG] [link.internal.BroadlinkHandlerFactory] - bundle org.openhab.binding.broadlink:3.4.3.202303022236 (378)[org.openhab.binding.broadlink.internal.BroadlinkHandlerFactory(519)] : Querying state active

Does anyone that is more familiar with the addin system see something obvious on why the addin does not show up in my OpenHAB interface? I remember being able to compile and run this on 3.2.x without issues.

Thanks!

Pinging @flo-02-mu , @andre , @themillhousegroup .

Thanks!

Sorry, I can t help with compiling java bindings. Out of my depth there.

It’s ok, this has been fixed. Thanks!

2 Likes

Perhaps write how it was fixed in case someone has the same issue in future and gets a hit on your thread with the errors the compiler was throwing. Thanks for taking this on, just be sure to look into why the other binding was updated and if this will be an issue when you ask this work to be merged. I don’t know the history as have not following all posts and I don’t have the hardware to care enough to do that.

Hello @matt1

Perhaps write how it was fixed in case someone has the same issue in future and gets a hit on your thread with the errors the compiler was throwing.

The errors above are not from the compiler, they are from OpenHAB karaf log.
It looks like these issues arise from me installing the different versions of the bundle (3.2, 3.4, etc) )at the same time in my OIpenHAB instance.
Compilation of the bundle ran clean, and once i cleaned up my instance, everything started working as expected.

just be sure to look into why the other binding was updated and if this will be an issue when you ask this work to be merged.

I am not sure what do you mean by this?

Thanks

It means that if you’re going to attempt this:

…then you should make yourself aware of any previous attempts to merge and reasons that it didn’t happen. I don’t know the history, but the original binding was created long enough ago that I imagine a PR was discussed at some point.

Some other things to consider:

  • Merging for 3.4 doesn’t really do much, because developers are now working toward 4.0 and there won’t be a 3.5. So you’d want to aim for 4.0 compatibility in a PR.
  • The official Broadlink thermostat binding has been expanded to include IR remote functionality, I gather that it’s limited, but there would be redundancy. (I think this is what @matt1 was referring to as “the other binding”)

If you submit a PR, you would (in my opinion) be taking on the role of developer/maintainer to ensure that the binding continues to work in the future. It’s great if you plan to do that, but not so much if you were thinking of this as a one-time deal.

Alternatively, you can just compile the binding and post it in the third-party marketplace, which may not have existed when the previous developer was still active in the community. This avoids the burden of merging a PR, and if you decide to walk away in the future, you can just say that you’re no longer updating it.

Hello @rpwong ,

…then you should make yourself aware of any previous attempts to merge and reasons that it didn’t happen. I don’t know the history, but the original binding was created long enough ago that I imagine a PR was discussed at some point.

Have definetely done that. I went through the last merge request (That was not completed due to lack of time on the mantainer’s side) and implemented all recommendations before doing the PR

  • Merging for 3.4 doesn’t really do much, because developers are now working toward 4.0 and there won’t be a 3.5. So you’d want to aim for 4.0 compatibility in a PR.

The PR is for OH 4.

  • The official Broadlink thermostat binding has been expanded to include IR remote functionality, I gather that it’s limited, but there would be redundancy. (I think this is what @matt1 was referring to as “the other binding”)

I have tested this binding. As you mentioned, it added support for Remotes, however, the protocol library hasn’t been maintained for a couple of years. The advantage of this binding is self contained, and it does not depend on other libraries. I tested the current Broadlink thermostat binding and i like it, but it does not work with all my devices. I actually plan to take some of the ideas from that binding, for example, implementing a channel for saving learnt commands automatically

If you submit a PR, you would (in my opinion) be taking on the role of developer/maintainer to ensure that the binding continues to work in the future. It’s great if you plan to do that, but not so much if you were thinking of this as a one-time deal.

I am hoping to be able to help maintain this library, even though i have just gotten back into java. The previous maintainer mentioned he might be able to help too, so yes, i understand that.

Thanks for your feedback!

2 Likes

So you already have done the work and made a PR? great news and thanks for doing it.

Good as it will take some time to now start over a full review when it was almost completed in the other PR that by the time it is merged V3 will be outdated and the bulk of users will be on V4.

I don’t know if it is possible to reopen the previous PR and upload your changes into that github repo so that the work of previous reviews does not have to start again?

If the API does not change, then the library does not need to change and other people then fix bugs in the library. We want a low load on you the binding writer, also a low load on the reviewers of the PR and also a low work load on whoever keeps the binding up to date going forward.

If you have read the previous PR review comments, you will know I was pro making the change and going for a fully contained binding with no external libs, however that has changed as someone added the RM range to the thermostat binding with the intention to rename it to just “Broadlink” in V4 if my quick read of the tons of emails was correct.

V4 is the perfect opportunity to clear this up so hopefully there is a single binding called “Broadlink” that handles all the devices they make, since they all talk the same protocol, they can share the same code. Having two bindings means more work maintaining, and also reviewing any changes.

As mentioned I do not know the full history but be aware that other maintainers already agreed to change the thermostat binding to just “Broadlink” and someone will be needed to review and merge your work so please take the time to consider all this as I do not like it when a keen able programmer is willing to submit work and then gets disenchanted and loses enthusiasm to continue to contribute because of this kind of stuff.

Since you have looked at both bindings and the library, you already know more then me on this topic. Also as stated I dont own any of the hardware so wont use the binding. Hopefully the hard work you have done is worth making the changes so that the thermostats work in the same binding without needing an external lib and without creating a breaking change as all channels and things can have the same name. The binding changing name is not an issue as it was already planned. Hopefully this can be fast tracked so the change happens before the V4 Stable release date.

Lastly I would like to stress the thanks and your willingness to contribute, we need as many people as we can get to ensure openHAB lasts another 10 years into the future, it is this I am hoping to preserve by posting this here.

2 Likes

Hey @matt1 ,

I don’t know if it is possible to reopen the previous PR and upload your changes into that github repo so that the work of previous reviews does not have to start again?

I was not able to do so. In the mean time, I thought that for the OH 3 series, i published the .jar anyway, so that should do it for now.

If the API does not change, then the library does not need to change and other people then fix bugs in the library. We want a low load on you the binding writer, also a low load on the reviewers of the PR and also a low work load on whoever keeps the binding up to date going forward.

I agree with this. However, when i testedat the broadlinkthermostat binding i realized Broaldink RM 4 Series do not work, specifically because the protocol changed. This is the main function of the broadlink library, so the library would need to either be updated by the mantainer (last update was 3 years ago), or forked and adopted. The binding i am putting a PR for already has that code integrated.

FIY, i looked at both Proposing to include this binding for OH and forking the broadlink java library. The first one felt like the path of least resistance.

V4 is the perfect opportunity to clear this up so hopefully there is a single binding called “Broadlink” that handles all the devices they make, since they all talk the same protocol, they can share the same code. Having two bindings means more work maintaining, and also reviewing any changes.

If it was me, i would keep both for a period. the broadlinkthermostad binding has some nice features, like handling the rm code files through the interface. Eventually, i would like to see the best features of both integrated into one.

Thanks for the kind comments!

2 Likes

Hey gang, I just unboxed and setup my rm 3 mini and I’m now looking at setting it up with openHAB. I’m using the v4.1 binding and the auto discovery did not work. The channels do not appear to do anything else. Is there some work being done here to which I may join in testing?

Hey Pedro,

This is currently on the back burner for me, but it is also the first project i will pick up as soon as i get some free time.

Thanks

1 Like

Copy that! Thanks :slight_smile: