How to interface a Nordic Thingy:52 using Amazon Alexa

Interfacing the Nordic Thingy:52 from the Amazon Alexa Voice Service just had to be done! In this blog post I will briefly explain how this demo was set up, but I will direct you to the GitHub page if you need more detailed information than what i provide here.

Please have a look at the following GitHub repository for a thorough explanation on how to set this up, and how it all works:
https://github.com/gamnes/alexa-nordic-thingy.

There is also this youtube clip that shows the system in action:

https://www.youtube.com/watch?v=cUfVo0auOUk

Overview

The system overview can be summarized as following;
A Sonos One Alexa enbled speaker sends voice commands to the AWS cloud. These voice commands are received by a custom built Alexa Skill, which forwards its requests to an AWS Lambda function. This Lambda function interfaces with an AWS IoT Thing Shadow, and either fetches data or updates data. A Raspberry Pi is interfacing the same AWS IoT Thing Shadow and is either notified of data updates, or it pushes temperature sensor data from the Thingy whenever that's required. If a LED color change update is detected from the Shadow by the Raspberry Pi, the Raspberry Pi communicates over BLE with the Thingy and changes the color of the Thingy LED.

Both the Sonos One and the Raspberry Pi is connected online through Wifi. If you look at the end of the youtube clip, you will see that the Amazon App can also be used to access the Shadow and it doesn't even need to be on Wifi, it could be on a cellular connection, to do so.

Since no Alexa-enabled products currently supports a Bluetooth interface to interface with BLE sensors and actuators (as far as I know - please let me know if this is incorrect in the comment section below!), I chose to use a Raspberry Pi 3 Model B with built in BLE support to connect to the Thingy and handle that connection. If a future Alexa enabled device supports BLE, and that is accessible from any of the AWS functionality, that could be used instead and the Raspberry Pi might become void for this use-case. I might also be looking into using a Raspberry Pi Zero W instead of the big one to save cost and "space" for such a solution.

Please let me know in the comments below if you have any questions or comments to this demo. The GitHub User Guide was basically made while I was doing the individual steps myself, and that is the reason why it contains so much text and information. Feel free to jump around and not read everything if that makes sense. I will probably use it myself as a look up if I ever do another Alexa project in the future.

Anonymous