You already talk to Alexa every day. Now imagine she can control every single device in Home Assistant, from Zigbee sensors to custom automations, with a simple voice command. This guide walks you through both setup methods, shows you the best automations to build, and explains when to use Alexa vs. Home Assistant's own voice assistant.
Jump to a section
Alexa is great at understanding natural language. Home Assistant is great at controlling every device in your home. Together, they cover each other's weaknesses. Alexa gives you voice control in every room without needing to open an app, while Home Assistant gives Alexa access to devices and automations that Amazon's ecosystem can't touch on its own.
Expose any Home Assistant entity to Alexa. Zigbee sensors, ESPHome devices, custom scripts, scenes. If Home Assistant can see it, Alexa can control it.
Alexa can trigger Home Assistant automations, and Home Assistant can send announcements to your Echo devices. TTS alerts, morning briefings, doorbell notifications on every speaker.
Already have Echo Dots around the house? No need to replace them. Add Home Assistant behind the scenes and your existing Alexa setup gets superpowers.
Expose Home Assistant scripts as switches in Alexa. Now your Alexa Routines can trigger complex multi-step automations that Amazon's app could never build alone.
Before diving into setup, it helps to understand the data flow. When you say "Alexa, turn on the living room lights," here is what happens:
Your Echo device records your voice and sends it to Amazon's cloud for processing.
Amazon identifies the intent (turn on, set temperature, etc.) and sends it to Home Assistant via Nabu Casa or your Lambda function.
Home Assistant receives the command and controls the device on your local network. Zigbee, Z-Wave, Wi-Fi, whatever the protocol.
Home Assistant reports back to Amazon, and Alexa says "OK" or confirms the action. Total time: under 2 seconds.
The key thing to understand: voice processing always happens in Amazon's cloud (that's how Alexa works), but the actual device control is local via Home Assistant. This is a good trade-off for most people.
Nabu Casa is the official Home Assistant cloud service. It costs $6.50 per month and handles all the complicated parts of connecting to Alexa (and Google Home). If you just want it working, this is the way to go. Your subscription also supports Home Assistant development.
If you prefer not to pay a monthly fee, you can set up the Alexa integration yourself using an AWS Lambda function and an Alexa Smart Home Skill. This is more work upfront, but the ongoing cost is essentially zero (Lambda free tier covers typical smart home usage).
configuration.yaml: alexa:
smart_home:
filter:
include_domains:
- light
- switch
- climate
- cover
- fan
- lock
- script
include_entities:
- scene.movie_night
- scene.good_morningHonest take: the manual setup works well once it's running, but the initial configuration is fiddly. If you value your time at more than a few dollars per hour, Nabu Casa pays for itself in the first month. The manual route makes more sense if you already have an AWS setup or specifically want to avoid any third-party cloud dependency beyond Amazon itself.
By default, Home Assistant exposes a reasonable set of entities to Alexa. But you probably want to fine-tune this. Nobody needs Alexa seeing your system monitor sensors or update entities.
Go to Settings โ Voice assistants โ Alexa. You get a list of all entities with toggles. Flip on what you want, flip off what you don't. You can also rename entities here so Alexa uses friendlier names.
Use the filter section in your Alexa configuration. You can include or exclude by domain, entity ID, or a combination:
alexa:
smart_home:
filter:
include_domains:
- light
- switch
- climate
- cover
exclude_entities:
- switch.system_restart
- light.notification_led Alexa works best with simple, room-based names. Instead of "light.kitchen_counter_led_strip_1," rename it to "Kitchen Counter Lights" in the HA entity settings. Alexa will understand "turn on the kitchen counter lights" perfectly. Avoid special characters and abbreviations in entity friendly names.
| HA Domain | Alexa Type | What You Can Do |
|---|---|---|
| light | Light | On/off, brightness, color, color temperature |
| switch | Switch | On/off |
| climate | Thermostat | Temperature, mode, read current temp |
| cover | Blind/Shutter | Open, close, set position |
| fan | Fan | On/off, speed |
| lock | Lock | Lock/unlock (with PIN confirmation) |
| scene | Scene | Activate ("Alexa, turn on movie night") |
| script | Switch | Run complex automations via voice |
| sensor | Sensor | Read temperature, humidity ("Alexa, what's the bedroom temperature?") |
The official integration lets Alexa control Home Assistant. But what about the other direction? The Alexa Media Player custom component (available via HACS) lets Home Assistant control your Echo devices. This opens up some powerful use cases.
Send text-to-speech announcements to any Echo. "Front door opened" on the kitchen Echo, weather updates on the bedroom Echo, custom alerts when the washing machine finishes.
Play music, podcasts, or radio on your Echo from Home Assistant automations. Start your morning playlist automatically when your alarm goes off.
Automate Do Not Disturb mode. Turn it on when you start a meeting (calendar integration), at bedtime, or when the baby is sleeping.
automation:
- alias: "Doorbell announcement on all Echos"
trigger:
- platform: state
entity_id: binary_sensor.front_door_bell
to: "on"
action:
- service: notify.alexa_media
data:
message: "Someone is at the front door."
target:
- media_player.kitchen_echo
- media_player.living_room_echo
data:
type: announceInstall Alexa Media Player through HACS. You will need to log in with your Amazon account credentials. The integration uses Amazon's web interface under the hood, so it may occasionally need re-authentication.
These automations show what becomes possible when you connect both platforms. Some run from Alexa voice commands, others use Home Assistant to control your Echo speakers.
Expose a Home Assistant script as a switch. When you say the trigger phrase, HA opens the blinds, sets lights to warm white at 40%, starts the coffee machine, and reads today's calendar through TTS on the bedroom Echo.
script:
good_morning:
alias: "Good Morning"
sequence:
- service: cover.open_cover
target:
entity_id: cover.bedroom_blinds
- service: light.turn_on
target:
entity_id: light.bedroom
data:
brightness_pct: 40
color_temp_kelvin: 3000
- service: switch.turn_on
target:
entity_id: switch.coffee_machine
- service: notify.alexa_media_bedroom_echo
data:
message: >
Good morning. Today you have
{{ states('sensor.calendar_next_event') }}.
Outside it is {{ states('sensor.outdoor_temp') }} degrees.
data:
type: ttsUse a smart plug with energy monitoring to detect when the washing machine finishes (power drops below 5W). Announce it on the kitchen Echo so you don't forget wet laundry for three days.
automation:
- alias: "Washing machine finished"
trigger:
- platform: numeric_state
entity_id: sensor.washing_machine_power
below: 5
for: "00:03:00"
condition:
- condition: state
entity_id: input_boolean.washing_machine_running
state: "on"
action:
- service: notify.alexa_media
data:
message: "The washing machine is done. Time to move it to the dryer."
target: media_player.kitchen_echo
data:
type: announce
- service: input_boolean.turn_off
entity_id: input_boolean.washing_machine_runningSay "Alexa, turn on movie night" and Home Assistant dims the lights to 10%, closes the blinds, turns on the TV, sets the soundbar to the right input, and enables Do Not Disturb on all Echo devices.
script:
movie_night:
alias: "Movie Night"
sequence:
- service: light.turn_on
target:
entity_id: light.living_room
data:
brightness_pct: 10
color_temp_kelvin: 2200
- service: cover.close_cover
target:
entity_id: cover.living_room_blinds
- service: media_player.turn_on
target:
entity_id: media_player.living_room_tv
- service: notify.alexa_media
data:
message: "Enjoy your movie."
target: media_player.living_room_echo
data:
type: ttsIf you use Tile or similar BLE trackers with ESPresense, expose a script that triggers the tracker to beep. Ask Alexa, and your keys start making noise.
Say "Alexa, goodnight." Home Assistant locks the doors, arms the alarm, sets the thermostat to sleep mode, slowly dims all lights over 10 minutes, and enables Do Not Disturb on every Echo. Alexa responds with a brief weather forecast for tomorrow.
Home Assistant now has its own voice assistant called Assist. It runs entirely locally, no cloud, no Amazon, no microphone data leaving your house. So should you ditch Alexa? Here's the honest comparison.
| Feature | Alexa | HA Assist |
|---|---|---|
| Natural language | Excellent | Good and improving |
| Privacy | Cloud-based, Amazon processes voice | 100% local, nothing leaves your network |
| Music/media | Spotify, Amazon Music, radio, podcasts | Music Assistant (growing) |
| Timers and alarms | Built in, reliable | Basic support |
| Hardware cost | Echo Dot from $25 | ESP32-S3 from $5, ATOM Echo $13 |
| Internet required | Yes, always | No |
| Device control | Via cloud skill | Direct, instant |
Use both. Put Alexa in shared spaces where you want music, timers, and rich voice features. Use Assist (with local wake word detection) in private spaces like bedrooms and offices where you want privacy. Home Assistant makes it easy to run both side by side.
Set friendly names that sound natural when spoken. "Kitchen lights" is better than "kitchen_ceiling_led_strip_zigbee." Alexa needs to match what you say to an entity name, so keep it simple and room-based.
Alexa can't trigger HA automations directly, but it can turn on switches. Expose your scripts to Alexa, and you can say "Alexa, turn on party mode" to run any complex sequence you've built in Home Assistant.
Create HA light groups and expose those to Alexa instead of individual bulbs. "Turn off the bedroom" should hit one group entity, not five individual lights. Faster response, cleaner Alexa device list.
If a device is already in the Alexa app natively (like a Philips Hue bulb via the Hue skill), don't also expose it from Home Assistant. You'll get duplicates and Alexa won't know which one to control. Pick one path and stick with it.
Want a custom trigger phrase that doesn't start with "turn on"? Create an Alexa Routine with a custom phrase, then have it activate a Home Assistant scene or switch. "Alexa, I'm leaving" can trigger your goodbye script without awkward wording.
After adding or renaming entities in Home Assistant, say "Alexa, discover devices" to sync the changes. Alexa caches the device list, so she won't see updates until you run discovery again.
Here's a realistic plan to get Alexa and Home Assistant working together in one afternoon.
Sign up for Nabu Casa (or set up Lambda if you prefer). Enable the Alexa skill. Link your accounts. Run device discovery.
Review what's exposed to Alexa. Remove clutter. Rename entities for voice friendliness. Create light groups for each room.
Create 2 or 3 scripts (good morning, goodnight, movie night). Expose them to Alexa. Install Alexa Media Player via HACS for TTS announcements.
Yes. Once you connect Home Assistant to Alexa (either through Nabu Casa or a manual Lambda setup), Alexa can control any device you choose to expose. Lights, switches, thermostats, locks, covers, fans, scripts, and scenes all work. You control exactly which entities Alexa can see.
No, but it is the easiest option. Nabu Casa ($6.50/month) handles all the cloud plumbing automatically. Without it, you need to set up an AWS Lambda function, create an Alexa Smart Home Skill, configure OAuth, and maintain your own SSL certificate and domain. The manual route is free but takes 1 to 2 hours of initial setup.
Not exactly. Alexa voice processing always happens in Amazon's cloud. Your voice command goes to Amazon, which sends the intent to Home Assistant (via Nabu Casa or Lambda), and Home Assistant executes it locally on your network. The device control itself is local, but the voice recognition requires internet.
Yes. Any Home Assistant entity exposed to Alexa appears in the Alexa app and can be used in Alexa Routines. You can also expose Home Assistant scripts as switches, so saying a phrase triggers a complex automation. For even more power, use Home Assistant automations triggered by Alexa sensor states.
Home Assistant Assist is a fully local voice assistant that does not need internet. It works great for basic device control and is improving fast. But as of 2026, Alexa still handles natural language, music, timers, shopping lists, and skills better. Many people run both, using Assist for privacy-sensitive rooms and Alexa where they want richer voice features.
Start with a free scan to see which of your current smart home devices work with Home Assistant, then follow this guide to add Alexa voice control on top.