*3.3. Drivers*

Drivers are the components of XBOS responsible for presenting a uniform communication interface, to local hardware devices and external software applications, that is agnostic to the particular protocols and networks used by those devices and applications. Figure 1 shows some examples of hardware devices that can be integrated using XBOS drivers: environmental sensors, electric meters, HVAC controllers, battery controllers, solar inverters, etc. Internet weather services and utility APIs for power prices are few examples of external software applications from which drivers gather data. These devices and services communicate over a variety of protocols, including older, legacy equipment such as refrigeration or HVAC controllers that communicate over wired, non-Internet Protocol (non-IP) based protocols such as Modbus serial [71] or BACnet MS/TP [72]. In such cases, it is essential to set up the drivers locally within the building's physical network. The drivers also translate the data from the device to the necessary protobuf format required to publish it on WAVEMQ and also interpret the control signals from XBOS applications to equivalent commands for the devices (e.g., changes to the HVAC setpoints or battery charge rate, etc.).
