Home Assistant
Example Config:
home_assistant:
url: "http://my-home-assistant-url:8123"
bearer_token: "eyJ0eXAiOiJKV1QiLCJhbGci..."
Note
The url
is the URL that you use to access Home Assistant. It supports https
if using a common certificate provider (like Let's Encrypt). Currently there is no support for a self-signed certificate.
Getting a bearer token
In Home Assistant, if you go to your "Profile" page (by clicking your username) and scroll to the bottom, there is a section called "Long-Lived Access Tokens". Click on "Create" and give your token a name like "HomeIntent". Copy the token and place it in the config. It will last 10 years. NOTE: I've truncated the token above, but they are quite long.
Configuration
Option | Description | Required/Default |
---|---|---|
url | The URL for your Home Assistant instance | REQUIRED |
bearer_token | The long-lived access token that Home Intent uses to interact with Home Assistant | REQUIRED |
prefer_toggle | Prefer to toggle instead using on or off when handling intents |
true |
ignore_domains | A list of domains from Home Assistant to ignore | climate, lock, humidifier |
ignore_entities | Specific entity id's from Home Assistant to ignore |
New Home Assistant Entity
If you add a new entity in Home Assistant and want to control it via Home Intent, you need to restart Home Intent for it to pick up on new/modified entities. This can easily be done by clicking "Restart" in the Home Intent UI or restarting the container running Home Intent.
On prefer_toggle
After a few years of running various voice assistants, I've noticed that they can really struggle with "on" and "off". It's particularly annoying when you're trying to turn off a light at night and nothing happens. At some point I played with switching it over to "toggle" instead of doing an "on" or "off" and everything works a lot better. This is why prefer_toggle
defaults to True
.
Currently prefer_toggle
is only used for the following:
- climate
- fan
- humidifier
- light
- media player
- remote
- switch
On ignore_domains
defaults
Ignore domains by default includes climate
, lock
, and humidifer
so you can consider the overall risk (financial, safety, or otherwise) if an entity is accidentally triggered (by someone else or from system confusion) in your household.
You can change the setting in the Settings page in the UI or via config.yaml
in the home_assistant
section.
To enable just lock
:
home_assistant:
ignore_domains:
- "climate"
- "humidifier"
To enable all of them:
home_assistant:
ignore_domains:
- ""
Scripts
Home Intent can also voice control Home Assistant scripts. It's fully customizable by the user from the sentences spoken to the response from Home Intent.
In the Home Assistant settings on the bottom of the page there is a "Scripts" section. Click the Plus icon next to "Scripts" to add a new script, and the Trash icon next to a specific script to delete one.
home_assistant:
scripts:
script.movie_time:
sentences:
- I want to watch a movie
- It's movie time
response: It is now time to watch a movie
Example Sentences
A lot of the examples sentences try to follow the same pattern. There is a lot of "turn on"/"turn off", open/close, and in one case lock/unlock for activating/deactivating most things. Specifics around components can be found below (like to change light color or something).
Climate
Climate is ignored by default
The climate control is ignored by default and can be enabled by removing it from the ignore_domains
setting.
- Turn on/off the ecobee
- Set the hvac to 76 degrees
- Set the window ac to cool (HVAC mode)
- Set the ecobee high temperature to 80
- Set the ecobee low temperature to 76 degrees farenheit
- Turn on/off the hvac aux heat
- set the ecobee to eco (HVAC preset)
Cover
- Open the garage door
- Close the pergola roof
- Stop the living room window (works for tilt or open/close)
- Tilt open the living room window
- Open the hall window half way
Fan
- Turn on/off the living room fan
- Toggle the ceiling fan
- *Set the kitchen fan to [not] oscillate
- *Start/stop oscillating the attic fan
- *Oscillate the attic fan
- *Turn on/off the attic fan osccilation
- Set/make/change the living room fan to sleep
- Reverse the ceiling fan
- Increase/Decrease the kitchen fan
- Set/make/change the living room fan to high/medium/low
Home Intent will only allow the specific fans that can oscillate to be set for oscillation. Same thing with presets and fan speeds.
We're not sure what the best sentence approach is for the fan oscillation, so we've put in a lot of variation for now. Going to do some tests to see what works well. It performs a toggle under the covers so as long as it picks up the fan and "oscillate" it'll probably work.
Group
- Toggle the (basement lights)
- Turn on the (basement lights)
- Turn off (super cool lights)
The group friendly names are in parenthesis.
Humidifier
Humidifier is ignored by default
The humidifier control is ignored by default and can be enabled by removing it from the ignore_domains
setting.
- Turn on/off the humidifer
- Set the humidifier to 68%
- Set the dehumidifier to 72%
- Set the hygrostat to eco
Light
- Turn on the kitchen light
- Set the master bedroom light to 80% brightness
- Make the den red
- Change the bathroom light to blue
- Make the kitchen daylight
- set the kitchen to warm white at 80% brightness
A full list of colors can be found in the source as well as the color temperatures.
Lock
Lock is ignored by default
The lock control is ignored by default and can be enabled by removing it from the ignore_domains
setting.
- Lock the front door
- Unlock the kitchen door
- Open the front gate (for locks that support opening as well)
Media Player
Media Player is new as of 7/2022.
- Turn off the shield
- Turn on the shield
- Turn up/down the volume of the chromecast
- Mute the volume on the chromecast
- Set the volume of the shield to 90
- Play/Pause on the chromecast
- Play next/previous track on the chromecast audio
Remote
- Turn on the tv
- Turn off the tv
Shopping List
Requires the shopping_list component in Home Assistant
- Add oreos to the shopping list
- Check oreos off the list
- Uncheck oreos from the shopping list
- Mark bleach off the shopping list
- Check everything off the list
- Unmark everything from the shopping list
Either Check or mark can be used as well as uncheck or unmark. The word shopping is always optional. A full list of shopping items can be found in the source.
Switch
- Turn on the fan
- Turn off the plants
- toggle basement fan
Advanced Customization
A lot of the components slot values can be overridden with your own slot values.
A custom defined list of light colors can be placed in /config/home_assistant/colors.txt
and the default shopping items can be replaced with /config/home_assistant/shopping_items.txt
. A custom list of color temperatures can be defined at /config/home_assistant/color_temperature.yaml
in the format of the default values.
The various Home Assistant sub components can also be customized further using customization json if desired. These are the respective filenames:
- Climate:
/config/customizations/home_assistant/climate.yaml
- Covers:
/config/customizations/home_assistant/cover.yaml
- Fans:
/config/customizations/home_assistant/cover.yaml
- Groups:
/config/customizations/home_assistant/group.yaml
- Humidifier:
/config/customizations/home_assistant/humidifier.yaml
- Lights:
/config/customizations/home_assistant/light.yaml
- Locks:
/config/customizations/home_assistant/lock.yaml
- Media Player:
/config/customization/home_assistant/media_player.yaml
- Remote:
/config/customizations/home_assistant/remote.yaml
- Shopping List:
/config/customizations/home_assistant/shopping_list.yaml
- Switches:
/config/customizations/home_assistant/switch.yaml