bac-py

Asynchronous BACnet/IP protocol library for Python 3.13+.

bac-py implements ASHRAE Standard 135-2020 (BACnet) with an async-first architecture built on Python’s native asyncio framework. It provides both client and server capabilities across five transport types – BACnet/IP (UDP), IPv6, Ethernet 802.3, BBMD, and BACnet Secure Connect – with zero required dependencies.

import asyncio
from bac_py import Client

async def main():
    async with Client(instance_number=999) as client:
        value = await client.read("192.168.1.100", "ai,1", "pv")
        print(f"Temperature: {value}")

asyncio.run(main())

Head to Getting Started for installation and first steps, or browse the Reading and Writing Properties to see what bac-py can do. For transport configuration (BBMD, routers, IPv6, Secure Connect), see Transport Setup.

User Guide

Project

Indices and tables