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.

Python facilite la tâche

Comme BAC0 est une application Python, il est possible d’utiliser toutes les fonctions et modules existants. Les historiques utilisent le format Pandas Dataframe, format duquel il est extrêmement simple d’extraire des données statistiques sommaires ou d’effectuer des manipulation de données (ajouter des colonnes, comme l’erreur entre une variable et sa consigne, par exemple)

Python compte également un bon nombre d’application dédiées aux tests (unittest, nose, py.test). Ces suites logicielles peuvent donc aussi être utilisées pour automatiser les tests, directement de la ligne de commande par exemple.

Python fonctionne sur Mac, Windows ou Linux.

Documentation de BAC0

Pour plus de détails, vous pouvez lire la documentation complète.

BACnet® is a registered trademark of ASHRAE.