[maemo-developers] N800 as a home automation/monitoring remote

From: Mike Ferguson ferguson.mj at gmail.com
Date: Wed Jun 18 14:15:40 EEST 2008
Hi all.

I think I'd like to try to use my N800 as a remote terminal for home
automation/monitoring and would like some advice about whether I'm
thinking along the right lines.  You better know up front I'm not an
experienced C programmer, but know other languages, and have done some
basic C things, they just take me a while and some research.


My current thoughts are:

*** Client ***
N800 (and therefore other PCs etc) used a GIOchannel to connect to
server asynchronously, so either server or client can push data or
requests to each other.


A GTK notebook layout approach for different automation functions etc.

Server can push status/change notifications to client which will
update button state/image (e.g. light has gone on, alarm etc)

A really smart client would be able to request from the server what to
display, but at least from now I'm more than happy to start with a
hard coded client.

Eventually the clients and server should connect over an SSL stream,
but that can be a further stage of development.


*** Server ***
Again written using GLib and GIOChannel.

Possibly use D-Bus to connect to different modules/programmes for
connection to, say, a serial port controlled microcontroller, usb
controlled uC, etc. which do the actual work/monitoring.  I've got a
lot of the microcontroller side almost sorted already.

As above in client section - push changes to client.

Can handle multiple clients.


My initial questions are:

First off, does this whole idea seem OK? Any general thoughts or advice?

Are GIOChannels the best way to go for this on maemo, or straight unix
sockets? Any good examples around of asynchronous GIOChannel
client/server usage I should look at? (I've found a couple of
examples, but not many...)

Will keeping the client connected constantly to the server (assuming
no data is being passed back and forward) have any significant effect
on battery life?  I.e. Is there a way to minimise battery usage, or do
I just not need to worry?

Is the use of a D-Bus approach on the server a good idea, or are there
better ways?

Is anyone aware of a similar project that I can borrow ideas from?

And lastly, is anyone willing to act as a mentor to review (bad) code
or point me in the right direction for things?  I'm not wanting anyone
to write the code for me, but just to be able to say things like
"check out foo function for an easier way to do bah", "you probably
need to handle X signal" etc.

But I guess if anyone else wants to contribute and use the code, I'd
be more than happy to share or set this up as a garage project at some
point, once I know the meager starting code won't be used as an
example of what not to do!

I'm not in a hurry for any of this to happen.  It's all a spare time
jobbie over the next year/2 years.

Any help or thoughts appreciated. Thanks.

More information about the maemo-developers mailing list