New version of bacnet binding for openhab

Dear community members,
I would like to announce new build of openhab bacnet binding. I was called to board by @Kai in thread where there was request for new maintainer of this binding. Bacnet is industry standard and it is being used much more often in industry than houses, but there is still bunch of devices targeted to both markets. Previous version of this binding was left without maintanance thus I picked it up and upgraded to OH 1.9.0 API and verified with 2.0 runtime as well.

This binding is licensed under GPL due to dependency to bacnet4j. Full source code of binding is available at github.

I also developed small wrapper to hide complexity of bacnet4j which is used to keep binding code as simple as possible. Please test and report issues. I had just one test device with no binary input properties thus I could not cover this part of binding. Also keep in mind that data mapping between Open Hab items and bacnet types is in basic state and more complicted structures are not available.

1 Like

Thanks @splatch, sounds great!
Do you plan to keep the binding compatible with 1.x or will you move to the 2.0 APIs somewhen?

Right, the license prevents us from adding it to the main repo/distro. I would be fine to add your repo to the openHAB organisation though and setting up a build on Jenkins for it. The binding could be added to the online distro, so that it is not shipped within the zip, but that users can easily install it from the remote repo then.

Yes, I definitelly look forward to support 1.x cause 2.x is completely new story and I will implement it from scratch. I just made sure it does work with 1.x compatybility layer. In fact - it was easier for me to get it done with 1.x than 2.x (less interfaces, no thing definition and so on).
I was looking for other options than bacnet4j to interface with standard but there is nothing else than that. I played a little bit with netty to see how hard it would be to implement netty based transport (similar to digitalpetri-modbus). It is doable, but requires a lot of time time cause full spec is 1300 pages long. From reading bacnet4j code I was able to parse frame header, however I would need to buy full bacnet specification, leave my daily job for few weeks, and then implement new lib. :slight_smile:

I am fine to link/move this in any possible way to let users play with it. @Kai, just fork binding repo to openhab organization and push my changes there or give me write access so I will push my changes there.

I’ve added refreshInterval property to customize how often properties should be read. I also added support for multistate property types, however these requires more testing. I am having some bad feelings about lifecycle management and activate, deactivate calls. In case if binding does not pick up changes please restart OH. :confused:
New build available here: https://github.com/Code-House/BACNet-openHAB-binding/tree/master/build

I have created https://github.com/openhab/org.openhab.binding.bacnet and added you as an admin - go ahead and fill it with content.

Please also add our usual CONTRIBUTING.md file and as the maintainer of that project, please make sure that everyone (including yourself :-)) follows these rules - thanks!

Code is moved to new repository, CONTRIBUTING rules are added, also information about GNU GPL is embedded in license file. I released bacnet4j wrapper. Binding works since a month on my local installation so I think we are on good way to make first release. Just don’t know how to do it. :slight_smile: Should I add it to OH2 feature set as well?

Wow, very cool!
Feel free to already include it in the binding list on https://github.com/openhab/openhab/wiki (the link should probably directly go to the README.md).
I’ll try to review it after my holidays and also create a Jenkins build job and figure out a way how to include it in the 1.9 release.
Wrt OH2, I plan to have features that can only be installed online, but which are never part of the offline distro due to licensing reasons. The bacnet binding is such a candidate. I’ll deal with that in September.

Cheers,
Kai

Hi

Is this still being developed?

Cheers,

Stuart

Yes, you can find it right here: https://github.com/openhab/org.openhab.binding.bacnet/releases

1 Like

Thanks, That’s excellent.

I wholesale Velbus hardware, so really my interest in OpenHab should be restricted to Velbus deployment and support.
However I was at a meeting yesterday where (on behave of the installer) I was asked to find a way to connect the proposed multiple heating zone control that Velbus was offering to the commercial boiler BacNet controller.
There will only be a couple of contact closures between the Velbus network and the boiler management system, as that is the most robust solution. (Velbus will call for heat for new zones, that are to be created within the current zones, whereupon the Bacnet system will open the group flow control valve and Velbus will then sub-divide that flow to the required rooms / zones)

What the installer is asking for is a UI to overview the Velbus status’ and Bacnet status.
(Changing zone target temperatures and timings)

In order for me to assist the installer to create the UI, is there any configuration guides that I can read to get a handle of how the Bacnet binding works?

I see that this binding will scan for connected Bacnet devices, so I guess I’m asking for assistance with creating the “things” and “Items” files, unless there are plans to migrate the Bacnet binding to V2 and enable PaperUI configuration.

Any help would be most welcome.

Many thanks,

Stuart

Hey MDAR,
Currently bacnet binding supports a OH 1.x and can be run under OH 2 via compatibility layer. It does a simple scan of network in order to discover devices and let you use device identifiers instead of their MAC/IP addresses.

You can generate a complete configuration with utility which is used to connect with bacnet network:

I’m working in spare time on improvements in this binding and maybe, at some day, there will be easier way for 2.x deployments.

Cheers,
Lukasz

Thanks Lukasz

I’ve passed that message on to my client so that can consider their options.

Cheers,

Stuart