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.

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.

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.

Live trending features is based on a wonderful project named Bokeh (http://bokeh.pydata.org/)
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.

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.