When integrating multiple BAS platforms or building a unified front-end, consistent data mapping and point normalization enable meaningful analytics, reporting, and operations across diverse systems.
Different systems represent the same data differently:
System A: "AHU-1_Supply_Air_Temp" = 72.5°F
System B: "AHU1.SAT" = 22.5°C
System C: "Building1/HVAC/AHU001/SupplyTemp" = 725 (scaled)
Establish consistent hierarchy:
Site / Building / System / Equipment / Point
Example:
Campus1/Bldg_A/HVAC/AHU-01/SupplyAirTemp
Campus1/Bldg_A/HVAC/AHU-01/SupplyFanStatus
Campus1/Bldg_A/HVAC/VAV-101/ZoneTemp
Define conventions for:
Equipment Types:
| Equipment | Abbreviation |
|---|---|
| Air Handling Unit | AHU |
| Variable Air Volume | VAV |
| Fan Coil Unit | FCU |
| Chiller | CH |
| Boiler | BLR |
| Cooling Tower | CT |
Point Types:
| Point | Abbreviation |
|---|---|
| Supply Air Temperature | SAT |
| Return Air Temperature | RAT |
| Discharge Air Temperature | DAT |
| Zone Temperature | ZNT |
| Setpoint | SP |
| Status | STS |
| Command | CMD |
Format: [Site]-[Bldg]-[System]-[Equip#]-[PointType]
Examples:
HQ-A-AHU-01-SAT (Supply Air Temp)
HQ-A-AHU-01-SF-STS (Supply Fan Status)
HQ-A-VAV-101-ZNT (Zone Temperature)
HQ-A-VAV-101-DMR-POS (Damper Position)
Define enterprise standard units:
| Parameter | Standard Unit | Convert From |
|---|---|---|
| Temperature | °F | °C (×1.8+32) |
| Pressure | "w.c. | Pa (÷249) |
| Flow | CFM | L/s (×2.119) |
| Power | kW | HP (×0.746) |
| Energy | kWh | BTU (÷3412) |
Normalization Function:
Input: Raw value, source unit, target unit
Process: Apply conversion formula
Output: Normalized value
Example:
Input: 22.5°C
Formula: (°C × 1.8) + 32
Output: 72.5°F
Define appropriate precision:
| Data Type | Precision |
|---|---|
| Temperature | 0.1° |
| Humidity | 1% |
| Pressure | 0.01" |
| Flow | 1 CFM |
| Energy | 0.1 kWh |
| Position | 1% |
Map all points to standard types:
Analog Types:
Binary Types:
Enumerated Types:
Standardize enumeration values:
Source System A:
Mode: 0=Stop, 1=Heat, 2=Cool, 3=Auto
Source System B:
Mode: "OFF", "HEATING", "COOLING", "AUTOMATIC"
Normalized:
Mode: Off=0, Heat=1, Cool=2, Auto=3
Use Project Haystack standard tags:
Point Definition:
id: @HQ-A-AHU-01-SAT
dis: "AHU-1 Supply Air Temp"
point
sensor
air
temp
discharge
equipRef: @HQ-A-AHU-01
unit: "°F"
Every point should have:
Equipment Definition:
id: @HQ-A-AHU-01
dis: "Air Handler 1"
equip
ahu
siteRef: @HQ-A
systemRef: @HQ-A-HVAC
Map diverse quality indicators to standard:
| Source | Standard Flag |
|---|---|
| Good/Normal | ok |
| Offline/No-Comm | down |
| Fault/Error | fault |
| Override/Forced | override |
| Disabled | disabled |
| Unknown | unknown |
If source quality = down:
Normalized quality = down
Stale flag = true
Last good value = preserved
Last good time = timestamp
Internal: 2024-01-15T18:30:00Z
Display: 01/15/2024 1:30 PM EST
Site Configuration:
Site: HQ Campus
Timezone: America/New_York
All timestamps converted to UTC on ingestion
Displayed in site timezone for operators
Maintain mapping tables:
Mapping Table:
| Source System | Source Point | Normalized ID |
|---------------|--------------|---------------|
| JCI_NAE_01 | /AHU1/SAT | HQ-A-AHU-01-SAT |
| Niagara_01 | slot:/AHU1/SupplyTemp/out | HQ-A-AHU-01-SAT |
Abstract data access:
User Query: "Get supply air temps for Building A"
Semantic Layer:
1. Find all points with tag: temp + discharge + air
2. Filter by siteRef = Building A
3. Return normalized values
Extract-Transform-Load for analytics:
Extract: Pull from source systems
Transform: Apply normalization rules
Load: Store in analytics database
Temperature:
Min: -40°F
Max: 150°F
Rate of change: <10°F/min
If validation fails:
Flag quality = suspect
Log validation error
Use last good value
Validation Rule:
Supply Temp > Return Temp in cooling mode
If not: Flag as suspect, investigate
Maintain current documentation:
Point: HQ-A-AHU-01-SAT
Description: AHU-1 Supply Air Temperature
Data Type: Analog
Unit: °F
Range: 40-90
Source: JCI NAE-01
Source Point: /AHU1/SAT
Conversion: None
Tags: temp, discharge, air, sensor
Good data normalization is invisible to end users—they just see consistent, meaningful data. The work happens in careful planning and thorough mapping.