Many commercial buildings have digital controls and extensive sensor networks that can be used to develop novel applications for saving energy, detecting faults, improving comfort, etc. However, buildings are custom designed, leading to differences in functionality, connectivity, controls and operation. As a result today's building applications are hard to write and non-portable. What is required is a form of mass customization that allows applications to automatically adapt to differences in buildings.   We present BAS, an application programming interface and runtime for portable building applications. BAS provides a fuzzy query interface allowing application authors to describe the building components they require in terms of functional and spatial relationships. The resulting queries implicitly handle multiple building designs. BAS also incorporates a hierarchical driver model, exposing common functions of building components through standard interfaces.   We demonstrate and evaluate BAS by implementing two novel applications -- an occupant HVAC control app and a ventilation optimization app -- on two different buildings using raw building control protocols and then again using BAS. We show that the BAS code is much shorter, easier to understand and does not change for each building.
['Andrew Krioukov', 'Gabe Fierro', 'Nikita Kitaev', 'David E. Culler']
Building application stack (BAS)