Home

Awesome

Wasp

A web-server/web-application based remote control for Linux 'media-devices', implemented in the Go programming language (actually just an interface to Mplayer).

Introduction

Small Linux devices are gaining popularity, especially since the 'invention' of ASUS EeePC and of course the Raspberry Pi. One of the many applications of such Linux devices, is functioning as a sort of media player. The Raspberry Pi in particular, since it's not a netbook but just a headless computer.

A mediaplayer is obviously nothing much without some sort of lazy remote controlling :) Wasp's intention is to be that remote control, albeit not in traditional manner. Instead of using LIRC (infrared) or Bluetooth, the controlling is done with a web interface Wasp is providing.

Once Wasp is started, it acts as a webserver to which you can browse to. That means you can open a browser on Android, iOS, a PC, laptop or netbook to the IP address of the device where Wasp is running, like http://192.168.1.10:8080/index. Once opened, it will provide you with a basic interface where you can:

Getting started

The project is of course still in its infancy, but follow these basic steps to start off.

Prerequisites:

  1. Install a Go compiler.
  2. Install Mplayer (or use a package manager for your distro).

Build the sources:

Clone the git repository:

git clone git://github.com/krpors/wasp.git

Change directory to the just cloned repository:

cd ./wasp

Set the GOPATH to the current directory:

export GOPATH=$(pwd)

Build the sources:

make

Try invoking the binary:

./bin/wasp

This will create the initial configuration in ${HOME}/.wasp/wasp.properties. This configuration sets a few properties as follows:

Once Wasp is started, a FIFO will automatically be created in the configured path (if you have create/write permissions, of course).

Last but not least, start Mplayer in slave mode, with the input to be from the FIFO:

while true; do mplayer -noconfig all -noconsolecontrols -quiet -idle -slave -fs -zoom -input file=/tmp/mplayer.fifo; done

The while true makes sure Mplayer keeps running at all times, in case unwanted intervention has been done. This is not a necessity though, but something to consider.

After this, you should have two processes running: mplayer and wasp.

Try opening up a browser to the host where Wasp is running, e.g. http://localhost:8080/. You'll see web interface as follows:

The control page Browsing page Configuration page

Implementation

For those interested in some implementation details:

As mentioned previously, the actual code is done using the Go language. The web interface is HTML5, CSS3 and Javascript, with help of jQuery Mobile for UI widgets and jQuery for other common JS tasks.

The A/V backend is Mplayer, which can be run in a 'slave mode' to accept commands from external applications.

Self-notes

Just some notes for development.