Getting started
Edge: Docker Compose
From the repo root:
docker compose up -d --build
- BACnet core (diy-bacnet-server): JSON-RPC + Swagger at
http://localhost:8080/docs. - Agents (
dueler_*,hvac_agent,mqtt_publisher, …) useBACNET_BACKEND=diy_jsonrpc— seedocker-compose.yml.
network_mode: host is used so BACnet/IP can reach the OT LAN reliably from Linux gateways (typical Pi / edge server).
Laptop: local Python
git clone https://github.com/bbartling/easy-aso.git
cd easy-aso
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install -e ".[dev]"
pytest tests/test_abc.py tests/test_supervisor.py -v
Optional full BACnet-in-Docker check:
pytest tests/test_bacnet.py -v
Supervisor (optional service)
pip install -e ".[platform]"
export SUPERVISOR_DB_PATH=./data/supervisor.sqlite
uvicorn easy_aso.supervisor.app:app --host 0.0.0.0 --port 8090
Open http://127.0.0.1:8090/docs for CRUD on devices/points and latest polled values. Details: Supervisor workflows.
Build this documentation locally
cd docs
bundle install
bundle exec jekyll serve --livereload
Open http://127.0.0.1:4000/easy-aso/.
Published site (GitHub Pages)
Set Settings → Pages → Build and deployment → Source: GitHub Actions.
Workflows (same layout as open-fdd):
| Workflow | What it does |
|---|---|
docs-pages.yml | Jekyll → GitHub Pages when docs/** changes on master (repo Settings → Pages → Source: GitHub Actions, same as open-fdd docs-pages.yml) |
docs-pdf.yml | Regenerates pdf/easy-aso-docs.pdf, opens a PR (LLM text bundle is docs/_build/easy-aso-docs.txt, not tracked) |
publish-pypi.yml | Publishes the whole package on push tags v* |
Public site: https://bbartling.github.io/easy-aso/
PyPI setup for maintainers: PyPI publishing.