Skip to content

Packaged / DX equipment FDD

0.5 extends the vendor-neutral rule library beyond built-up AHUs and central plants to the packaged and refrigerant-side equipment that dominates small–mid commercial stock: rooftop units (RTU), heat pumps / VRF, DOAS/ERV, fan-coil units (FCU), and refrigerant-side chiller degradation. As always, rules key off Roles (not vendor tags), each ships a synthetic fixture, and each is accuracy-scored in the synthetic benchmark.

flowchart LR
    roles["Roles (compressor_status, filter_diff_press, cond_approach_temp, ...)"] --> tmpl["Equipment templates (RTU / HeatPump / DOAS / FCU)"]
    tmpl -- "completeness gating" --> rules
    subgraph rules["camber.rules.builtin — DX detectors"]
        r1[compressor_short_cycle]
        r2[compressor_staging]
        r3[heatpump_defrost]
        r4[filter_fouling]
        r5[chiller_approach_fouling]
    end
    r1 --> find[Findings]
    r2 --> find
    r3 --> find
    r4 --> find
    r5 --> find
    find --> bench["synthetic benchmark (VALIDATION.md)"]

Role-keyed DX detectors, gated by per-unit completeness, fan into Findings scored by the benchmark.

New roles

Status/stage and refrigerant-side signals (all with PHYSICAL_BOUNDS + a Haystack hint):

Role Meaning
compressor_status DX compressor running (1) / off (0)
compressor_stage active DX cooling stage (0,1,2,…)
condenser_fan_status condenser/outdoor fan running
heat_stage active gas/electric heating stage
reversing_valve_cmd heat-pump mode: heating (1) / cooling (0)
filter_diff_press differential pressure across the air filter (inH2O)
supply_air_humidity / return_air_humidity air-side relative humidity (%)
cond_approach_temp / evap_approach_temp chiller approach temperatures (°F)

New equipment templates

RTU, HeatPump (VRF), DOAS (ERV via optional humidity roles), and FCU (now a distinct template, not the VAV alias). Completeness validation gates which rules can run per unit — e.g. HeatPump requires a reversing-valve command; DOAS requires outdoor-air flow.

New rules

  • compressor_short_cycle — DX compressor firing in short bursts (starts/day past a min-off-time ceiling). Reuses the generic on/off start counter. Flag: max_starts_per_day.
  • compressor_staging — unstable multi-stage DX (excess stage changes/day). Flag: max_changes_per_day.
  • heatpump_defrost — excess heat-pump defrost / reversing-valve cycling (iced coil or faulty defrost termination). Flag: max_reversals_per_day.
  • filter_fouling — air filter at/above its change-out differential pressure (wasted fan energy, starved airflow). Flag: change_dp_inwc (default ~1.0 inH2O).
  • chiller_approach_fouling — condenser/evaporator approach-temperature degradation (tube fouling / low charge), the refrigerant-side indicator that needs no refrigerant-pressure instrumentation. Flags: cond_design_f, evap_design_f.

Every rule returns info (not a false fault) when its required role is absent, is registered in camber.rules.builtin, and runs unchanged across any building once its points are mapped.