Xeto schema library implementing the High Performance Building Standard (HPBS) for Project Haystack.
The High Performance Building Standard (HPBS) is a comprehensive construction standard developed by the Utah Division of Facilities Construction and Management (DFCM). HPBS defines requirements for building automation systems, including point naming conventions, data collection intervals, and equipment modeling.
This Xeto library implements the HPBS conventions as defined in the HPBS Appendix F - Analytic Points and Tagging Standard, providing standardized point types, equipment templates, and system definitions for Haystack-compatible building automation.
This library follows a thin extension approach:
- Extend, don't replace - All types inherit from standard Haystack types
- Preserve interoperability - HPBS points remain queryable with standard Haystack queries
- Add value, not complexity - Only include HPBS-specific conventions that provide real benefit
- Composition over inheritance - Add HPBS defaults without deep hierarchies
Standardized history collection intervals for different point types:
| Mixin | Mode | Interval | Use Case |
|---|---|---|---|
HpbsHisCov |
COV | 24hr | Commands, setpoints, status points |
HpbsHisSampled |
Sampled | 10min | Zone sensors, secondary equipment |
HpbsHisSampledMajor |
Sampled | 5min | Major equipment sensors |
HpbsHisConsumption |
Consumption | 10min | Submeters |
HpbsHisConsumptionMajor |
Consumption | 5min | Main meters |
HPBS uses imperial units:
| Domain | Unit | Mixin |
|---|---|---|
| Temperature | °F |
HpbsTempUnits |
| Air pressure | inH₂O |
HpbsAirPressureUnits |
| Water pressure | psi |
HpbsWaterPressureUnits |
| Air flow | cfm |
HpbsAirFlowUnits |
| Water flow | gal/min |
HpbsWaterFlowUnits |
| Humidity | %RH |
HpbsHumidityUnits |
| CO2 | ppm |
HpbsCo2Units |
| Gas volume | ft³ |
HpbsGasVolumeUnits |
| Gas energy | therm |
HpbsGasEnergyUnits |
Consistent abbreviated display names for points:
| Point Type | NavName Example |
|---|---|
| Zone Temperature | ZnTemp |
| Discharge Air Temp | DaTemp |
| Chilled Water Valve | ChwVlvCmd |
| Supply Fan Speed | SfSpd |
| Boiler Run Status | BlrRunSts |
The library uses a two-layer architecture:
| Layer | File Pattern | Purpose |
|---|---|---|
| Placeholder | ph.*.xeto |
Generic base specs intended for upstream contribution to Project Haystack |
| HPBS Implementation | *.xeto |
HPBS-specific specs with colors, navNames, and history settings |
| File | Description |
|---|---|
lib.xeto |
Library metadata and dependencies |
points.xeto |
Base point types, color mixins, and history presets |
| File | Contents |
|---|---|
air.xeto |
Air temperature, humidity, flow, pressure, CO2 points |
water.xeto |
Water temperature, flow, pressure, volume, energy (HW, CHW, CW) |
fans.xeto |
Fan run/status, speed, VFD points (supply, return, exhaust, relief) |
valves.xeto |
Valve position/command points (heating, cooling, bypass, isolation) |
dampers.xeto |
Damper position points (OA, RA, EA, mixed, economizer, zone) |
pumps.xeto |
Pump run/speed points (HW, CHW, CW, DHW, booster) |
stages.xeto |
Staging points (heating, cooling stages) |
boiler.xeto |
Boiler-specific staging and control points |
chiller.xeto |
Chiller-specific staging, load, and oil system points |
compressor.xeto |
Compressor staging and run points |
cooling-tower.xeto |
Cooling tower staging and control points |
occupancy.xeto |
Occupancy, schedule, override, lockout, alarm points |
electrical.xeto |
Electrical metering points (energy, power, demand) |
naturalgas.xeto |
Natural gas metering points (flow, volume, energy) |
steam.xeto |
Steam system points (flow, pressure, temperature, energy) |
dhw.xeto |
Domestic hot water points |
alarms.xeto |
Equipment and system alarm points |
heatexchanger.xeto |
Heat exchanger temperature points |
| File | Contents |
|---|---|
ph.point_air.xeto |
Generic air point placeholders |
ph.point_water.xeto |
Generic water point placeholders |
ph.point_fan.xeto |
Generic fan point placeholders |
ph.point_valve.xeto |
Generic valve point placeholders |
ph.point_damper.xeto |
Generic damper point placeholders |
ph.point_pump.xeto |
Generic pump point placeholders |
ph.point_boiler.xeto |
Generic boiler point placeholders |
ph.point_chiller.xeto |
Generic chiller point placeholders |
ph.point_compressor.xeto |
Generic compressor point placeholders |
ph.point_cooling-tower.xeto |
Generic cooling tower point place.olders |
ph.point_stages.xeto |
Generic staging point placeholders |
ph.point_misc.xeto |
Miscellaneous point placeholders |
ph.point_co2.xeto |
CO2 point placeholders |
ph.point_weather.xeto |
Weather point placeholders |
ph.point_systems.xeto |
Placeholder equipment specs |
ph.equip.xeto |
Placeholder equipment specs |
| File | Description |
|---|---|
equips.xeto |
Equipment types with point profiles (AHU, VAV, boiler, chiller, etc.) |
systems.xeto |
Distribution system types (chilled water, hot water, steam, condenser water) |
- Zone, discharge, mixed, return, outside, inlet air temperatures
- Zone, discharge, return, outside humidity
- Zone, discharge, return, outside, exhaust, mixed air flow
- Zone, discharge, building air pressure
- Zone, discharge, return CO2
- Weather (wet bulb, dew point, freeze stat)
- Hot water (entering, leaving, supply, return, delta-T)
- Chilled water (entering, leaving, supply, return, delta-T)
- Condenser water (entering, leaving, supply, return)
- Domestic hot water (supply, return)
- Flow, pressure, differential pressure, volume, energy
- Supply, return, exhaust, relief, cooling tower fans
- Run command/status, speed sensor/command
- VFD frequency, fault, enable
- Power and energy
- Hot water, chilled water, condenser water valves
- Heating, cooling, preheat, reheat valves
- Bypass and isolation valves
- Steam and gas valves
- Domestic hot water valves
- Outside air, return air, exhaust, relief dampers
- Mixed air, economizer dampers
- Zone/VAV dampers with min/max setpoints
- Discharge, bypass dampers
- Fire/smoke dampers
- Hot water, chilled water, condenser water pumps
- Primary and secondary pumps
- Domestic hot water recirculation pumps
- Booster pumps
- Power, energy, VFD points
- Heating/cooling stages (electric, gas, DX)
- Compressor stages
- Boiler/chiller staging and control
- Cooling tower staging
- Lead/lag sequencing
- Zone occupancy sensor/command
- Operating mode points
- Schedule points (optimal start)
- Override and lockout points
- DCV points
- Alarm points
- Natural gas (flow, volume, energy, pressure)
- Electrical (energy, power, demand)
- Steam (flow, pressure, temperature, energy)
- Building and equipment submeters
- Air handlers (AHU, RTU, MAU, DOAS)
- VAV terminals (standard, reheat, fan-powered)
- Boilers (hot water, steam, condensing)
- Chillers (air-cooled, water-cooled, centrifugal, screw)
- Cooling towers (open, closed)
- Fan coil units (2-pipe, 4-pipe)
- Computer room (CRAC, CRAH)
- Heat pumps, heat exchangers
- Meters (electric, gas, water, BTU, steam)
- Chilled water systems
- Hot water systems
- Steam systems
- Condenser water systems
- Domestic hot water systems
Each equipment type defines a points: {} block specifying which point types typically apply to that equipment. This provides:
- Self-documenting templates - Equipment types show exactly which points are expected
- No duplication - References existing point types instead of creating equipment-specific variants
- Flexibility - All points are optional (
?) - instances only include what they have
Slot names in points: {} blocks match the point type's navName abbreviation:
| Slot Name | Point Type | NavName |
|---|---|---|
daTemp |
HpbsDischargeAirTempSensor |
DaTemp |
sfCmd |
HpbsSupplyFanRunCmd |
SfCmd |
chwVlvCmd |
HpbsChilledWaterValveCmd |
ChwVlvCmd |
znTemp |
HpbsZoneAirTempSensor |
ZnTemp |
| Equipment | Points | Key Categories |
|---|---|---|
HpbsAhu |
~30 | Air temps, fans, dampers, valves, safety |
HpbsVav |
~10 | Zone temp/flow, damper, occupancy |
HpbsVavReheat |
~13 | VAV + reheat valve, discharge temp |
HpbsBoiler |
~14 | HW temps, staging, gas, enable |
HpbsChiller |
~15 | CHW/CW temps, staging, power |
HpbsCoolingTower |
~17 | Fans, temps, staging, isolation |
HpbsFcu |
~11 | Zone temp, fan, valves |
-
As a user
- Install & enable the library (
hpbs) in your Haxall project. - Declare equipment and points using the provided Hpbs types, extending abstract base types (such as
HPBSAhu) for project-specific variants.
- Install & enable the library (
-
As a contributor
- Prefer extending or composing existing Hpbs traits/types instead of duplicating semantics.
- Follow existing naming and history conventions within the hpbs libraries.
We welcome contributions! Please see our Contributing Guide for details on:
- Development setup and guidelines
- Code style and naming conventions
- Pull request process
- Types of contributions we accept
HpbsAhu: Ahu {
points: {
// Air temperatures
daTemp: HpbsDischargeAirTempSensor?
daTempSp: HpbsDischargeAirTempSp?
maTemp: HpbsMixedAirTempSensor?
raTemp: HpbsReturnAirTempSensor?
oaTemp: HpbsOutsideAirTempSensor?
// Supply fan
sfCmd: HpbsSupplyFanRunCmd?
sfSts: HpbsSupplyFanRunSensor?
sfSpd: HpbsSupplyFanSpeedSensor?
// Dampers
oaDmprCmd: HpbsOutsideAirDamperCmd?
raDmprCmd: HpbsReturnAirDamperCmd?
// Valves
chwVlvCmd: HpbsChilledWaterValveCmd?
hwVlvCmd: HpbsHeatingValveCmd?
}
}
// Use HPBS types directly - all Haystack queries still work
myZoneTemp: HpbsZoneAirTempSensor {
equipRef: @my-vav
}
myChwValve: HpbsChilledWaterValveCmd {
equipRef: @my-ahu
}
Equipment types define expected points - just instantiate what you have:
// Create an AHU with its points
myAhu: HpbsAhu {
dis: "AHU-1"
siteRef: @my-site
}
// Points reference the equipment - the equipment's points: {} block
// documents which point types are expected
myDaTemp: HpbsDischargeAirTempSensor {
equipRef: @myAhu
}
mySupplyFan: HpbsSupplyFanRunCmd {
equipRef: @myAhu
}
Add to your Haxall project's lib dependencies:
depends: {
{ lib: "hpbs", versions: "1.0.x" }
}
All HPBS types remain fully Haystack-compatible:
// These queries work with HPBS points
read(sensor and air and temp) // Finds HpbsZoneAirTempSensor
read(boiler) // Finds HpbsBoiler
read(chiller) // Finds HpbsChiller
read(his and sampled) // Finds sampled history points
read(vav and hotWaterReheat) // Finds HpbsVavReheat
- Haxall: 4.x
- Haystack: 5 (ph 5.0.x)
- High Performance Building Standard (HPBS)
- HPBS Appendix F - Analytic Points and Tagging Standard
- Project Haystack - Industry standard for building data semantics
- Haxall Framework - IoT framework that runs Xeto libraries
- Xeto Language - Official Xeto specification and standard libraries
Academic Free License version 3.0