Digitizing my life #1

Since moving into our house, I've constantly been trying to make our lives more pleasing in the technical way. Here is a depiction of what has been achieved yet.

The foundation: UPnP

Despite the non-standardness of UPnP (based on a µ$-draft for HTTP-over-UDP that expired back in 2001), it's the only common protocol that most devices in our network understand. UPnP has been rebranded to DLNA some time ago, but it's still the same old crap. There are quite some devices that understand UPnP, but all in their own interpretation. The most unfamous UPnP player amongst the MediaTomb developers is the Sony Playstation 3 which seems to support their own UPnP dialect only, thus needing dozens of hacks on UPnP A/V servers just to see the list of audio and video files. Not to speak of "oh, I play only that format at this bitrate"-wtf features. I don't have one, but that had to be mentioned here.

As I said, many devices in my network understand UPnP: The kitchen radio (a noxon iRadio), our bedroom alarm clock (Freecom MusicPal) and the satellite receiver (Dream Multimedia's Dreambox) using djmount.

The main goal of our central MediaTomb UPnP A/V server is to serve the music collection for the above mentioned devices. Due to its transcoding capabilities, it is able to convert the ogg/vorbis music files transparently to audio/wav streams - which is necessary because the MusicPal does not play ogg. Using it, we are also able to listen to satellite radio in the kitchen, transcoding the Dreambox'es mpeg2/ts streams to wav.

Misusing UPnP

During the time I needed a way to manipulate the MediaTomb server from my PHP scripts. The development of Services_MediaTomb, a library to remotely administer the - surprise - MediaTomb server is one of the public results of my home automation efforts. I use it to sync radio stations from the Dreambox and to make the LDAP addressbook available on the radios. In the house we have access to telephone numbers and addresses from everywhere.

Another use case for Services_MediaTomb is GravDigger, the MediaTomb playlist editor. It's a two-pane file manager like application you can use to create playlists on the server, a functionality that MediaTomb keeps missing.

Also in use is CorpseShovel - also based on Services_MediaTomb - which shuffles all playlists on the server every night (Yes, MediaTomb can't shuffle playlists by itself).

Little extras

Years ago, I wrote a software to remind me of upcoming birthdays and other anniversaries - due to my elaborate wording skills named "birthday reminder". In the meantime, it works on every operating system and reminds many people every day. The only problem I had was that you need to use your computer to see the coming dates.

Then I discovered that Freecom's MusicPal supports RSS feeds (and only RSS, no Atom!). Within some hours I had a script which takes a birthday file and creates an Atom and RSS feed from it. Now every morning I wake up, the Radio clock shows the latest events. It has one drawback: You have to move your head and stare at the display - something that will change once I find a reasonably sexy female voice for the festival speech synthesizing engine. The DreamBox is also able to display them via its SimpleRssFeed plugin (that shows Atom!).

Video distribution

Beside audio files streaming to various radio devices the server also holds our video collection. I made a nice HTML frontend to browse the files (FileLister) that automatically creates thumbnails for videos and photos. It links the files to download to the ftp server, so we get higher transfer rates.

The DreamBox is very limited in the choice of video codecs it can play. Luckily we have a VLC plugin which plays videos streamed from remote vlc instances. Just fire up VLC on your desktop or laptop, enable the HTTP interface and you can play any videos on that machine - very comfortable for watching DVDs.

Keeping things offline

Due to my limited internet connectivity, I am forced to keep things as local as they can be. The server hosts its own CDDB service, acts as Gentoo portage mirror (and synces itself from the laptop), is the backup device (using rsync and nfs) and provides a nice HTML and REST interface to the ISDN dialup connection. Not to forget the time service (ntp and timed), Dreambox mirror and NNTP server :)

There are more things to come: The next steps on the plan are local Wikipedia and OpenStreetmap servers, a complete Asterisk based telephony solution that integrates with the LDAP address book and the gate intercom. It shall also be possible to open the gate from everywhere and see the telephone callee on every device (Radio, Dreambox, PC, network printer). And the mobile phones shall sync themselves with the address book :) Much to do, but all ideas are possible to realize.

Written by Christian Weiske.

Comments? Please send an e-mail.