BAC0 / Une solution à code source ouvert pour tester des contrôleurs BACnet

[english version]

Tester des séquences complètes

En programmation, il existe le concept de tests unitaires. Ils ont comme objectif de tester rapidement chaque portion d’un code afin de nous assurer que les modifications futures ne changent pas le fonctionnement de ces blocs. À chaque modification de code, on peut démarrer les tests et un rapport nous assure que tout fonctionne… ou met en relief ce qui ne fonctionne plus.

Dans le monde des contrôleurs en bâtiment (DDC ou Building Automation System – BAS), nous devons généralement utiliser les outils de simulation inclus dans les logiciels propriétaires des manufacturiers. Ces tests sont faits manuellement et sont difficile à répéter de façon exacte. Les tests sont donc souvent sommaires et le travail se fait lors des mises en route.

Notre solution

Créé par Christian Tremblay de SERVISYS inc. BAC0 est le premier logiciel à code source ouvert qui permet aux programmeurs et techniciens de tester simplement les séquences programmées dans les contrôleurs et ce même si aucune sonde n’est raccordée. Facile à maîtriser, ce logiciel permet de scripter des tests qui pourront être répétés facilement et permet de documenter les tests. Afin de permettre de valider tout ce qui se passe dans le contrôleur, une fois connecté au contrôleur, BAC0 garde en mémoire les valeurs de chaque variables exposée, à interval de 10 secondes. Grâce au logiciel Jupyter Notebook, tous ces travaux se font à même votre navigateur.

Basé sur Python python-powered-w-140x56

BAC0 est une application Python. Ce langage de programmation fait partie des 10 langages les plus populaires actuellement [ref: http://www.tiobe.com/tiobe_index]. Son gain en popularité s’expliqunt par la simplicité du code, la flexibilité du langage et une adoption de masse par la communauté scientifique. Python constituait l’outils parfait pour BAC0.

BAC0 fonctionne actuellement en BACnet/IP. Il fonctionne grâce à un module Python nommé BACpypes (créé par Joel Bender). L’utilisation d’un router BACnet/IP à BACnet/MSTP permet de travailler sur des contrôleurs MSTP sans problème. BACnet est le protocole de communication le plus répandu actuellement dans le domaine de l’automatisation reliée au bâtiment.

Des courbes de tendance en temps réel

BAC0 intègre les capacités d’un autre logiciel à code source ouvert : Bokeh. Ce module Python permet la création de courbes de tendances en temps réel de n’importe quelle variable du contrôleur connecté à BAC0. Bokeh permet de programmer des graphiques de tendance en Python, sans avoir à maîtriser le Javascript.

Exemple d’une courbe de tendance en temps réel utilisant Bokeh, essayez !

Commissionning

Les fonctionnalités de BAC0 en font également un excellent outils d’aide à la mise en route. Il permet d’utiliser les données recueillies afin de calculer par exemple, les delta T des serpentins de chauffage, de calculer le pourcentage d’air frais, etc. Faire des dérogations, simuler des valeurs de sondes, tout ça scripté, répétable et documenté. BAC0 permet également de sauvegarder les données recueillies pour référence ultérieures.

LIRE LA SUITE

BAC0 / An open source tool for BACnet controllers

[version française]

Testing DDC

In the world of software programming, there’s what we call unit tests and test suites. They serve the purpose of testing small parts of an application, easily and rapidly. You modify the code, run the test suites and see if everything works again.

In the DDC world (mostly Building Automation Systems or BAS), we must usually count on some simulation tool inside the proprietary programming tool provided with the controller to test our sequences. And more than often, real tests are done in the field… All these tests are then made « by hand », are hard to reproduce in an exact fashion and they are hard to document. So if you modify your program, how can you tell you didn’t break something ?

Our solution

Created by Christian Tremblay from SERVISYS inc. BAC0 is the first open source effort to bring a common tool to DDC programmers so they can test efficiently the sequences they are working on. Scriptable, easy to learn, once it’s connected to your device, every exposed variables will be kept in memory so you can document your tests. Thanks to Jupyter Notebook, all this work can be done in your browser.

Based on Python

python-powered-w-140x56

BAC0 is a Python application. This programming language is part of the top ten more popular languages [ref : http://www.tiobe.com/tiobe_index]. It gained popularity by it’s simplicity, flexibility and a real adoption by the scientific community. Python is a perfect fit for a tool like BAC0.

BAC0 is actually working only with BACnet/IP. It relies on a module named BACpypes (created by Joel Bender). Using a simple BACnet/IP to BACnet/MSTP router makes it work flawlessly with any MSTP devices. BACnet is the most popular communication protocole in the Building Automation industry actually.

Live trending capabilities

BAC0 relies also on Bokeh. A Python modules that allows the ability of creating live charts of any variables you want to follow during your tests. Bokeh is a complete suite of chart creation that allow Python programmers to be able to do good looking charts inside a browser, without having to learn JavaScript.

Livre trends example created in BAC0 using Bokeh, try it !

Commissioning helper

With all the features of BAC0, you can bring it on the field to help you with your startups and commissioning. Calculate heater temperature delta, calculate fresh air percentage, make overrides or simulate a sensor to validate your sequence. Bring back a complete database of every points and refer to it later.

LIRE LA SUITE