Skip to content

Choose your starting point

Rusty BACnet is a protocol stack with three user-facing entry points, not a desktop building-management application. Use the CLI to inspect an authorized network, Python to automate a task, or Rust to embed BACnet in your own software.

Use the development overview for shared endpoints, current SC setup and passive Number controls. The installation and tutorials below remain scoped to v0.11.0.

The local client/server lab is the shortest route to a complete read without a controller. Install the Python package, run the supplied script, and check the result before configuring a real network.

Start here when your goal is to identify a device, read a point, or collect diagnostics without writing an application. You can use a downloaded executable or build bacnet-cli with Cargo. The executable is named bacnet.

Install the CLI and follow Your first read. The first-read path does not change a property value.

Choose Python for scripts, data collection, integration prototypes, or a small test device. The distribution is rusty-bacnet; the Python import is rusty_bacnet. The binding uses asynchronous I/O.

Read a property with Python shows a complete script and explains the network assumptions. Python 3.11 or later is the declared minimum; an installable wheel for your exact interpreter and platform is a separate question.

Choose Rust when BACnet belongs inside your application. The workspace has separate crates for clients, servers, types, encoding, services, transports, networking, and objects. You do not need every crate for a property read.

Start with the Rust client. The reviewed release declares Rust 1.93 as its minimum; this documentation project does not raise the library’s minimum Rust version.

Language choice is not a transport support guarantee. BACnet/IP is the simplest starting point for the included read examples. BACnet/SC requires certificate and identity configuration. MS/TP requires a serial interface and deployment-specific hardware qualification.

Compare transport paths before selecting hardware or assuming a CLI flag exists for a Rust transport.

Obtain the network owner’s authorization, choose a bounded target, and identify which interface and ports you are using. Use a lab device when learning. Discovery transmits traffic; a subscription creates remote subscription state even though it does not write a point value.

Keep writes, alarm acknowledgments, device communication control, time synchronization, and file operations out of a first-read exercise. Those operations have separate operational consequences.

These instructions target v0.11.0. Source review is not a claim of hardware qualification.

Release · Workspace manifest · Python packaging.

Release v0.11.0 ·Current development. Follow the scope named on each page. Pre-1.0 APIs; partial conformance.Support & limitations