Skip to main content

Fault Detection and Diagnostics for HVAC systems — config-driven, pandas-based

Project description

Open-FDD

Discord CI MIT License Development Status Python BACnet TimescaleDB Grafana PyPI: open-fdd

open-fdd logo

Open-FDD is an open-source knowledge graph fault-detection platform for HVAC systems that helps facilities optimize their energy usage and cost-savings. Because it runs on-prem, facilities never have to worry about a vendor hiking prices, going dark, or walking away with their data. The platform is an AFDD stack designed to run inside the building, behind the firewall, under the owner’s control. It transforms operational data into actionable, cost-saving insights and provides a secure integration layer that any cloud platform can use without vendor lock-in. U.S. Department of Energy research reports median energy savings of roughly 8–9% from FDD programs—meaningful annual savings depending on facility size and energy spend.

The building is modeled in a unified graph: Brick (sites, equipment, points), BACnet discovery RDF, platform config, and—as the project evolves—other ontologies such as ASHRAE 223P, in one semantic model queried via SPARQL and serialized to config/data_model.ttl.


Quick Start — Open-FDD AFDD Platform Manually by the Human

Open-FDD uses Docker and Docker Compose to orchestrate and manage all platform services within a unified containerized environment. The bootstrap script (./scripts/bootstrap.sh) is Linux only (tested on Ubuntu Server and Linux Mint, x86; should work on ARM but is untested). Windows is not supported.

🚀 Platform Deployment (Docker)

git clone https://github.com/bbartling/open-fdd.git
cd open-fdd
./scripts/bootstrap.sh

This will start the full AFDD edge stack locally: TimescaleDB, API, React UI, BACnet gateway/scraper, weather and FDD loops, and more. Grafana and an MQTT broker are optional (./scripts/bootstrap.sh --with-grafana, --with-mqtt-bridge); see Getting Started. The default protocol is BACnet for commercial building automation data. Future releases may add other data sources such as REST/API and Modbus.

Also available is the partial stack mode: ./scripts/bootstrap.sh --mode collector, --mode model, or --mode engine. See Modular architecture for the service matrix and mode behavior.

Quick Start — OpenClaw (agent)

OpenClaw agents should use the in-repo skill/docs only—start at openclaw/SKILL.md, openclaw/README.md, and openclaw/HANDOFF_PROTOCOL.md—defaulting to web-app/testing workflows (plus ./scripts/bootstrap.sh --test) and using AI data-modeling or virtual-operator modes only when explicitly requested, with HTTP tool discovery at http://localhost:8000/mcp/manifest (and optional RAG http://localhost:8090/manifest) using Bearer OFDD_API_KEY from stack/.env (split-machine setup: OpenClaw integration).

Development: branches and tests

Work off the develop branch for day-to-day development; open feature branches from develop and merge back to develop. Releases are cut from master. No Docker needed for the test suite. From the repo root:

python3 -m venv .venv
source .venv/bin/activate
pip install -e ".[dev]"
pytest -v
  • .[dev] installs pytest, black, aiohttp, and platform deps so the full suite (open_fdd + HA integration tests) runs.
  • ./scripts/bootstrap.sh --test runs frontend checks + pytest + Caddy validate; frontend checks try container-first and fall back to host npm when needed. Pytest includes test_rdflib_sparql_stack.py, which runs the same SPARQL path as POST /data-model/sparql so a broken rdflib + pyparsing install fails CI before you deploy.
  • Test paths are set in pyproject.toml (open_fdd/tests, stack/ha_integration/tests). Run pytest with no path to use them.
  • Style and workflow: docs/contributing.md.

Note: If a develop branch does not exist, please request one in the #dev-chat channel on Discord.


The open-fdd Pyramid

If OpenFDD nails the ontology, the project will be a huge success: an open-source knowledge graph for buildings. Everything else is just a nice add-on.

Open-FDD system pyramid


Online Documentation


Dependencies

pandas · PyYAML · FastAPI

Optional: rdflib (Brick TTL), matplotlib (viz)


Contributing

Contributions welcome — Please use the develop branch for integration. Open pull requests into develop, not master. Branch from develop for your work; master is reserved for releases and is protected. PR's to the master branch will be rejected.

Syncing your fork with upstream

To bring your fork up to date with the latest develop from this repo:

# Add the upstream repo once (replace with this repo’s URL if you forked from another fork)
git remote add upstream https://github.com/bbartling/open-fdd.git

# Fetch upstream and update your local develop
git fetch upstream
git checkout develop
git merge upstream/develop
git push origin develop

Then rebase or merge develop into your feature branch as needed. Use git pull --rebase upstream develop on your branch if you prefer a linear history.

Run unit tests before pushing to GitHub

~/open-fdd$ bash scripts/bootstrap.sh --test

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

open_fdd-2.0.9.tar.gz (147.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

open_fdd-2.0.9-py3-none-any.whl (186.3 kB view details)

Uploaded Python 3

File details

Details for the file open_fdd-2.0.9.tar.gz.

File metadata

  • Download URL: open_fdd-2.0.9.tar.gz
  • Upload date:
  • Size: 147.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for open_fdd-2.0.9.tar.gz
Algorithm Hash digest
SHA256 79baf75b24d0de2588ad6eced4c710d315ccb7d6a6dbc85a58327fac4b839cb8
MD5 76bd2280c4bfb95d59c65d65d3d12042
BLAKE2b-256 f84453f6b2b4f57286a0af0406f305dc8447708076018aab4b599dc535000d9c

See more details on using hashes here.

Provenance

The following attestation bundles were made for open_fdd-2.0.9.tar.gz:

Publisher: publish-open-fdd.yml on bbartling/open-fdd

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file open_fdd-2.0.9-py3-none-any.whl.

File metadata

  • Download URL: open_fdd-2.0.9-py3-none-any.whl
  • Upload date:
  • Size: 186.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for open_fdd-2.0.9-py3-none-any.whl
Algorithm Hash digest
SHA256 cb5506233b657aabbb0a739385134bf9faa977aad755f58051a0c0234409bcb6
MD5 e61c352d37e22dcb8e139710d800f81a
BLAKE2b-256 5fa210c5d8e5aeda536030fa000e5078c1e430eedeb5b1210d9dbce9b722b05b

See more details on using hashes here.

Provenance

The following attestation bundles were made for open_fdd-2.0.9-py3-none-any.whl:

Publisher: publish-open-fdd.yml on bbartling/open-fdd

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page