Home assistant and Alexa without Nabu Casa (and AWS if possible)

Hi there!

I was looking for a way to integrate Alexa to my Home Assistant configuration again without using Nabu Casa (not going to pay €7,50 a month while it’s $6,50 at other regions).

I had had setup “HAASKA” previously, which was a pain to setup and got it working. But it worked pretty good for some time. Also tried to set it up with “Smart Home” (which isn’t using the token if I’m correct), but didn’t managed to get this working so far.

Problem actually is that all the methods above work with an Amazon AWS configuration.

It seems my AWS account was hacked lately and the costs were increasing over €250 that month. It worked like 2 years before without costs with the free tier. Luckely my creditcard was expired at that point and they couldn’t charge the money. They weren’t verry willing to help me before renewing my payment credentials even they told me themselves my account seemed to be compromised. But they wanted my new payment credentials before investigate.

So I actually lost trust in using AWS there…

So my actual question now:

Do people know some good alternative to get voice control with Alexa working together with Home Assistnt without the use of Nabu Casa or AWS?

And are there some decent and up to date manuals available?

Same in the UK - £6.50… :roll_eyes:

That’s still more then $6,50

Yes, that’s what I meant - about $8.00. I preferred it when they billed us in dollars.

1 Like

21% VAT vs. <10% sale tax (if any), I guess

Just use a prepaid Credit card

Oh you mean it like that too.
Well it’s strange that they bill different amounts. You should think that it’s sufficient for them to just charge the same amount if it’s just about “supporting”.

So charging different vallues in different currencies just feels “wrong”.

Well, I was thinking about this as a final sollution yes. Or maybe a temp virtual creditcard like Revolut will work too.

I was now lucky that my actual creditcard was expired. And I’ve just deleted that account now. But it’s not nice when you suddenly see that your account seemed to be compromised, that there’s a charge of €250 already and that you’re seeing it;s increasing rapidly without being able to stop it. The support of AWS was not verry supportive in this case.

  1. Install Node Red Add-on to Home Assistant.
  2. Add the node-red-contrib-alexa-cakebaked node to the pallete.
  3. Here’s the magic. Create an account on Ben Hardill’s website. Ben maintains the magic link between Alexa and Node Red. He does all of the AWS work for you. Adding devices could not be easier. I have 40 devices on his server now, and adding a new device takes about two minutes. If I am slow. Ben offers this service to the community for free, but I strongly recommend that you to commit a $1/month sponsorship through Github.

In this example, I will add a Sonoff Mini R4 that I just flashed with ESPHome. Alexa will know it as “Fred”, and Home Assistane already knows the ESPHome device as “sonoffminir4”.

Open the Hardill site and click on devices.
Click on Add Device. As in the image below, I named the device “Fred”, and made it a simple on-off switch. When finished, I will be able to control Fred with “Alexa, turn Fred on” or “Alexa, turn Fred off”.

After adding the device to your Hardill account, tell Alexa to “Discover”. About a minute later, Alexa announces that she had found a new device: “Fred”.

In Home Assistant/Node-Red, drop the Alexa-home node on your flow. The first time you open it you will need to configure the node with your Alexa login credentials.

You should find Fred in the device dropdown. It isn’t alphabetic, but the most recent device added is usually at the bottom of the list. Select Fred then click on “Done”.

I added a debug node to show that Alexa is responding to “Fred”. Deploy, then select the Debug panel:

NodeRed- Flow- Fred

Now, when I say “Alexa, turn on Fred”, the Alexa Home node outputs a command, “TurnOnRequest” for on and “TurnOffRequest” for off.

From here you can do just about anything you want with the Node Red flow. But, I just want to turn the Sonoff switch on or off, so I added a switch node to determine if the command was “TurnOnRequest” or “TurnOffRequest”. Then a Change Node to change the payload to “on” or “off”, then finally into a “Call Service” node to tell Home Assistant to turn Fred on or off.

Here is the flow code:
[{"id":"a0859613214d75bc","type":"alexa-home","z":"5d1b0398.99236c","conf":"49ef520c.ed4c0c","device":"199512","acknoledge":true,"name":"Fred","topic":"","x":190,"y":2860,"wires":[["d3e7050d43452a6f"]]},{"id":"d3e7050d43452a6f","type":"switch","z":"5d1b0398.99236c","name":"on or off","property":"command","propertyType":"msg","rules":[{"t":"eq","v":"TurnOnRequest","vt":"str"},{"t":"eq","v":"TurnOffRequest","vt":"str"}],"checkall":"true","repair":false,"outputs":2,"x":360,"y":2860,"wires":[["b295e70dfb6e5e97"],["4da578b998f05402"]]},{"id":"b295e70dfb6e5e97","type":"change","z":"5d1b0398.99236c","name":"Set payload to on","rules":[{"t":"set","p":"payload","pt":"msg","to":"on","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":570,"y":2840,"wires":[["4e46a720527e90e6"]]},{"id":"4da578b998f05402","type":"change","z":"5d1b0398.99236c","name":"Set payload to off","rules":[{"t":"set","p":"payload","pt":"msg","to":"off","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":570,"y":2880,"wires":[["233cec751d2910a7"]]},{"id":"4e46a720527e90e6","type":"api-call-service","z":"5d1b0398.99236c","name":"Turn Fred On","server":"cc0d1734.6963a8","version":5,"debugenabled":true,"domain":"switch","service":"turn_on","areaId":[],"deviceId":[],"entityId":["switch.sonoffminir4_sonoffminir4"],"data":"","dataType":"json","mergeContext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":800,"y":2840,"wires":[[]]},{"id":"233cec751d2910a7","type":"api-call-service","z":"5d1b0398.99236c","name":"Turn Fred Off","server":"cc0d1734.6963a8","version":5,"debugenabled":true,"domain":"switch","service":"turn_off","areaId":[],"deviceId":[],"entityId":["switch.sonoffminir4_sonoffminir4"],"data":"","dataType":"json","mergeContext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":790,"y":2880,"wires":[[]]},{"id":"49ef520c.ed4c0c","type":"alexa-home-conf","username":"SteveMann","info":"https://alexa-node-red.bm.hardill.me.uk/"},{"id":"cc0d1734.6963a8","type":"server","name":"Home Assistant- Raspberry","version":5,"addon":true,"rejectUnauthorizedCerts":true,"ha_boolean":"y|yes|true|on|home|open","connectionDelay":true,"cacheJson":true,"heartbeat":false,"heartbeatInterval":30,"areaSelector":"friendlyName","deviceSelector":"friendlyName","entitySelector":"friendlyName","statusSeparator":"at: ","statusYear":"hidden","statusMonth":"short","statusDay":"numeric","statusHourCycle":"h23","statusTimeFormat":"h:m","enableGlobalContextStore":true}]

4 Likes

Thanks a lot for your verry complete answer! :slight_smile:
I’m going to check this too :slight_smile:

I also dug into the Smart Home setup provided here: Amazon Alexa Smart Home Skill - Home Assistant (home-assistant.io)

But I’m getting an error while testing.

It says I need to use the Alexa Developer Console on the same account as I’m using the Alexa account.
But I needed to make a new AWS account.

Is this going to work this way?

You really don’t want to mess with AWS. Using Node Red is free and you don’t need an AWS developers account.

I been using HA-Bridge ha-bridge/README.md at master · bwssytems/ha-bridge · GitHub for some 10 years,

Now that Moving to HA it looks not to be as simple as before, but free to use

And looks to work with this Emulated Hue - Home Assistant and https://www.youtube.com/watch?v=9JMD1ZHDMfI

Im testing it now

The core problem is if you run HAB in docker you need to expose port 80 as Alexa no longer works with other ports, Im keep trying this not that don’t want to support HA project, as in a donations etc, I do not not want a AWS / Coude based setup in general

Thank you! I was close to giving up on Alexa integration, and your post gave me the final bit I needed. I’m curious on one part. Why is the set payload step needed? Since the on/off has already been determined, why can’t is just go straight to the action step? Thanks again.

I think I understand your question.
The output of the Alexa Home Node is “TurnOnRequest” or “TurnOffRequest”. The switch node outputs the flow to output1 or output2 depending on the payload on the input. It is then sent on to the Call Service nodes. One of On and one for Off.

You could probably delete the change nodes and go straight to the call service nodes.

1 Like

Thanks. That is what I meant. I was definitely not using the correct terminology for the nodes.

I tried it. You don’t need the change nodes.