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.
Building from current source?
Section titled “Building from current source?”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.
Start without hardware
Section titled “Start without hardware”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.
Inspect a device with the CLI
Section titled “Inspect a device with the CLI”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.
Automate with Python
Section titled “Automate with Python”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.
Embed with Rust
Section titled “Embed with Rust”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.
Pick the network path separately
Section titled “Pick the network path separately”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.
Before contacting a real network
Section titled “Before contacting a real network”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.
Sources and release scope
Section titled “Sources and release scope”These instructions target v0.11.0. Source review is not a claim of hardware qualification.
Release v0.11.0 ·Current development. Follow the scope named on each page. Pre-1.0 APIs; partial conformance.Support & limitations