Easy ASO

Easy ASO is a small, opinionated stack for BACnet building automation at the edge: asyncio agents, a single BACnet/IP core (diy-bacnet-server), and an optional supervisor that feels a bit like a VOLTTRON platform driver — dynamic devices/points, polling, SQLite config — without the ceremony of a full distributed platform.

Use it when you want:

  • Deterministic control loops (on_start / on_step / on_stop) with explicit override and release semantics.
  • Docker-first deployment next to MQTT, EMIS, or your own services.
  • A path to optimization (demand limits, resets, diagnostics) that stays readable as the site grows.

Where to go next

I want to… Read
Understand positioning (edge, agents, supervisor) Why Easy ASO?
Run the stack on a gateway or Pi Getting started
Point BACnet tooling at the LAN BACnet edge
Model supervisory logic as events Lifecycle & events
Configure devices/points + REST API Supervisor workflows
Harden supervisor + BACnet RPC on an OT LAN Supervisor OT security
See HTTP surfaces API surface
Understand the design Platform driver architecture
Ship to PyPI PyPI publishing
Run many agents beside one BACnet gateway Multi-agent (RPC-docked)

Philosophy

BACnet stays in one place. Everyone else speaks JSON-RPC or REST over TCP — that keeps UDP 47808 sane on constrained hosts and matches how real edge integrators deploy.

Supervision is a loop, not a framework. You bring the physics and the sequence of operations; Easy ASO brings scheduling, BACnet plumbing, and (optionally) a config store so you can iterate without redeploying the world.


MIT · easy-aso · BACnet edge + asyncio supervisor

This site uses Just the Docs, a documentation theme for Jekyll.