HomeKit Goals
I’ve been having a think about what I want to get from automating the house. Here’s a bullet list of the rough goals I have:
- Easy manual control of the environment.
- Automatic control of the lighting based on room occupancy and current light level.
- Automatic control of temperature (at the room level) based on occupancy.
- My Rancilio Silvia coffee maker should be ready to brew coffee when I want a cup.
- The oven should be at the right temperature when I want to cook dinner.
- It would be awesome if what I’m currently listening to (music, podcasts, or what I’m currently watching on TV) could follow me through the house.
- I like to have a bath once in a while. The water pressure in the house is … suboptimal, so it takes a while. I’d like to get a push notification to my phone when the bath is filled with water at just the right temperature.
Of course, the easiest way to make sure the environment is just right when I want it to be is to make sure it’s just right 24/7. That could mean leaving the oven & coffee maker on all the time, having the central heating running whenever the temperature is below our threshold, and controlling all the lights based purely on daylight. In fact, given the up front cost of the hardware, that’s probably the cheapest way to make this work in the short term! But I’m mindful of energy usage, and I want to build things that reduce our carbon footprint, so really the key goal is to make sure things are switched off when they’re not needed.
Manual control of the environment
Even with the most intelligent automatic control I can imagine, I’m still going to want us to be able to manually interact with our home environment. We’ll want to be able to switch lights on and off. There will be times when we’re feeling a bit like a boost of warmth from the heating. And various appliances around the house will still need manual control when they’re desired.
Everyone in the household has (or at least has access to) an iOS device, and we’re all pretty good at keeping them within arm’s reach, so that makes for a great place to control things from. Being able to control devices by talking to Siri is pretty awesome, so that seems like a delightful way to interact with the house. But sometimes Siri can be a little recalcitrant (or, more practically, everyone else in the house is asleep and I don’t want to be yelling at my phone) so an app for control is necessary, too.
On the other hand, sometimes reaching into your pocket for your phone — even just to talk to it — is more effort than you want to expend on switching on the lights. And, let’s face it, we’re well conditioned to hitting a wall switch in order to turn the lights on. On occasion there’s even the odd guest who might not have an iOS device. So it’s probably a good idea to have physical switches and/or dials to interact with the environment, too.
An app is the best way to get an overview of measurements from the environment. Being able to see graphs of the temperature or energy usage around the house, comparing current and historic data, seeing the current state of devices, these are all useful tasks. Hopefully, in time, there will be some intelligence in the system that allows it to make smart decisions itself based on measured data but, in the meantime, allowing a human to make those smart decisions is essential.
I’d like to be able to measure and control the environment remotely, too. When we set off for a family holiday and we’re half way up the M5 motorway and I think, “OMG, did I leave the coffee machine on?!” I’d like to be able to reassure my anxious amygdala by checking (and then switching it off!). When we’re heading home from the office after work, I want to switch the oven on so it’s up to temperature and ready to cook the pizza we’ve just bought from the supermarket. When we’re off to a sunnier destination to recharge on vitamin D in the depths of winter, it would be awesome to monitor the temperature of the house, to reassure myself that the pipes aren’t in any danger of freezing.
Automatic control based on occupancy
If there’s somebody in a room, then it should be a comfortable environment for them, with appropriate levels of light and heat. Conversely, if there’s nobody in a room, then it should be minimising its energy footprint. We can get a good idea of home occupancy based on iOS devices and their location, which is a great start. When the first of us arrives home in the evening, we can be greeted by a warm, well-lit house.
My feeling (having not researched too deeply yet) is that current solutions here are geared towards single occupancy homes just now. It’s all about performing actions when I enter or leave a location. What I really want to do is perform actions based on the locations of the family as a whole. When everyone leaves the house, make sure its energy impact is minimised. When any one of us is on our way home, kick the heating into gear.
I also reckon that controlling the house based on GPS (ish) location is a bit macro. I’d like to make decisions at a more granular level, using indoor location detection. When I walk into a room, the lights should come on automatically (if the ambient light level is low enough). When everybody leaves a room, the lights should be turned off. I think this is achievable by mashing up HomeKit and iBeacon technology – and I’ve got a few Estimote beacons to start playing with – but I haven’t started on this part of the project yet!
If we’ve got accurate indoor locations for the people in the house, then we can do other smart things. For example, say I’m listening to music on the Apple TV in the living room, and the house knows I’m the one in the living room. When I get up from my chair and head to the kitchen to brew another coffee, the house can know I’ve moved there, and it can route my music to the Airport Express in the kitchen instead.
Controlling temperature at the room level
Right now, we control the temperature at the macro level – that of the entire house. More specifically, the temperature of the entire house is controlled from a thermostat located in the kitchen. If the temperature drops below a threshold, then the boiler is switched on, and hot water is pumped through the radiators throughout the house. When the threshold is exceeded, the boiler is switched off again.
We do have slightly finer grained control than that. There are flow control valves on each of the radiators. Constricting the valve will reduce the flow of hot water through that radiator, reducing the heat released from that radiator, and heating that room less. This gives us a very rough, approximate, way to vary the temperature through the house – so that seldom-used rooms aren’t normally heated, and bedrooms are kept a touch cooler than the living room. But it’s all a bit hit-and-miss.
What I’d like to be able to do is have more automatic fine-grained control. There should be a data logger in each room that records the ambient temperature of that room. The flow control valve to the radiators in a room should be remotely controllable. And there should be some intelligence inside the system (probably using some PID-based control) which controls both the boiler and the flow control in order to achieve the desired temperature in each room.
Of course, it’s all still going to be a bit approximate, since the doors between rooms are often left open, so they’re not entirely isolated from each other, but I reckon we can get much closer to an ideal system than we currently have. (HomeKit-based flow control valves don’t yet exist, so I’ve definitely got some work to do here!)
Predicting when things are needed
The trouble with things involving heat is that there’s some latency between applying power and them achieving the desired temperature. This applies to the overall temperature of the house, but it also applies to individual devices like the oven and my coffee maker, too. Manual control will always be necessary for these devices, but I’d like the home to be a little intelligent in correctly preparing them so they’re up to temperature when needed.
In the case of my coffee machine, I would like a shot of perfectly pulled espresso when I wake up in the morning. (We’ll ignore the fact that my sleep is a little unpredictable right now – I’m writing this at 6am, having been awake for 2 hours already! – and assume that I normally wake up with my alarm around 7:30.) It takes 20–30 minutes for it to warm up completely, so I’d like my trusty espresso machine to be ready to brew at 7:30, not just switching itself on then. My intelligent home should be able to measure the energy usage of the machine — so it knows when the boiler is kicking in and out, and can make an educated guess about whether it’s up to temperature — so it has historical data on how long it takes to warm up, and it can correlate that data with the room temperature. Given all that, the house should be able to make an accurate estimate of what time to switch the coffee machine on so that it’s ready for me waking up.
The same sort of principle applies to the oven, though the times we need it are a little less predictable. In the morning, I’d like to be able to say to the house something along the lines of, “we’re having roast chicken for dinner tonight, so I’ll need the oven to be 220ºC by 17:30.” I’m aiming to be home about 17:15, so that gives me 15 minutes to get in and prepare the chicken so it’s ready to roast. Of course, once the chicken is in the oven, I’d like to say, “let me know when the internal temperature of the meat reaches 75ºC” so I know I have a perfectly roasted bird.
These all seem to me like they’re useful, and reasonable, goals given the current state of the art. It’s all about making the home just that little bit more comfortable, while balancing that with minimising energy usage (because I rather like our climate as it is, thank you!). How would you like to automate, measure, or control your home environment? What sorts of tasks am I missing here?
If you enjoyed this article, I’d really appreciate it if you recommended it on Medium (hit the ❤️ below) and shared it with your friends on Twitter. You might also be interested in reading my first article on HomeKitting out the House, or you might like to read more about how I’m contemplating customising the Silvia in Measuring, Decision Making, and Outcomes.