I am trying to setup a system for automating certain tasks in my home.
I am thinking of a solution wherein a server side application would be able to send/receive commands/data to Arduino (attached with Arduino Ethernet Shield) via the web.
Here the Arduino may both act as a sensor interface to the server application or command executor interface for the server app.
E.g. (user story):
The overhead water tank in my house has a water level sensor attached with Arduino (attached with Arduino Ethernet Shield).
Another Arduino (attached with Arduino Ethernet Shield) is attached with a relay/latch. This relay/latch is then connected to a water pump.
Now the server side application on the web is able to get/receive water level information from the Arduino on the water tank.
Depending on the water level information received, the web application should send suitable signals/commands to Arduino on water pump to switch 'ON' or switch 'OFF' the water pump.
Now for such a system to work across the web, I am thinking of using one of the type of solutions in order of my priority:
Using XMPP for communication between server application and Arduino.
Using HTTP polling.
Using HTTP hanging GET.
For solution number 1, I need to implement a XMPP client that would reside on Arduino.
Is it possible to write a XMPP client small enough to reside on an Arduino?
If yes what are the minimum possible XMPP client functionality that I need to write for Arduino, so that it would be able to contact XMPP servers solutions like GTalk, etc.?
For solution number 2 and 3 I need guidance in implementation.
Also which solution would be cost effective and easily extendable?
You can take a look at MQTT, it has an arduino library, its a simple publisher-subscriber message broker.