Helping guide you through the never-ending forest of technology, into the open glade of easy to follow posts!
Alexa Control for more Devices: Homebridge Plugin
Alexa Control for more Devices: Homebridge Plugin

Alexa Control for more Devices: Homebridge Plugin

Getting all my smart home devices on HomeKit is great! But my main issue is that when I began looking for a voice-assistant Apple’s HomePod didn’t exist—and now that they do I’m already deep into the Alexa ecosystem with one in every room! This meant I needed to expose my Homebridge devices to Alexa.

Some Homebridge devices expose themselves natively to Alexa, such as the Gledopto LED Controllers, which I wrote about here, but some is not all… and I’m aiming for the seamless smart home experience!

After a quick Google, I found a Homebridge plugin that aimed to solve this issue! The installation guide for this used to be fairly complex and involved reinstalling Homebridge with an Alexa build. Luckily the setup for this is now much simpler!

Homebridge Setup

The setup for this plugin is extremely simple and, unlike most plugins, the homebridge-alexa plugin doesn’t create any devices in the HomeKit app. If you haven’t already got Homebridge setup, check out my setup guide here. To install homebridge-alexa, type the below command:

sudo npm install -g homebridge-alexa

Once installed you’ll need to create an account at https://www.homebridge.ca/. This account will be used to link the Homebridge Plugin and your Alexa account.

Note: The password you choose for this will be written in plain text in your config.json.

After creating your account you can now begin configuring the Homebridge plugin. The syntax is straightforward and only requires a few parameters to setup.

If you do require some additional customisation you can find a full list of the plugin’s parameters here: https://www.npmjs.com/package/homebridge-alexa#optional-parameters, the below code will be fine for most scenarios:

"platforms": [
{
	"platform": "Alexa",
	"name": "Alexa",
	"username": "username",
	"password": "P4ssw0rd",
	"pin": "031-45-154",
	"refresh": 900
	}
]

If you have multiple instances of Homebridge running, you will only need to do this on one instance. The plugin will automatically expose the other Homebridge devices to Alexa.

For this plugin to function correctly it requires you to run Homebridge in insecure mode, to do this start Homebridge using the following command:

homebridge -I

If you use systemd to automatically start your Homebridge plugin on boot you will need to add this flag to the systemd file located at /etc/default/homebridge I’ve included the full code and instructions for this at the bottom of this post.

Setting up the Alexa Skill

After saving your config.json, open the Alexa app. Using the burger menu open the ‘Skills & Games’ section and search for the Homebridge skill.

Once you’ve found the skill you’ll want to install it. When enabling the skill you will be prompted to log in, use the same credentials that you used to sign up for homebridge.ca. After this you will be asked to Discover Devices, this will take around 20 seconds and will add all of your Homebridge devices to Alexa.

The ability to add these non-HomeKit non-Alexa devices to both systems using Homebridge means that I can happily stay in my odd collaboration between Apple HomeKit and Amazon Alexa.

Overall it works perfectly, and am extremely happy with this plugin. If you have any questions about this setup drop a comment below and I’d be more than happy to answer them!

systemd Setup

As mentioned above, if you’re using systemd with Homebridge you’ll need to add the -I (insecure) flag to your code. This file is located at /etc/default/homebridge and you’ll need to adjust it to look like the below:

# Defaults / Configuration options for homebridge
# The following settings tells homebridge where to find the config.json file and where to persist the data (i.e. pairing and others)
HOMEBRIDGE_OPTS=-I -U /var/homebridge

# If you uncomment the following line, homebridge will log more 
# You can display this via systemd's journalctl: journalctl -f -u homebridge
# DEBUG=*

After updating this file you will need to reload and start the systemctl system. To do this type the below commands:

sudo systemctl stop homebridge
sudo systemctl daemon-reload
sudo systemctl start homebridge

Featured Equipment and Gear

As an Amazon Associate, TechTrail earns from qualifying purchases made with some store links.


by Sam Brooks

Sam is the founder and editor for Tech Trail. With a background in Broadcast Engineering, and great enthusiasm for smart home and emerging technologies.

More by Sam →

  • Twitter
  • KoFi
  • Email

Sam Brooks

Sam is the founder and editor for Tech Trail. A Broadcast Engineer with a passion for technology and design. Working on the bleeding edge of technology Sam is exposed to a vast amount of emerging technologies and likes to keep up to date on the latest tech in general.

8 Comments

  1. Ron Lisle

    Thank you for this tutorial. I followed the instructions, and Alexa found and installed all 19 devices that I have installed on HomeKit/Homebridge, but I cannot control them from Alexa. I can control them using the Home app though, just not Alexa. Any ideas about what can be causing the problem?

  2. Dean

    Thanks for your site and information. Followed your post but am having similar issue.

    Devices are discovered but Alexa responds that “XXX device is not responding” when I try to voice control the discovered devices?

    Running Homebridge on OS X Catalina. Installed using hb-service and logs show the -I flag is used upon HB Start Up. Is there a anyway to verify that HB is really running in insecure mode?

    Anything else to look for that would cause the device to not respond after discovery?

    I see the following on the skill registration site (everything looks green):

    Account Status
    1 – Date Account Created Tue Mar 10 2020 02:16:05 GMT
    2 – Date of last plugin login Tue Mar 10 2020 03:35:52 GMT
    3 – Date Skill linked Tue Mar 10 2020 03:03:47 GMT
    4 – Date of last Alexa command Tue Mar 10 2020 03:37:19 GMT
    5 – Date of last plugin response Tue Mar 10 2020 03:37:19 GMT
    6 – Date of last sensor event message
    7 – Date Last Used Website Tue Mar 10 2020 03:56:49 GMT

    Notes:
    – This is an issue
    – Another item is blocking
    – This is okay

    2 – This is only for plugin version 0.2.4 or newer ( March 2019 )
    3 – This is only for accounts that enabled the skill after November 22,2019, accounts that enabled the skill prior to this date will display a blank status
    6 – Only used when routines are enabled, for most users this is blank.
    Account Statistics
    How many Alexa commands have been sent to homebridge-alexa 5
    How many Plugin responses have been sent back to Alexa 5
    How many sensor events 0
    Plugin version 0.4.53

    1. Hey Dean,

      Apologies for the delay in my response, the fact the log is showing the -I would suggest it is indeed running in insecure mode, but do not know of a way to verify this is the case.

      I haven’t had the above issues beyond not running in insecure mode, so would recommend posting to the plugin authors github 🙂

      Let me know how you solved the issues!

  3. Mike

    Hallo, got question regarding the names. I habe Renamed the Devices in Homebridge, gute still the Orginal names are used in Alexa. Any ideas? Or do i have to Rename them in the Alex App?

Leave a Reply to Sam Brooks Cancel reply

Your email address will not be published. Required fields are marked *