Documentation
Introduction
Baler is an ontology-agnostic building data platform: API-first, load-time-pluggable (Brick/Haystack/DBO), headless by design. Time-series readings live in Postgres/TimescaleDB — so Grafana, or anything else that speaks SQL, reads them natively, no plugin required. Entity and relationship data lives in Oxigraph as RDF, queryable over SPARQL.
It feeds from Windrow (BACnet/Modbus → MQTT, a sibling project) over the same
wire envelope both mqtt_listener.py and POST /ingest consume.
Where to go next
- Architecture — the real service topology: what runs where, what talks to what, and why.
- Fault Detection — how
range/stuck/stalerules work, and the gotchas that aren't obvious from the code. - Webhooks — delivery semantics, signing, retries, and the one security caveat you need to know before registering one.
- Haxall Drop-In — how Baler becomes the actual history backend behind a real Haxall project, proven live.
- Haystack Puller — the opposite direction: an opt-in daemon that pulls points, equipment, and history from a remote Haystack/Haxall/SkySpark server.
- Adding a Data Source — which repo a new source belongs in, and the pattern to follow either way.
- Weather Stations — "add your own" local weather station, recorded as points, with no WWW dependency.
- API Reference — both APIs, generated live from the same
openapi.yaml/fault-api-openapi.yamlfiles each process serves atGET /openapi.yaml.
Last modified on

