I’ve always had an interest in home automation, a dream of having a house that can filter out the noise and give me the signal for life.
Part of that is having news, TV guides, everything being indexed and filtered, with some basic smarts to give me “just the news I want, plus a little bit of fun” and warnings that TV shows I might be interested in are coming up.
You know, the usual geek fantasy.
I use alot of scripts to do many little tasks for me, I use Python on my media center to display the caller ID of incoming calls (I borrowed the outline from CallerID script and then made heavy modifications to let my VoIP system send the data, I made a database for MyDNS with phone numbers, allowing a recursive lookup to tell me everything from country to “exchange” for a phone number then give me a Name if they’re known. I use RSS feeds and filters to give me news I’m interested in, and some that i’m not, I wrote some basic pattern matching to group news stories about the same thing, then attempt to put them chronologically so I can read through them in order when I get time.
But I want to start centralizing this, I wanted a project that would encapsulate all my previous scripts into a system, I wanted a trusted messaging network, so I could have client machines sending information to their nearest/parent server that would cache and route the information around the “network”.
So Merlin was born, merlin is eventually going to be a mix of UDP broadcasts for my home LAN and unicast for my co-located servers, with bi-directional messaging and a form of routing so that any machine in the groups can send messages by content type or by server to anything in the network.
So say I receive a incoming call, Caller ID content type with a “instant” priority level will go out and be passed out through the network to any machines that handle callerid, or “system status” containing hard drive free space might heartbeat out with low priority, so it will make its way around the network to the server/servers that store and catalog that data. Eventually I want my car to have its own segment, but sine GPRS charges in australia are evil, it could get low bandwidth updates and receive instant updates of certain classes (eg “Instant/High” priority server down messages)
It’s alot of work and I’ve only started coding small parts of it (hell, I just started one of the XML handlers the other night thanks to my previous article about not playing WoW
)