return to first page linux journal archive
keywordscontents

Bringing it Home: Jabber's Jeremie on Instant Messaging and Embedded Linux

When we wrote to Jeremie Miller at the last minute for some deep-tech input, he wrote back, ``I've attempted to create a more technical section wrt linux devices and Jabber, but I was really struggling to find something solid to describe and make it sound complex (after all, Jabber is simple).'' But he sent something anyway, and it does the job. Read on.

--Doc Searls

Embedded Linux & Jabber at Work: The x10 example

So let's say you've got a computer running the service as x10.homelan.net, and a couple x10 devices such as a light on your desk as desklight@x10.homelan.net and a motion sensor as driveway@x10.homelan.net.

The Jabber client on your wireless web pad is connected to your homelan.net server, and you're subscribed to the presence of both of the x10 devices. Your client receives:

   <presence from="driveway@x10.homelan.net">
    <status>Motion Detected</status>
   </presence>
alerting you that your wife arrived home, and you send a message:

   <message to="desklight@x10.homelan.net">
    <body>on</body>
   </message>
which activates the light by your desk (so it appears like you've been working instead of lounging on the deck).

Let's take this example a generation further into the future, where you have added a Lineo Embeddix based greeting device to our front entrance. The hypothetical wireless device, let's call it greetix, has a microphone, speaker, camera, and can perform simple voice recognition as well as function as an embedded Jabber client.

When an individual approaches, greetix would take a snapshot and attach the picture and a mp3 audio stream to it's current presence:

   <presence from="greetix@homelan.net">
    <status>Guest Waiting</status>
    <x xmlns="jabber:x:oob" uri="http://192.168.0.42/A4435D8.png"/>
    <x xmlns="jabber:x:oob"
uri="http://192.168.0.42/A4435D8.m3u"/>
   </presence>
Any one family member subscribed to the greetix would receive this (remotely as well, such as if you were at work), and if the client supported image viewing or mp3 streaming it could offer those options. You could then send a message:

   <message to="frontdoor@x10.homelan.net"><body>unlock</body></message>
or send a command to the greetix instructing it to take a voice message:

   <message to="greetix@homelan.net"><body>not home</body></message>
Also, the server could utilize the image for face recognition and intelligently react to the presence. The greetix could also be subscribed to family members and other devices at home, such as internal motion detectors, allowing it to react appropriately if nobody is available.

By allowing the conversation between the greetix, server, family members' clients and other devices to be structured in a common XML format, many other possibilities exist: logging and archiving on the server; auto responses for recognized individuals or time of day; context-sensitive server generated audio menus; voice messages; gateway H323 audio to a phone/cell call; text to speech; diverse access to all devices and functionality; and intelligent management of the conversations and relationships between devices and humans.