• Alexa for Squeezebox

    Breathing new life into your LMS.
    Add Alexa voice control to your Squeezeboxes.
    .

    Learn More See it in action
  • Currently in Alpha

    We're almost feature complete.
    Beta opening soon...

    LearnMore
  • 1
  • 2
Built for Alexa

Built for Alexa

All the power of Alexa, all the flexibility of Squeezebox! A custom skill facilitates voice control for transport, content selection
Built for SqueezBox

Built for SqueezBox

Squeezebox is an amazingly flexible and resilient platform. Our custom plugin links to Alexa to add voice control.
Built for Simplicity

Built for Simplicity

An LMS plugin linked to an Alexa skill. Simple. Easy. Effective.
  • 1

Alexa for Squeezebox

These days, it seems that voice assistants are everywhere. In stand-alone devices, in a/v equipment, in household appliances, cars and more. Beyond a gimmick, voice applications are evolving to a point where they are approaching usefulness.

But what about legacy technology? Squeezebox was a great platform. There's still plenty about and there's a healthy second-hand market. The LMS is still viable and supported by a great community. 

The HabTunes project seeks to breath new life into older technology by integrating voice control. The first such endeavor is Alexa for Squeezebox - an Alexa skill and LMS plugin that allows you control your Squeexebox by voice.

 

Robust

Developed over 2 years, with over 50 testers from around the world, Alexa for Squeezebox is stable and reliable.

 
 

Secure

With https used when available, and no need for open ports locally, Alexa for Squeezebox helps keep the ner-do-wells at bay.

 
 

Simple

Comprising as standard Alexa skill and LMS plugin, it's easy to install, configfure and use.

 
 

Responsive

With ongoing maintenance and feature additions, you can shape the direction and request functionality you'd like to see.

 

The ambition is to add Alexa voice control to the LMS and Squeezebox platform in a simple and intuitive way.
Find out more about the design philosophy, or dive right in. Learn More

Get Started

It's All About the Music


 

Simplicity and Flexibility.
All the hallmarks of Squeezebox - Now with added voice control.

Volunteer Testers


1

Extensive Alpha phase is ending, with Squeezebox users from around the world contribuiting time and ideas.

Ready for the World


 

With German localisation well advanced, Alexa for Squeezebox can be ported to any supported Alexa language.

Recent Blog Posts

Test v0.1.2

I released test version 0.1.2 to a limited number of signed-up testers yesterday. The main focus was to determine if the major issues with the previous test round had been resolved, so I wanted to limit to a few who had experienced those issues.

The good news is that, yes, the significant issues that prevented the plugin working and, in fact broke, some LMS installs completely ( :-O ) are now resolved. Indeed, a couple of testers actually managed to get the whole thing working and controlled squeezeboxes by voice. Success.

Of course, that success is tempered by bugs but at least they're the solvable, pliant kind of bugs, not the 'OMFG it's destroyed everything, including the neighbours house' kind of bugs.

The project is also sparking some interesting discussions around security and community development that are areas I haven't been very involved in before so a lot of learning going on as well.

 

A Few Solutions....

Composing yesterdays post, I was frustrated. Nothing was working and my newbie perl abilities were letting me down.

I decided to stop developing and start reading. I browsed through the developer section at forums.slimdevices.com, looking out for discussions that were relevant to my problems and might make more sense now that I'm several months into my perl career.

I few discussions rang some bells and some pointers were noted. The overriding impression I took away was that I needed to be working with the LMS, not against it. I'd been trying to shoehorn a http server running in a background process using external libraries. But what if I could leverage the LMS to manage a lot of this?

Bingo! In a couple of hours today, I got a http daemon running under the Slim::Networking::Select loop using addRead. No more background process voodoo required. It's a quick and dirty implementation right now but it behaves impeccably; no conflicts and no shutdown problems - and it works on Windows and Linux. Yay!

There's a bit more to do - I need to manage the stop and restart of the server if the user changes port or elects to switch it off, but that should be reasonably straightforward. There's also http client support inside LMS itself, maybe with HTTPS capabilities. Who knew??

I really feel that I'm making progress, which is good news!

 

Test v0.1.0 / 0.1.1

The first test version of the skill went out on the Teamwork portal this week. Results were both good and bad.

The positives were that there's a really great team of testers involved with all levels of technical ability which really helps in finding both technical and usability issues. Everyone who tested is very engaged with great feedback and helpful suggestions.

The negative is that, at the moment, it doesn't really work :-(

Read more ...

A Few Issues...

Hmm. This is not easy.

One of the main issues arising from user testing on v0.1.1 was the fact that the LMS plug-in was not shutting down properly and thus locked LMS and prevented it from closing cleanly.

Looking into this in more detail, I found the that perl HTTP::Daemon was misbehaving and refusing to stop when asked politely. I changed to the Mojolicious Mojo::Server running as a deamon and this appeared to be much better behaved, facilitating clean LMS shutdowns.

In testing prior to release, however, it seems that's another issue raising it's head: the http daemon seems to be interfering with squeezebox connections to the LMS.

Read more ...

Verifying Alexa

Working through the Alexa Skill code in node-red, I discovered that there are fairly onerous requirements for verifying the origination of skill requests from Amazon. I looked at a few options but the easiest seems to be node-red-contrib-alexa-verifier which is a wrap of the JS alexa-verifier.

Initially, this doesn't seem to do much but when I attempt to pass a faked call to the skill code from postman, it's rejected with a 401 unauthorized status and a helpful description of the reason. This is good news as it's another hurdle down on the road to eventual certification.

 

 

 

Get Involved

Right now, site membership at Hab-Tunes.com is open. However, membership does not accrue any benefits. Participants in the closed alpha need to me members, and those who will participate in the forthcoming Beta cycle will also require membership. Details on how to get involved can be found here.

Login Form