This repository holds my efforts to develop a plugin for Volumio media play that integrates with Alexa voice recognition services. The plugin, when activated, connects to MQTT borker and awaits intents generated by an Alexa AWS Lambda function. Currently it supports music control such as play, stop, pause, next etc.. as well as Playlist commands (list playtlists, playlist XYZ etc..) For example, here is a typical activation procedure:
Alexa, tell home to list playlists.
< alexa details existing playlists on volumio ... >
Alexa, tell home to playlist XYZ.
Alexa, tell home to pause audio. ..
Note: this plugin is part of a greater home automation control (for example, my TV is also controlled from the same setup) which explains why I chose MQTT centralized command. There are other IOT modules which sends and receive commands from MQTT.
-
Set up alexa and MQTT broker accounts. Cloud MQTT is a free service which is perfect for such low volume messaging. Amazon has a great tutorial on how to setup a skill. All required configurations for the skill (the voice configuration intents and utterances as well as the lambda function which is being called when alexa is activated are detailed in the
/alexa
directory - just remember to put your MQTT user/pass in theaws_lambda.py
file) -
Put all files from the repo in
/data/plugins/user-interface/alexa/
-
Update
/data/configuration/plugins.json
with the alexa entry under "user_interface"
"user_interface": {
"websocket": {
"enabled": {
"type": "boolean",
"value": true
},
"status": {
"type": "string",
"value": "STARTED"
}
},
"alexa": {
"enabled": {
"type": "boolean",
"value": true
},
"status": {
"type": "string",
"value": "STOPPED"
}
},
"mpdemulation": {
"enabled": {
"type": "boolean",
- Restart Volumio
systemctl restart volumio
- Troubleshooting In order to confirm that all is working well, make sure:
- Alexa detects the skill activation (you shoud see proper intent in the service request window (in skill configuration Amazon page)
- Commands from Alexa are received with
journalctl -f
in the Volumio plugin. - Response from the Volumio plugin is sent back to the Lambda and show as proper service response