Best Practices for Siri Voice Command Recognition via Homekit Bridge

I use the Homekit bridge to bring HA devices into Homekit and issue some voice commands to Siri (via Homepods and iPhones). This mostly works for the few voice commands we use (turning on/off lights and switches).

However, I recently setup a new automation/routine/switch for a morning alarm clock and I’m having trouble getting Siri to recognize the voice command to turn the switch on/off.

Are there some best practices for naming conventions to ensure Siri recognizes the command and executes the expected action correctly?

For more detail about my specific setup, I have a Template Switch that gets the status from a binary sensor for whether a script is running or not. When the switch is set to On it runs the script, when set to Off it stops the script. I named the template switch “Alarm Clock” and the entity ID is “switch.alarm_clock”. I assigned this switch to my bedroom area in HA, exposed it to Homekit via the bridge, and then put the switch (as seen in the Apple Home app) into the Room I want. It works fine in the Home app, but Siri doesn’t work with the voice command “turn on/off alarm clock”. I get a variety of different responses from Siri like 1) not finding the alarm I asked for (when issued to siri on the phone), 2) you don’t have any alarms (when issued to the homepod), and 3) asking me who is speaking and to turn on “recognize my voice” in the Home app settings (which I did try and still doesn’t work).

The only ting that works is if I include the room name in the voice command “turn on/off primary bedroom alarm clock.” I have other switches in this room that work fine without including the room name in the voice command.

Any recommendations for how to get Siri to react to the voice command I want/expect?

1 Like

I don’t know if there really are “best practices” because everyone likely has their own way of doing things but I can tell you that 90% of all my home automation is done via Siri as I’m quite Apple centric and was using HomeKit long before I was using HA.

That being said, here are some highlights from how I use it:

  • Set up SCENES that toggle switches or fire scripts. I like this because you can issue normal sentences to Siri. For example, “Start vacuum”, or “I’m going for a run” (which summarizes temperature, humidity and wind for the next hour by toggling switches that then fire my TTS system that announces through my HomePods).
  • If you intend to use a lot of devices, get into the practice now of having multiple HomeKit servers running, you’ll thank me later. Having one huge HomeKit config is messy to deal with so I have more than a dozen, for instance I put all my climate controls in one, contact sensors in another, etc. You need to do this for locks and cameras anyway, so just take it a step further.
  • Remember that rooms are part of HomeKit, you don’t have to call something “Bedroom Fan”, you can just call it “Fan” and put it in room named Bedroom and still use “Turn on Bedroom Fan”. You could also use point 2 for each room too if you wanted, it depends on the complexity of your home automation.
  • Siri has a lot of “keywords” that will cause problems for you. For instance, if you name an entity or scene “Weather” or “What’s the weather” then Siri will use it’s own system as priority of your HomeKit. To overcome this, be creative with names. I use “what are the current outside conditions” when I want the summary from HA instead of Apple. This is trial and error, if something doesn’t work then try renaming it.
  • Don’t forget to use the entity config section of your HomeKit setup, it lets you further define your devices, their names and their types.
  • I have a host of “HomeKit Translation” devices and scripts, these are template entities (or, obviously, scripts) that take something from HA and transform it into something HomeKit likes or treats differently. Examples of this could be if you have light sensors that don’t report as LUX, or if want to grab an attribute from a device and only publish that attribute to Siri (i.e., the humidity of your thermostat).

Those are some of my top suggestions, I’m happy to answer any specifics.

Thanks for all the information.

  1. what do you mean by multiple HomeKit servers?

  2. What is the entity config section of HomeKit setup? Do you mean entity config section in Home Assistant?

  3. Do you think something about my switch being called “alarm clock” is conflicting with a Siri keyword?

You can have multiple HomeKit servers in HA. For me, I do this all in YAML but I know you can do it in the UI as well.

Yes, HomeKit setup = HA HomeKit

Likely, yes, since “Alarm” is something you can ask Siri to set natively and “Alarm Clock” is probably tied to that. You may have to get creative on the name.

I cannot recommend this point enough. I have ~20 HK bridges setup using includes and excludes to make sure that I omit sensors that HK doesn’t support. They are all grouped according to domain and a few are for certain areas I have (along with cameras and locks).

Another point I’d like to add is that I have noticed that HK gets really noisy, really quickly. I have around 200+ entities exposed to HK right now and there are times when the HK cloud gets bogged down with updates to and from HA. It happens more often when there is a lot of things going on in the house, but generally, there’s a LOT of traffic happening pretty much all the time. I’ve seen it slow down updates from my HK native devices (some Eve devices and Aqara FP2s shared from HK) back to HA.

Just something to be aware of if you want to use HK in tandem with HA.

I like the topic of this post, although I can see where it can get pretty broad… With that point made I would like broaden it by posting a similar question:

I have muiltiple devices I would like to control with one template device. For example my “Entertainment System” which is composed of my Yamaha receiver, Samsung TV, Apple TV, Tivo and Roku devices. I want to be able to tell Siri to turn ON/OFF the full Entertainment System, or switch it’s focus to the Apple TV, Tivo, Roku, etc. I have all this already working with the HA UI, just want one puesdo deivce to pass to Siri via config section in HomeKit setup so I can do the same with Siri, that I do with my HA U & scripts.

Parameters to the template device would be ON/OFF, “Apple TV”, “Tivo”, “Roku”. So if the template devices was named ETV and I would say: “Hey Siri, Turn on ETV”, or “Hey Siri ETV Tivo”, etc

But how do I get Siri to recognize the parameters I pass to the template device? Or is that even possible? This is strictly in the concept mode so I want to find out if I am barking up the wrong tree…

Thanks for any help you can provide
Al