top of page

Expose Home Assistant Automations to Alexa with Voice Commands

  • Writer: Andrea Leandri
    Andrea Leandri
  • Jun 30
  • 6 min read

Skill level: Beginner to Intermediate | Time to complete: 20-30 minutes

What you'll build: A way to trigger any Home Assistant automation by voice - "Alexa, charge the car" - using a tiny HA script as a bridge, exposed to Alexa as a scene, and wired into an Alexa Routine.

The Idea

You already have automations doing useful things in Home Assistant - like the Solar EV Charging automation on this site, which normally only fires when solar surplus is detected. But sometimes you want to force it to run right now, regardless of conditions - maybe it is cloudy but you still want to top up the car before a trip.

This guide shows the pattern for making that possible with a simple voice command: Alexa, charge the car.

The trick is not exposing the automation directly - Alexa does not have a clean way to trigger an automation on demand with all its normal conditions skipped. Instead, you create a tiny script that triggers the automation and tells it to skip its conditions, then expose that script to Alexa as a scene.

"Alexa, charge the car" leads to an Alexa Routine, which triggers the HA scene "Charging the car", which is really a script, which calls automation.trigger with skip_condition: true, which makes your existing automation run immediately with conditions bypassed.

This pattern works for any automation you have, not just EV charging. Want to force the BBQ weather check to run right now? Want to manually trigger cinema mode without the PS5 actually being on? Same pattern, different script.

What You'll Need

  • Home Assistant - any recent version (2024.x or later)

  • Alexa Media Player or the official Alexa Smart Home integration - for HA to be discoverable by Alexa

  • HTTPS access to HA - required for Alexa to discover and control HA devices, covered in the DuckDNS guide on this site

  • An existing automation you want to trigger on demand - any automation already running in your HA instance

  • Amazon Echo device and Alexa app - for creating the routine

Why a Script Instead of Exposing the Automation Directly

Automations in HA can technically be exposed to Alexa, but the result is clunky - Alexa sees it as a toggle that turns the automation on or off entirely, not a one-time run this now trigger. That is not what you want for something like EV charging, where you want to force a single run while leaving the automation enabled for its normal solar-triggered behaviour.

A script solves this cleanly. A script is a fire-and-forget sequence of actions - perfect for do this thing once, right now. By having the script call automation.trigger with skip_condition: true, you get the best of both worlds: the automation stays enabled and keeps running normally on its own triggers, the script gives you an on-demand force it now button, and Alexa only ever sees the script (exposed as a scene), never touches the automation's enabled or disabled state.

Step 1: Create the Bridge Script

Settings → Automations & Scenes → Scripts → Add Script → Edit in YAML. Paste a script like this, replacing the automation entity ID with your own:

alias: "Charging the car"
description: "Manually force the solar EV charging automation to run, bypassing conditions"
sequence:
  - action: automation.trigger
    target:
      entity_id: automation.start_car_charging_when_solar_excess_above_2000w   # your automation
    data:
      skip_condition: true

action: automation.trigger - the HA service that manually fires an automation, exactly as if its trigger condition had just been met. target: entity_id - the specific automation you want to force-run. Find it in Settings → Automations → click the automation → three-dot menu → Show entity ID. skip_condition: true - the key part. It tells HA to run the automation's actions immediately, ignoring whatever conditions are normally checked. For the EV charging automation, this skips the P1 meter export check and starts the charger directly.

Save the script. Give it a clear, voice-friendly name - this name often becomes part of how Alexa refers to it later.

Test the script manually first

Before connecting Alexa at all, confirm the script works. Settings → Automations & Scenes → Scripts → Charging the car → Run. Your EV charger should start immediately, regardless of current solar conditions. If it does, the bridge works - now connect Alexa.

Step 2: Expose the Script to Alexa

For Alexa to see and control anything in HA, the entity needs to be exposed via the Voice Assistants exposure settings.

Settings → Voice Assistants → Expose tab. Find your script in the list (it will appear as script.charging_the_car or similar) and toggle it on.

Alternative path: if you are using the official Alexa Smart Home integration (alexa: smart_home: in configuration.yaml, covered in the Jarvis guide on this site), the same exposure settings apply - anything toggled on in the Expose tab becomes visible to Alexa's device discovery.

Re-run Alexa device discovery: open the Alexa app on your phone, Devices → + → Add Device → Other (or say Alexa, discover devices). Your script should appear in the Alexa app's device list - Alexa treats exposed HA scripts as a switch or scene you can turn on.

Step 3: Create the Alexa Routine

This is where the actual voice phrase gets wired up. Routines in the Alexa app let you map any spoken phrase to one or more actions, including turning on the HA scene you just exposed.

Alexa app → More → Routines → + (create routine).

Set the trigger phrase

Tap When this happens → Voice → enter your phrase. Use natural language with the keywords you actually want to say: "Charge the car" or "Start charging the car". You can add multiple phrases that all trigger the same routine.

Tip: Avoid phrases that overlap with Alexa's built-in commands. "Charge the car" is safe; "turn on the car" might conflict with other smart plugs you've named similarly.

Set the action

Tap Add action → Smart Home → Select a device → find your exposed script → Turn on. Save the routine.

Step 4: Test the Full Voice Flow

Say to any Echo in the house: "Alexa, charge the car". The flow: Alexa matches your phrase to the routine, sends a turn on command to the exposed HA script entity, HA runs the script, the script calls automation.trigger with skip_condition: true on your EV charging automation, and the automation's actions run immediately - charger starts, notification sent, Alexa announcement plays.

If everything is wired correctly, the car charger should start within a few seconds of the voice command, regardless of whether solar conditions are currently met.

Reusing This Pattern for Other Automations

The same three-step pattern works for any automation on your system. A few ideas from guides on this site:

Force the BBQ weather check right now, voice phrase "Alexa, check the BBQ weather":

alias: "Check BBQ weather"
sequence:
  - action: automation.trigger
    target:
      entity_id: automation.bbq_weather_notifier_upcoming_weekend
    data:
      skip_condition: true

Force the garden watering reminder, voice phrase "Alexa, check the garden":

alias: "Check if garden needs water"
sequence:
  - action: automation.trigger
    target:
      entity_id: automation.garden_watering_reminder_smart
    data:
      skip_condition: true

Force PS5 cinema mode without the PS5 actually being on, voice phrase "Alexa, cinema mode":

alias: "Cinema mode now"
sequence:
  - action: automation.trigger
    target:
      entity_id: automation.cinema_mode_ps5_turns_on
    data:
      skip_condition: true

Each one is the same five-line script with a different entity_id and a different voice phrase. Once you have done it once, adding more takes about two minutes each.

Why skip_condition Matters

By default, automation.trigger re-fires the automation but still checks its conditions - so if your EV charging automation has a condition checking the P1 meter is exporting more than 2000W, calling automation.trigger without skip_condition on a cloudy day would do nothing, because the condition would still fail.

skip_condition: true is what makes this genuinely an override - a way to say run this now, I do not care what the conditions say. Without it, this whole pattern would not actually let you force anything; it would just be a slower way of waiting for the automation to fire on its own.

Troubleshooting

  • Script doesn't appear in Alexa app after discovery: Confirm it is toggled on in Settings → Voice Assistants → Expose. Try Alexa, discover devices again - sometimes a second scan is needed.

  • Routine triggers but automation doesn't run: Check the automation's Traces in HA. If Traces show nothing, the script-to-automation link is broken - verify the entity_id matches exactly.

  • Automation runs but conditions still block it: Confirm skip_condition: true is present and correctly indented under data: in the script.

  • Voice phrase doesn't trigger anything: Alexa's built-in NLU may be matching it to something else. Try a more distinctive phrase, or test the routine manually first to isolate whether it is a voice recognition issue or a routine configuration issue.

  • Script entity doesn't show in the Expose list: Scripts only appear after being saved at least once. Confirm you clicked Save before checking Voice Assistants.


Guide written by a Home Assistant enthusiast in Utrecht. A five-line script is sometimes all that stands between automatic and automatic, but I can also just ask for it.

Comments

Rated 0 out of 5 stars.
No ratings yet

Add a rating
bottom of page