A BOS creates an abstraction layer between heterogenous systems (data producers) and services (primarily data consumers). This layer hides complexity and simplifies data access to third parties. It works both ways, it's easier to collect data from a building, but it is also easier to apply control-command.

To hide systems complexity, there are several levels of abstraction provided by a BOS:

Level 1: a BOS hides the acquisition hardwares and provide data to third parties from individual equipment perspective.

To illustrate it, a single controller may acquire data points that are related to several equipment (lights, a VAV, multi-sensors...). The BOS creates a representation of each individual equipment and present the data to third parties accordingly (without any correlation with the controller). At the opposite, an individual equipment (usually a production, a power distribution panel...) may contain data points acquired by several hardwares (and even from several communication protocols). In that case again, the BOS provides a single equipment representation no matter the number of hardwares being used. It simplifies a lot the understanding of the system.

Level 2: a BOS provides a representation of a higher abstraction through syntheses and global commands, most of the time from a spatial perspective: per room, per floor... To illustrate it: each office of a building may have 2, 3, 4... different lights to control. One way for a workplace app to control lights is to send a command to each light (through the BOS API or through a BOS connector). The level 1 hides already the hardware complexity. Although it would work, it requires this third party to learn the number of lights per room, to register for changes... Alternatively, the BOS can provide a global command per space, so the app only applies a command relative to the space, leaving the BOS the mission to apply commands to the x lights of the room.


We will detail the list of syntheses and global commands you will possibly encounter with the Level 2.

Synthesis and Global commands are usually created for the Structure Data Model since it's the most common used model to collect and control data. Custom syntheses and global commands may be implemented on a site.

The following list of syntheses and global commands are the default ones, they may vary according to the site.


By Space

A space may contain several equipment of a similar type (several Light, Room Sensor, FCU...).

Syntheses

Synthesis namepointTypedimensionpositionresourcecomponentQualifiersUnits

AvgLuminosity

CalculationIlluminanceZoneElectricity--

synthesis="M"

calculationType="Average"

lx

OrPresence

StatePresenceZonePeople--synthesis="M"false="Unoccupied";true="Occupied"

AvgTemperature

CalculationTemperatureZoneAir--

synthesis="M"

calculationType="Average"

temperatureType="Direct"

°C

AvgCO2

CalculationConcentrationZoneAir--

synthesis="M"

calculationType="Average"

ppm

AvgNoise

CalculationNoiseZonePeople--

synthesis="M"

calculationType="Average"

db

AvgHumidity

CalculationHumidityZoneAir--

synthesis="M"

calculationType="Average"

%RH

AvgEffectiveTempSetpoint

CalculationTemperatureZoneAir--

synthesis="M"

calculationType="Average"

°C

AddPeopleCount

CalculationCountZonePeople--

synthesis="M"

calculationType="Sum"

--

OrWindowsPosition

StatePositionZone--Windowsynthesis="M"false="Closed","true="Open"

Global commands

Synthesis namepointTypedimensionpositionresourcecomponentQualifiersUnits

BrightnessCmd

CommandIlluminanceZoneElectricity--

globalCommand="M"

commandFunction="Dimming"

writeRange="Group"

lx

TempSetpointOffset

Setpoint OffsetTemperatureZoneAir--

globalCommand="M"

setpointType="Offset"

writeRange="Global"

temperatureType="Direct"

°C

BlindCmd

CommandPercentageZoneElectricityBlind

globalCommand="M"

commandFunction="Dimming"

writeRange="Group"

%

By Floor

Floor syntheses will be based on the equipment data points directly and will not be calculated from a Space synthesis. It means for example that a floor will generate an average temperature of all temperature sensors on the floor rather than calculating the average of each individual space average temperature. The result is therefore more accurate.

Syntheses

Synthesis namepointTypedimensionpositionresourcecomponentQualifiersUnits

AvgLuminosity

CalculationIlluminanceZoneElectricity--

synthesis="M"

calculationType="Average"

lx

OrPresence

StatePresenceZonePeople--synthesis="M"false="Unoccupied";true="Occupied"

AvgTemperature

CalculationTemperatureZoneAir--

synthesis="M"

calculationType="Average"

temperatureType="Direct"

°C

MinTemperature

CalculationTemperatureZoneAir--

synthesis="M"

calculationType="Min"

temperatureType="Direct"

°C

MaxTemperature

CalculationTemperatureZoneAir--

synthesis="M"

calculationType="Max"

temperatureType="Direct"

°C

AvgCO2

CalculationConcentrationZoneAir--

synthesis="M"

calculationType="Average"

ppm

AvgNoise

CalculationNoiseZonePeople--

synthesis="M"

calculationType="Average"

db

AvgHumidity

CalculationHumidityZoneAir--

synthesis="M"

calculationType="Average"

%RH

AvgEffectiveTempSetpoint

CalculationTemperatureZoneAir--

synthesis="M"

calculationType="Average"

°C

AddPeopleCount

CalculationCountZonePeople--

synthesis="M"

calculationType="Sum"

--

OrWindowsPosition

StatePositionZone--Windowsynthesis="M"false="Closed","true="Open"

AddActivePower

CalculationPower--Electricity

synthesis="M"

powerType="Active"

calculationType="Sum"

kW

Global commands

Synthesis namepointTypedimensionpositionresourcecomponentQualifiersUnits

BrightnessCmd

CommandIlluminanceZoneElectricity--

commandFunction="Dimming"

writeRange="Group"

lx

TempSetpointOffset

Setpoint OffsetTemperatureZoneAir--

setpointType="Offset"

writeRange="Global"

temperatureType="Direct"

°C

BlindCmd

CommandPercentageZoneElectricityBlind

commandFunction="Dimming"

writeRange="Group"

%

By Building

Building syntheses are computed with the same methodology than floor syntheses

Syntheses

Synthesis namepointTypedimensionpositionresourcecomponentQualifiersUnits

AvgLuminosity

CalculationIlluminanceZoneElectricity--

synthesis="M"

calculationType="Average"

lx

OrPresence

StatePresenceZonePeople--synthesis="M"false="Unoccupied";true="Occupied"

AvgTemperature

CalculationTemperatureZoneAir--

synthesis="M"

calculationType="Average"

temperatureType="Direct"

°C

MinTemperature

CalculationTemperatureZoneAir--

synthesis="M"

calculationType="Min"

temperatureType="Direct"

°C

MaxTemperature

CalculationTemperatureZoneAir--

synthesis="M"

calculationType="Max"

temperatureType="Direct"

°C

AvgCO2

CalculationConcentrationZoneAir--

synthesis="M"

calculationType="Average"

ppm

AvgNoise

CalculationNoiseZonePeople--

synthesis="M"

calculationType="Average"

db

AvgHumidity

CalculationHumidityZoneAir--

synthesis="M"

calculationType="Average"

%RH

AvgEffectiveTempSetpoint

CalculationTemperatureZoneAir--

synthesis="M"

calculationType="Average"

°C

AddPeopleCount

CalculationCountZonePeople--

synthesis="M"

calculationType="Sum"

--

OrWindowsPosition

StatePositionZone--Windowsynthesis="M"false="Closed","true="Open"

AddActivePower

CalculationPower--Electricity

synthesis="M"

powerType="Active"

calculationType="Sum"

kW

Global commands

Synthesis namepointTypedimensionpositionresourcecomponentQualifiersUnits

BrightnessCmd

CommandIlluminanceZoneElectricity--

commandFunction="Dimming"

writeRange="Group"

lx

TempSetpointOffset

Setpoint OffsetTemperatureZoneAir--

setpointType="Offset"

writeRange="Global"

temperatureType="Direct"

°C

BlindCmd

CommandPercentageZoneElectricityBlind

commandFunction="Dimming"

writeRange="Group"

%