Skip to main content

BACnet Scripting Framework for testing DDC Controls

Project description

BAC0 Build status Coverage Documentation

Join the chat at https://gitter.im/ChristianTremblay/BAC0

BAC0 is a asynchronous Python 3 (3.10 and over) scripting application that uses BACpypes3 to process BACnet™ messages on a IP network. This library brings out simple commands to browse a BACnet network, read properties from BACnet devices or write to them.

Python is a simple language to learn and a very powerful tool for data processing. Coupled to BACnet, it becomes a great tool to test devices an interact with controllers.

BAC0 takes its name from the default IP port used by BACnet/IP communication which is port 47808. In hexadecimal, it's written 0xBAC0.

Test driven development (TDD) for DDC controls

BAC0 is made for building automation system (BAS) programmers. Controllers used in this field are commonly called DDC Controllers (Direct Digital Control).

Typical controllers can be programmed in different ways, depending on the manufacturer selling them (block programming, basic "kinda" scripts, C code, etc...). BAC0, is a unified way, using Python language and BACnet/IP communication, to interact with those controllers once their sequence is built.

BAC0 allows users to simply test an application even if sensors are not connected to the controller. Using the out_of_service property, it's easy to write a value to the input so the controller will think an input is connected.

It's also possible to do "manual commands" on output (often called overrides). In fact, every variable is exposed and seen by BAC0 and it's possible to interact with them using a simple scripting language or a complete unit test suite (like Pytest).

Without a program like BAC0, you can rely on your DDC programming tool... but it is often slow and every test must be done manually. That means also that if you want to repeat the tests, the more complicated they are, the less chance you'll be able to do so.

Now you can write your test and run them as often as you want. We'll show you how it works.

Better start-up with data acquisition

As you will discover, when you define a controller in BAC0, you will get access to historical data of every variables in the controllers. Every points are trended every 10 seconds by default. Which means that you can do data analysis on everything while you're doing your startup. It allows to see performances and trouble really fast.

This make BAC0 not only a good tool to test your sequence while your in the office. But also a really good tool to assist your startup, test and balancing. Using Jupyter Notebook, you'll even be able to create nice looking report right from your code.

InfluxDB native support

Connect BAC0 histories directly to a InfluxDB v2.0 instance. It's then possible to use Grafana to explore your data.

Note: BACnet™ is a trademark of ASHRAE.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

bac0-2024.9.8.tar.gz (92.2 kB view details)

Uploaded Source

Built Distribution

BAC0-2024.9.8-py3-none-any.whl (113.0 kB view details)

Uploaded Python 3

File details

Details for the file bac0-2024.9.8.tar.gz.

File metadata

  • Download URL: bac0-2024.9.8.tar.gz
  • Upload date:
  • Size: 92.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.9.19

File hashes

Hashes for bac0-2024.9.8.tar.gz
Algorithm Hash digest
SHA256 f6fb26cf7b293c5123d312a3bc55c6392ad3301d02dd720367f8ba57a40699ed
MD5 5ca2182c97081a36c7e97a3d3dc627b1
BLAKE2b-256 286528eaf5bb194c5341aefc61f9d63fc201251e7e99db1006a63e41de28dd0a

See more details on using hashes here.

File details

Details for the file BAC0-2024.9.8-py3-none-any.whl.

File metadata

  • Download URL: BAC0-2024.9.8-py3-none-any.whl
  • Upload date:
  • Size: 113.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.9.19

File hashes

Hashes for BAC0-2024.9.8-py3-none-any.whl
Algorithm Hash digest
SHA256 15a8d4fc09b5358bbe42aee1e14ae2d3cb8891768ff58bff5bfff7373b4c2196
MD5 57ff9b40e1b15af4efc7bfd30d44073d
BLAKE2b-256 037b1e53f83cdfadb30e13858e65d09d28ce8bc5601f30c7ac9a88d77425a6c0

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page