Appearance
Introduction
Smart Core enables building system integrators and fit-out specialists to create smart buildings on behalf of landlords, building managers, and tenants. Smart Core runs locally within a building where it provides an open-source platform for integrating and controlling a wide range of devices.
Read on to learn more about smart building operating systems and how Smart Core works, or head to the Getting Started guide to start controlling devices in the Smart Core Playground.
What is a smart building?
A smart building is a physical space that uses technology to provide services to occupants, optimise use of resources, and create an environment that can adapt as needs change. The starting point for any smart building is ensuring that various systems – from lighting and ventilation to security and audio-visual equipment – are capable of being connected to and managed over a network.
However, operating each of these systems in isolation is not enough. To deliver real value, a building’s systems must be integrated so that data can be exchanged easily and in real time. For example, by collecting live data from the security system’s motion sensors and access control, a building’s lighting, heating and ventilation systems can be adjusted automatically based on current occupancy. Combining this with data from occupants’ calendars or local weather forecasts allows these services to be optimised even further, while user-facing apps enable occupants to make local adjustments.
Why do I need a building OS?
Creating and managing a smart building involves considerable complexity. Devices communicate over different protocols, data is provided in varying formats, and as technology improves systems need to be upgraded and eventually replaced. The needs of the building occupants will also vary over the lifetime of the building. This is where a building operating system (BOS) can help.
A BOS offers a consistent interface for connecting to and controlling the array of devices within a building. Data from devices can be extracted in a standardised format, combined with information from outside sources (including cloud-hosted APIs), and used to drive the behaviour of other systems within the building.
Beyond that, a BOS provides an abstraction layer that separates the control of specific devices from the business logic that governs automations and provides services to users. Hardware can be upgraded or replaced without rewriting application code, and the same logic can be reused in multiple buildings despite differences in devices.
What can I do with Smart Core?
You can use Smart Core to connect and manage any device that supports integration (including via network, serial port, or dry contact). Smart Core provides:
- A local API that is hosted and managed within the building, offering reliable and performant features.
- A consistent interface for requesting data from devices and external services and sending instructions to devices.
- Key device and system administration features, including security and access management, naming, routing, load balancing and failover, status reporting, logging and monitoring.
- An open-source, vendor-agnostic platform with the flexibility to add support for new technologies.
These features accelerate the process of customising a building’s systems to occupants’ needs while ensuring that those systems remain robust and secure.
You can use Smart Core to:
- Increase energy efficiency by optimising use of lighting, heating, ventilation, and power management.
- Enhance physical security without compromising occupant and visitor experiences.
- Improve resource usage with multi-function spaces, occupancy analytics and intelligent recommendations.
- Create consistent and intuitive occupant experiences across tenant estates.
- Manage every aspect of your smart building, including occupants and visitors, energy use, alerts, and automation, from one place.
How does Smart Core work?
Smart Core is the interface between devices (both physical and virtual) on the one side, and the business logic that provides services to building occupants and determines desired behaviour on the other side.
Smart Core runs on one or more servers within a building, coordinating communication between clients and devices using the gRPC API framework. The Smart Core API defines a series of device traits that can be used to request information from and send instructions to connected devices.
gRPC
gRPC defines a protocol for remote procedure calls that offers individual and streaming requests and responses, strong security, reliable messaging, and high performance over low bandwidths. gRPC APIs are defined using the Protocol Buffers format and are language-agnostic.
The Smart Core API is defined by a set of .proto
files located in the protobuf
directory of the Smart Core repository. Each protocol buffer (aka protos or protobufs) describes a service, the methods you can call, and the supported parameters and responses.
You can compile the Smart Core .proto
files to any of the gRPC-supported languages, including Go, NodeJS, Java, C#, Python, Ruby, and C++, and use different languages for your client and server-side code. To aid with development, Smart Core maintains a number of platform libraries for common languages, including Go and NodeJS, so that you don't have to re-generate the Smart Core client and server libraries yourself.
Traits
The Smart Core API is primarily organised around traits. A trait defines a capability that a device can offer, such as emitting light, detecting motion, or controlling the air temperature. A single device may combine multiple traits (for example, microphone and speaker) and two different devices may offer the same traits.
Each trait is described in a .proto
file. For example, the OnOff
trait reflects the ability of a device to be either on or off.
protobuf
service OnOffApi {
// Update the device to be on or off
rpc UpdateOnOff (UpdateOnOffRequest) returns (OnOff);
// other rpc methods relating to the on/off concept
}
In the Getting Started tutorial, we’ll use the UpdateOnOff
method, via the generated client library, to turn a device on.
Nodes
A Smart Core node is any host:port
that exposes the Smart Core API. Nodes communicate with each other over HTTP/2 using the gRPC protocol.
Nodes can connect to physical devices, translating incoming requests (such as “turn the device on”) to the device’s control language and translating responses to the format expected by the Smart Core API. Nodes that connect to devices are typically distributed throughout a building and are referred to as “Area Controllers”. An Area Controller may connect to its local devices wirelessly (for example, over WiFi, Bluetooth or Zigbee) or over a wired connection.
Nodes can also handle other responsibilities, such as routing requests and responses, data aggregation, load balancing and failover. Depending on the environment, you can use Area Controllers to perform these functions, or set up a dedicated cluster of “Controller” nodes to handle these responsibilities.
Devices and drivers
Examples of Smart Core devices include physical elements such as lighting, thermostats, HVAC systems, motion sensors, AV equipment, and occupancy sensors, as well as virtual devices such as services for requesting taxis or booking meeting rooms.
Each type of device (such as a particular model of smart lightbulb or thermostat) has its own control language and implementation details. Making a device’s controls and data available via the Smart Core API requires a device-specific driver. This is similar to the driver that you might install for a printer or scanner so you can use it from your PC.
A driver maps a device’s features to the standardised traits recognised by Smart Core. When the Area Controller for a device receives a request, it invokes the relevant driver which then transmits the request to the device in the appropriate format.
Our library of supported devices is constantly growing. If you would like to find out more about adding a driver for a new device, please get in touch.
Next steps
This introduction has covered Smart Core’s use cases and core concepts. If you’re ready to learn more, follow our Getting Started guide and use the Smart Core API to control a virtual device in the Smart Core Playground.