May 2016

True Analytics™ - Energy Savings, Comfort, and Operational Efficiency
Ecorithm - Cloud-Based Analytics Software

(Click Message to Learn More)


EMAIL INTERVIEWChristian Tremblay and Ken SinclairChristian Tremblay

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.

BACnet Programmable Scripting Tool

That allows you to communicate with BACnet controllers (using BACnet/IP) and interact with every input, output or exposed variables.

New Products
Reliable Controls
Site Search
Control Solutions, Inc
Past Issues
Blue Ridge Technologies

SinclairWhat is BAC0?

Tremblay:  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.

SinclairWhy 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 ( 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.

Live trending features is based on a wonderful project named Bokeh ( that specializes in creating great graphical charts from python code so the programmer doesn't have to learn Javascript (the language understood by your browser for all kinds of animation or cool stuff). It's a very active project with really good support.

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

Reliable ControlsSinclairWhat 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.

SinclairWhere can we find BAC0?

Tremblay:  You can find the official announcement here:

The project is on Github:

The documentation is here:

In the documentation, I tried to be as precise as possible on installing Python and making it work.

Christian Tremblay LinkedIn account :
Servisys :


Lynxspring Exchange 2017
[Click Banner To Learn More]

[Home Page]  [The Automator]  [About]  [Subscribe ]  [Contact Us]


Want Ads

Our Sponsors