Home Assistant + Alexa: The Complete Integration Guide

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.

Check Your Devices Local Voice Guide

Why Connect Alexa to Home Assistant?

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.

๐ŸŽ™๏ธ

Voice Control Everything

Expose any Home Assistant entity to Alexa. Zigbee sensors, ESPHome devices, custom scripts, scenes. If Home Assistant can see it, Alexa can control it.

๐Ÿ”„

Two-Way Communication

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.

๐Ÿ 

Keep Your Echo Hardware

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.

โšก

Alexa Routines on Steroids

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.

How the Alexa Integration Works

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:

1

Voice to Amazon

Your Echo device records your voice and sends it to Amazon's cloud for processing.

2

Amazon to HA

Amazon identifies the intent (turn on, set temperature, etc.) and sends it to Home Assistant via Nabu Casa or your Lambda function.

3

HA Executes Locally

Home Assistant receives the command and controls the device on your local network. Zigbee, Z-Wave, Wi-Fi, whatever the protocol.

4

Confirmation

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.

Method 1: Nabu Casa (Easy, 5 Minutes)

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.

Setup Steps

  1. Go to Settings โ†’ Home Assistant Cloud in your HA instance
  2. Create a Nabu Casa account and subscribe ($6.50/month)
  3. Enable Alexa under the Cloud integrations
  4. Open the Alexa app on your phone
  5. Go to Skills & Games, search for "Home Assistant"
  6. Enable the skill and link your Nabu Casa account
  7. Say "Alexa, discover devices" or tap Discover in the app
  8. Your Home Assistant entities appear as Alexa devices

Pros

  • 5-minute setup
  • No port forwarding
  • No AWS account needed
  • Automatic SSL
  • Supports Google Home too
  • Funds HA development

Cons

  • $6.50/month ongoing cost
  • Commands route through Nabu Casa servers
  • Slight dependency on third-party uptime

Method 2: Manual Lambda Setup (Free, 1-2 Hours)

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).

What You Need

  • A domain name pointing to your Home Assistant instance
  • SSL certificate (Let's Encrypt works fine)
  • Port forwarding on your router (or a reverse proxy like Cloudflare Tunnel / Tailscale Funnel)
  • An AWS account (free tier)
  • An Amazon Developer account (free)

High-Level Steps

  1. Ensure your HA instance is accessible via HTTPS from the internet
  2. Create an Alexa Smart Home Skill in the Amazon Developer Console
  3. Create an AWS Lambda function using the haaska project (Python)
  4. Configure Account Linking with your HA instance as the OAuth provider
  5. Set the Lambda function as the skill endpoint
  6. Add the Alexa integration in your configuration.yaml:
    alexa:
      smart_home:
        filter:
          include_domains:
            - light
            - switch
            - climate
            - cover
            - fan
            - lock
            - script
          include_entities:
            - scene.movie_night
            - scene.good_morning
  7. Link your HA account in the Alexa app
  8. Discover devices

Honest 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.

Choosing What Alexa Can See

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.

Via the UI (Nabu Casa)

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.

Via YAML (Manual Setup)

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

Naming Tip

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.

Supported Entity Types

HA DomainAlexa TypeWhat You Can Do
lightLightOn/off, brightness, color, color temperature
switchSwitchOn/off
climateThermostatTemperature, mode, read current temp
coverBlind/ShutterOpen, close, set position
fanFanOn/off, speed
lockLockLock/unlock (with PIN confirmation)
sceneSceneActivate ("Alexa, turn on movie night")
scriptSwitchRun complex automations via voice
sensorSensorRead temperature, humidity ("Alexa, what's the bedroom temperature?")

Bonus: Alexa Media Player Integration (HACS)

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.

TTS Announcements

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.

Media Control

Play music, podcasts, or radio on your Echo from Home Assistant automations. Start your morning playlist automatically when your alarm goes off.

Do Not Disturb

Automate Do Not Disturb mode. Turn it on when you start a meeting (calendar integration), at bedtime, or when the baby is sleeping.

Example: Doorbell Announcement

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: announce

Install 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.

5 Powerful Alexa + Home Assistant Automations

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.

1. "Alexa, Good Morning"

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: tts

2. Washing Machine Done Alert

Use 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_running

3. Movie Night Scene

Say "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: tts

4. "Alexa, Where Are My Keys?"

If 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.

5. Bedtime Routine with Gradual Fade

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.

Alexa vs. Home Assistant Assist: Which Should You Use?

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.

FeatureAlexaHA Assist
Natural languageExcellentGood and improving
PrivacyCloud-based, Amazon processes voice100% local, nothing leaves your network
Music/mediaSpotify, Amazon Music, radio, podcastsMusic Assistant (growing)
Timers and alarmsBuilt in, reliableBasic support
Hardware costEcho Dot from $25ESP32-S3 from $5, ATOM Echo $13
Internet requiredYes, alwaysNo
Device controlVia cloud skillDirect, instant

Our recommendation

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.

Pro Tips for Alexa + Home Assistant

Name Entities for Voice

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.

Use Scripts as Switches

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.

Group Lights Properly

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.

Avoid Duplicate Devices

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.

Use Alexa Routines for Phrases

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.

Re-discover After Changes

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.

Getting Started This Weekend

Here's a realistic plan to get Alexa and Home Assistant working together in one afternoon.

HOUR 1

Connect the Platforms

Sign up for Nabu Casa (or set up Lambda if you prefer). Enable the Alexa skill. Link your accounts. Run device discovery.

HOUR 2

Curate Your Entities

Review what's exposed to Alexa. Remove clutter. Rename entities for voice friendliness. Create light groups for each room.

HOUR 3

Build Your First Scripts

Create 2 or 3 scripts (good morning, goodnight, movie night). Expose them to Alexa. Install Alexa Media Player via HACS for TTS announcements.

Frequently Asked Questions

Can Alexa control Home Assistant devices?

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.

Do I need Nabu Casa for Alexa integration?

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.

Does Alexa work locally with Home Assistant?

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.

Can I use Alexa routines with Home Assistant?

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.

Is Home Assistant Assist a replacement for Alexa?

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.

Ready to Connect Alexa to Home Assistant?

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.

Free Smart Home Scan Local Voice Guide Migrate from Alexa