From what I can tell on the forums, the Alexa Hue bridge allows devices and actions in Indigo to be controlled from Alexa using turn on, turn off and dim commands. And using the Meta device plugin from Berkinet, non-dimmer devices can be controlled by wrapping them in that plugin to make them appear as dimmers. So you can control speaker volumes and the like that way (and possibly thermostats?). But the main limitation appears to be that you're limited to just being able to say turn on, turn off and dim / set to commands. (Oh, and it's one way so you can't ask Alexa about status in Indigo for example? - but I can live with that.)
What I'd love to be able to do is create custom skills for my house so that I can use more natural command forms and generally have a lot more flexibility. I understand the main limitation on this is the fact that Matt and Jay have bothered to make Indigo reflectors secure and that generally opening up a port allowing anyone to control my house is something I am unwilling to do.
So looking around for approaches to this, it seems to me that this post possibly contains the makings of a solution:
http://meistermeier.com/technology/2017/02/23/alexa-please.html
I should say I have never coded an Alexa skill or used an AWS Lambda function or MQTT before so I would be scratching around in the dark for a while before I ever managed to get this working. But I think the basic concept seems like it should work:
- Custom Alexa skill calls on AWS Lambda function in response to utterances to Alexa
- Lambda function pushes a command to an MQTT queue (running on AWS)
- A bit of code running locally on the same machine as the Indigo server subscribes to that MQTT queue and receives the command
- The code has configured logic which it uses to work out which calls to make to Indigo based on the command received
- The code makes those calls to Indigo using the RESTful API - which it can do locally hence without any authentication issues
Further it seems to me from what I've read that per user (and possibly across all users) the AWS free tier would be sufficient to make this work since it offers 1 million Lambda function calls per month.
Can any developers out there who know more about this than I do confirm whether this approach should work / whether there are any major gotchas?
Thanks!
Jon