Skip to main content

BAC0 Build & Test Coverage Documentation Status

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.

Metadata

Release files for BAC0 2025.2.post18

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for BAC0 2025.2.post18
File Size Uploaded
bac0-2025.2.post18.tar.gz 92.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for BAC0 2025.2.post18
File Interpreter ABI Platform
BAC0-2025.2.post18-py3-none-any.whl Python 3 none any Details

Total release size: 205.6 kB

Release files / bac0-2025.2.post18.tar.gz

Download URL bac0-2025.2.post18.tar.gz
Size 92.6 kB
Tags Source
SHA-256 checksum
How to use checksums
10ed1424a3528093b5df6ce90ac20db8f9eb9fca0a38741ee2d9697810989da1
BLAKE2b-256 checksum
How to use checksums
bb4054a5781453fb8f8923f855a1a2c4792f367ea268055faff8775d22b2687f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.9.21

Release files / BAC0-2025.2.post18-py3-none-any.whl

Download URL BAC0-2025.2.post18-py3-none-any.whl
Size 113.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
bde0a8d75f9f52a9bca97d1387dc5c3da9f1dc47c960abdd9b9ca87d206f372f
BLAKE2b-256 checksum
How to use checksums
2ba7adc5c545f19f5ba281300d2e7df39da3fa5610a6c4f976c164ac6fc37551
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.9.21

Release history Release notifications | RSS feed

This release

2025.2.post18 This release

2 release files

23.99

2 release files

20.2.20

1 release file

19.9.9

1 release file

19.9.8

1 release file

19.4.28

1 release file

0.99.82

1 release file

0.99.72

1 release file

0.99.7

1 release file

0.99.5

1 release file

0.99.4

1 release file

0.99.3

1 release file

0.99.2

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page