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.
Getting Started
- Getting Started
- Features
- Core Protocol
- Convenience API
- Smart Encoding
- Supported Services
- Object Model
- Device Info Caching
- Segmentation
- Network Routing
- Extended Discovery
- BACnet/IPv6
- BACnet Ethernet (ISO 8802-3)
- BACnet Secure Connect (Annex AB)
- BBMD Support
- Priority Arrays
- COV (Change of Value)
- Event Reporting
- Scheduling
- Trend Logging
- Time Series Data Exchange
- Audit Logging
- Type Safety
- JSON Serialization
- Docker Integration Testing
- Structured Logging
- Architecture
User Guide
API Reference
Project