Skip to main content
  1. Projects and Blogs/

Controlling Home Assistant Devices with Alexa — Locally and Cloud-Free

·660 words·
Home Assistant Alexa Node-Red Automation Local Control Proxmox Iot
Oliver Hihn
Author
Oliver Hihn
Driven by curiosity, powered by code. I design and build custom tech for fun and function.
Table of Contents

Voice Control Without the Cloud
#

Most Alexa integrations for Home Assistant rely on cloud services, vendor accounts, and a sprinkle of vague, hand-wavy magic. I wasn’t having it. I wanted fully local voice control: no cloud, no accounts, just my LAN, my rules.

That’s where node-red-contrib-amazon-echo comes in. It emulates Philips Hue-like devices on your network so Alexa can discover and control them. Completely cloud-free.


The First Attempt: node-red-contrib-alexa-local
#

I initially started with node-red-contrib-alexa-local, which looked promising at first. The idea was simple: emulate Alexa devices locally and let them be discovered without any cloud involvement.

But… it didn’t work. Not at all.

Some digging revealed a very blunt warning:

!!!THIS NODE IS NO LONGER WORKING!!!

Why?
#

  • Modern Alexa devices require the discovery process to happen over port 80 on your Node-RED instance.
  • This node used random ports to avoid the need for root permissions, which worked fine for older Echo devices, but completely fails on newer ones.
  • The developer even recommended switching to node-red-contrib-amazon-echo, which is essentially the same thing, but with proper port 80 support.

So I followed that advice and installed the recommended node:

node-red-contrib-amazon-echo


Setting Up the Alexa Hub and Devices
#

I configured an Amazon Echo Hub in Node-RED. This hub handles discovery and emulates Hue-like devices for Alexa.

A basic flow looks like this:

  1. Amazon Echo Hub → Emulates a Hue bridge.
  2. Amazon Echo Device → One for each Home Assistant entity.
  3. Home Assistant Service Call → Executes the desired action.

For example, I created a virtual device named Living Room Light. When Alexa turns it on, Node-RED passes the command to Home Assistant via a light.turn_on service call.

Node-Red Screenshot
Screenshot of the example flow.

I also added a rate limit to the Living Room Light device. I noticed that sometimes Alexa sends two or more trigger messages in quick succession (within 1–2 seconds), causing the light to toggle twice. I’m not sure if this is a bug or just a quirk, but the limit node ensures only a single trigger goes through, regardless of how many times Alexa fires.


Alexa Discovery & Routines
#

Once everything was in place, I asked Alexa:

"Alexa, discover devices."

And just like that, Living Room Light appeared as if it were a native device. I then created custom Alexa Routines. Since my RF switch (used for lights) is already integrated with Home Assistant, as shown in my previous blog post, I could control it through these routines.

👈 Integrating this switch we hacked a while back

Cracking the Code of Kinetic RF Switches
·2092 words
Rf Reverse Engineering Iot Arduino Mqtt Smart Home Rtl-Sdr

Since the RF switch can only be triggered (not queried), it doesn’t report its current state back to Home Assistant. So, I configured Alexa routines where both “Turn on Living Room Light” and “Turn off Living Room Light” call the same Home Assistant service, toggling the switch.

The trick is to use aliases like Turn on Living Room Light and Turn off Living Room Light so Alexa understands the commands.

Routines Screenshot
The routines setup inside the Alexa App.
  • “Turn on Living Room Light” → Activates the RF switch
  • “Turn off Living Room Light” → Activates the RF switch

This way, I can control my lights with simple voice command, all while keeping everything local and private.

Of course, since the switch doesn’t report its state, it’s more of a stateless toggle. Saying “Turn on” may actually turn the light off, and vice versa. But honestly, that’s a minor inconvenience I can live with.


Final Thoughts
#

This integration has been a game-changer for my home automation setup. I now have:

  • Local Control — All traffic stays on my LAN.
  • Privacy and Performance — No cloud interaction at all.
  • Flexibility — Any Home Assistant device is now voice-controllable.

The next step? I’m working on integrating my blinds and creating routines for even more seamless voice control.

Stay tuned for part two!