Manual overrides for HomeKit automations
Having your smart devices do their own thing is great, when it makes sense, but sometimes you don’t want things to change settings, or turn off, if you’ve set them specifically for some other reason.
As an example from my setup, your outdoor lights could be set to turn on automatically for 15 minutes when you open the door, and then turn themselves off. Under most circumstances this is what you want as you’re only using them briefly as you go in and out.
But what if you’re entertaining outside? Every time someone goes through the door your barbecue gets plunged into darkness 15 minutes later.
We can solve this using automation conditions to create a kind of manual override. Doing this in HomeKit is not obvious, or even possible in the default Home app, but using a third party client we can access a whole host of conditional values.
There are a few good third party client apps available, but we’ll use the Eve app as it’s free and has all the features we’ll need for this task.
Using the outdoor lights examples, we’ll assume you don’t have an automation set up just yet, so we’ll build one from scratch. If you did have one you could do something similar by just editing the existing rule and adding the conditions needed.
In the Eve app go to Automations, then Rules.
Scroll to the bottom and tap Add Rule and tap Next to skip the overview.
Tap Add Trigger and select Contact for this example, you can obviously use any other trigger you want.
Toggle on the relevant contact sensor to use to turn on the lights, and select the Open state.
Tap Add, then Next.
Tap Add Value Condition, this allows us to select any characteristic from another accessory as a filter for when to run this rule.
Select the Room and the light that we’ll be hooking to the contact sensor.
Toggle the light’s Power characteristic on, and select OFF as the state. This means the rule can run only on the condition that the light is off.
Tap Add to complete the condition.
If we don’t need any more conditions, tap Next. You may want to add a Time condition so it only runs at night as well.
Select a scene that will turn on the light, if you don’t have one you can create one using the Add Scene button at the bottom.
Name your rule.
Now we have a conditional rule that will run when the door is opened, but only if the light is off. We need to get the rule to turn off the light automatically after a set time. Interestingly the Eve app is the only HomeKit client I’ve looked at that doesn’t allow this.
Not to worry, we just need to jump into the default Home app to add this step. Note that if you opt for another third party client like Home+ or Controller for HomeKit you’ll be able to add an Undo Timer directly in the rule editor.
Open the Home app
Tap on Automation at the bottom.
Find your new rule, note the Home app doesn’t use the rule name, only the trigger. So look for something like “When the <door name> Door Opens” with the name of your chosen scene underneath.
Tap on the rule to open it. You’ll see your trigger and conditions in the When: section, but at the bottom you’ll see a Turn Off option.
Tap Turn Off and select the time delay, say 15 minutes.
That’s it, we now have a rule that will turn on the light for 15 minutes when the door is opened, unless you have turned it on already. If the light is already on the automation will be ignored, and you won’t get plunged into darkness unexpectedly.
Of course this same approach can be used for various other scenarios that may result in scenes being set that are inappropriate. The key is to identify an accessory characteristic that you can use as a signal for whether it’s ok to run the automation or not.
The Eve app exposes the most common and is usually sufficient, but other third party apps can show more custom values that you might find useful, depending on the accessory maker.