DIY Simple Multiroom Remote Control App


Recently I started experimenting with RestAPI calls.

iOS users may know the App Workflow which will be integrated in iOS 12. It allows you to make buttons in your today view.
Since it is able to call URLs the next step was pretty obvious. I set up a simple multibutton control for my Volumio:

It simply makes RestAPI calls within my network.

It is blazing fast, very reactive.


Workflow is nice and good. However it has some bugs.To be fair it is not a Workflow problem but rather an operating system problem. Mainly it comes down to memory assigned to Today Widgets. It is simply not that much.
The result ist that content rich widgets experience constant reloads.

Native App Approach

I thought, why not develop your own lightweight version of an iOS app with a Today Widget and dedicated buttons.
Dicho y hecho. I used a source code from this decent person:

The result looks something like this: (Sorry for profanity)

Yet, since I am a curious noob I used embedded HTML, AJAX and Javascript to make the Buttons. This is the realm of development I feel secure with. Performance still sucks inside the Today Widget. Constant reloads.

The app itself works quite decently though. So I abandoned the Today Widget approach in favor of a native App.
Native in terms of launching a Webview inside a native iOS app. It works just fine.

Stepping up the game.

I wanted to have a simple and fast solution to send RestAPI calls to my volumio without the need to fire up the Volumio web app. My WIFI is not very fast at some points due to complexity and the web app is simply not that fast for me.

Given the fact that RestAPI calls are fast and reliable I started building my own customized Volumio Remote app.
It is Web based and embeddable into iOS and Android native apps. Hell it is actually embeddable anywhere where you can render HTML. Even a WAP-ready Nokia from 2000 could do the job in theory.

The program works at this point. So I started concentrating on nice UX.
Here are my screens so far:

UX Prototype

Current state´s functionality breakdown

At this point the playlist and radio triggers within the app are hard coded API calls.
The playlists exist on volumio, the app just calls them without actually knowing if they are there. It´s just a blind call.

For the beginning i am happy with this. In the future it would be nice if the remote control got a list of playlists and favs from the chosen volumio instance.

By switching the instance you basically switch the interface. The buttons are again hard coded API calls towards the volumio instance of your choice.

The “Connected” screen will work like this: The App will make a simple RestAPI call like “status”. If it recieves an answer from the server it is considered “connected”. If not, there will be a “Can´t reach Server” error message displayed.

What´s next

As soon as the app is finished I will post the source code on guthub for you to use if you like.
Also I consider transferring the app into an Android app since it is nothing but a webview with local files.

What do you think?