Innovations in Comfort, Efficiency, and Safety Solutions.
EMAIL INTERVIEW – Christian Tremblay and Ken Sinclair
Christian Tremblay is an electrical engineer working in building automation. He has worked for SERVISYS inc. since 2003 as a developer, programmer, control designer and associate. SERVISYS is located in Bromont, Québec.
Sinclair: What is BAC0?
is a programmable scripting tool that allows you to communicate with
BACnet controllers (using BACnet/IP) and interact with every input,
output or exposed variables. This makes it a perfect tool to test IOs,
but also sequences as it is possible to write a few lines of code and
verify whatever you want.
Testing sequences is something I was thinking about for a long time. When I first came to SERVISYS, we had this DX9100 box with switches, LEDs, potentiometers and Analog Volt Meters and with that, we were able to test our sequences. By hand. Start the fan, the LED turns On, then you switch the DI to ON so the controller gets the status... then you see the Analog Volt Meter rising telling you that dampers are now open at 20%...
That was cool. But now with the variety of controllers, the need for expansion modules, etc, building that kind of box is a really complicated task. Shouldn't we have a software solution?
The idea of BAC0 comes from the need of testing sequences, easily, with the possibility of repeating tests the same way everytime and if possible, to generate a report of tests. Just like having a physical testing bench.
Sinclair: Why choosing Python instead of Java or C++?
Tremblay: Python is an
interpreted language. That means that you don't need to compile your
code every time you need to run it. It's possible to write a line of
code, and send it to the controllers, just that. It's really great for
exploratory programming. Developing something is a lot less time
consuming. With Jupyter Notebook, everything can be done in your
browser... no plugin required.
Python is also driven by a wonderful community of programmers coming from very different backgrounds: Engineers, data analysts, hobbyists, web developers, etc... This diversity brought to the ecosystem more than 78,000 modules that can be downloaded and used as open source programs for tasks like scraping web sites, serving web sites, parsing files, doing math or using the BACnet protocol.
Sinclair: Is BAC0 based on something else?
Tremblay: Yes. BAC0 is based on an existing module created by Joel Bender named BACpypes (https://github.com/JoelBender/bacpypes).
This module deals with the core BACnet/IP communication. BACpypes is my
first real contribution to an open community project as I participated
in porting the project to Python 3 with the help of Joel Bender. It was
the first time I really opted-in a project and offered my help to
develop some features. Once it was working, I started building some
tools on it, that became BAC0.
BAC0 is a high-level tool that use BACpypes but with a really simplified syntax and other tools like a live trending feature or the ability to save historical data from your experiment. And again, I used some modules that were available as open source projects.
Sinclair: Why did you chose open sourcing the project?
Tremblay: For the
community. As I explained, BAC0 is based on other great projects that
are open source. Without those projects, I would not have the time or
the capacity to develop something like that.
The other reason is that I want that my solution for testing sequences reaches a lot of users so we can share test experiences. BAC0 had to be free. Programming tests is an important task that takes some time. If you have to pay for the time and the software, you probably won't program tests. But if the solution is free, easy to use, it will reach users that will try it, create their own tests, send feedback and the product will grow. And as it is open source, others will also be able to contribute.
Sinclair: What is the next step for the project?
Tremblay: Reaching users and writing tests. Now that the tool works, I want to focus on tests.
- What are the best tests to program?
- How must they be done?
- What tests should be done and why?
- Tests for VAV boxes, AHU, Rooftop, etc...
It's a really wide area that will need a lot of experimentation.
I didn't talk about startups and commissioning. They can certainly benefit from a tool like that. A scripting tool like BAC0 can allow some great computation in a few lines of code (ex. Take a few VAV boxes and compute every delta T around their reheat coil...)
Tools like BAC0 can be really useful, not only in test mode. The commissioning process can gain a lot from a tool like BAC0.
Sinclair: Where can we find BAC0?
Tremblay: You can find the official announcement here: http://servisys.com/2016/03/10/bac0-an-open-source-tool-for-bacnet-controllers/
The project is on Github: https://github.com/ChristianTremblay/BAC0
The documentation is here: http://bac0.readthedocs.org/en/latest/
In the documentation, I tried to be as precise as possible on installing Python and making it work.
Christian Tremblay LinkedIn account : https://ca.linkedin.com/in/christian-tremblay-35472718
Servisys : http://www.servisys.com
[Click Banner To Learn More]
[Home Page] [The Automator] [About] [Subscribe ] [Contact Us]