Home Control System Controller

In current smart homes, you typically need to write some rules to effectively 'program' a device (e.g. a smart bulb) to behave the way you want it to. This could be simple logic to act on an event from a switch or button, or it could be more complex involving multiple sensors triggering an action. It quickly becomes quite complex and closer to programming though, when you want to achieve more powerful automation. In most current smart homes, there is also no shared context, to enable different actions to happen in different circumstances.

Based on our many years of research, we have developed and implemented software 'controller' to address this challenge, which occurs every time you connect a device to a smart home. The objective was to make intelligent smart home automation so easy, that anyone can do it. It enables any sensor to be used to control a device and with full context and state information, to enable it to be adaptive and make the best decisions. This then results in the best possible user experience. The 'controller' is a free capability of our smart home implemented in software and many thousands of them could exist if required.

When a device has many sensors being used as triggers, the configuration can get quite complex but, our controller hides the complexity, whilst enabling really powerful features. In many smart homes rules can allow you to turn (for example) a bulb on but how and when it gets turned off usually adds much more complexity. When you have multiple sensors being used as triggers things get even more complicated and the isolated rules can often 'clash' with each other.

With more control of more complex things like dimmable lights, colour changing lighting, heating control and other devices where the answer is not simply on or off, the 'rules' rapidly become very complex. Add in context and it very quickly starts to feel like you are programming.

Rules

Our controller makes simple things easy by supporting some very powerful features that handle this complexity for you, so you don't have to deal with it. By way of a simple example, our controller supports a feature or rule to extend the time a light is on by (for example 120 seconds), if a PIR sensor detects motion. All of the complexity is handled in the background by the controller.

In many consumer 'hubs' these rules are usually working without any context or understanding of what is happening in your smart home. For example, it doesn't know if you are on holiday, at work, it is dark outside, etc. You may also want schedules in parallel, to make your home look occupied when you are not home. And this all still has to work along with the many manual user interfaces in your smart home.

We didn't like to go through this complex set up process every time we wanted to control simple things like lights or advanced things like heating, so we developed a software controller to make the whole process a LOT easier. An Home Control System controller is simply an instance of software and some very simple configuration. A controller is assigned to every object or thing we want to intelligently control and it can support as many 'rules' as your want, use any and many of the connected sensors and can be configured based on any attribute of any object in our smart home.

Put simply, a controller can make any dumb connected device behave in a very smart way with very little effort. Those things that most people struggle with when they start out with home automation are all handled easily. The controller also has access to all of the whole home context, so it can be adaptive to all changes in the contextual smart home.

All this is enabled and amazingly easy to set up because we employ technology abstraction. All the configuration is both machine and human readable and can easily be swapped between different instances of our Home Control System.

Schedules

The controller enables advanced control of things like lighting very simply. It is part of a contextual smart home, so it works with full knowledge of context and state of everything connected. It supports adaptive schedules based on the current mode. It works with concepts like sunrise, sunset, dawn, dusk, etc. It handles all of the issues with many sensors being used as triggers and supports every sensor type.

Schedules essentially define a 'start time' and 'end time' but, they could also feature a 'start date' and 'end date', to allow seasonal control of things like Christmas lighting.

Auto Switch Off

One of the inherent safety features of our controller is the 'auto switch off' feature. It is really simple to configure a time period, such that each device being controlled will automatically turn off after a defined time period with a particular state has been reached. This is really a 'belt and braces' approach because in practice it never really happens when things are under intelligent control. But is it easily enabled and provides additional peace of mind.

Clash Management

One of the biggest challenges with the traditional way of doing home automation is something called 'clash management'. When you have multiple sensors driving one appliance or light directly, they may send competing requests that 'clash'. The automation may also clash with the manual user interfaces available. Our controllers resolve these issues in software, resulting in a much better user experience.

Performance

Our HCS has been designed and built as a real-time system. It can handle events from sensors for processing by a large number of controllers in just a few milliseconds. This tiny latency results in a great user experience.

Configuration

We wanted our controllers to be really simple to understand and configure, so really powerful control is available to anyone. Our use of technology abstraction means they are much easier to understand. No confusing technology terms! In fact, they are so easy to configure that in many cases it could be done via voice. For example: "I want the kitchen lights to be on when it is dark outside and the kitchen is occupied." Typically it would be done via a clear and simple (local) web-based user interface though, which is part of our Home Control System.

Both these methods result in a simple JSON file that is both machine and human readable. If we change the configuration, we can simple request that our Home Control System reload it, with no reboot required.

The great thing about our controllers is that they can also work with virtual sensors, so that the automation and user experience can be tested even before the hardware has been installed.

Examples

Example:  The safety lighting in our home is driven by our software controller. They come on when it is dark outside (based on our twilight sensor) and go off again in the morning when dawn or sunrise occurs. This is a really simple example that results in lighting being turned on or off but the timing adapts to the local environment conditions.
Example: 

During the summer months, our central heating system is switched off and it is not used at all from about April to October. Once a week, during these months our @smartest_home exercises our central heating by setting a high target temperature and turning on the heating for 10 minutes. This helps keep the pipes clear and the pumps running smoothly, which improves reliability. This is achieved by using some simple configuration of a controller.

The Future

We have been using controllers in our contextual smart home for 14+ years now but we are continually developing and updating our controller software, to support more advanced features and make them even more powerful. Each time we come across a new challenge in our smart home, we work out how best to solve the problem and update our controller to handle it.