Io preferirei imparare qualcosina ( almeno un domani posso fare altre app che mi potrebbero servire ), però mi mancano proprio le basi per fare una applicazione del genere... qualcuno non è che ha tipo uno sketch ( se si usano anche in android ) da cui prendere spunto?
Posto il codice, magari può essere utile a qualcuno, se notate qualche errore però ditemelo 
Per impostare il termostato su ON e impostare la temperatura di 20°C: http://192.168.2.232/?11120
Per impostare il termostato su ON e non variare la temperatura: http://192.168.2.232/?11000
Per variare la temperatura a 15°C: http://192.168.2.232/?00115
Per avere lo stato del termostato non variare nulla: http://192.168.2.232 oppure http://192.168.2.232/?00000
Così facendo in un sito web anche un semplice link ( i.e. ON ) può gestire una funzione
#include <SPI.h>
#include <Ethernet.h>
#include <EEPROM.h>
#define relayPin 2 // il pin a cui è collegato il relay
#define sensorPin 0 // il pin a cui è collegato il sensore di temperatura
#define isteresi 2 // isteresi impostata per lo spegnimento caldaia
#define tMax 25 // temperatura massima impostabile
#define tMin 10 // temperatura minima impostabile
#define defMode 0 // default value: 0 summer / 1 winter
byte mac[] = { 0x90, 0xA2, 0xDA, 0x00, 0xFF, 0x41 };
byte ip[] = { 192, 168, 2, 232 };
byte gateway[] = { 192, 168, 2, 1 };
byte subnet[] = { 255, 255, 255, 0 };
// Initialize the Ethernet server library
// with the IP address and port you want to use
// (port 80 is default for HTTP):
EthernetServer server(80);
// { write modalità, modalità, write temp. impostata, decine impostata, unità impostata }
int buffer[6];
int tempMis; // contiene la temperatura ambientale
int tempImp; // contiene la temperatura voluta
int mode;
void setup()
{
// start the Ethernet connection and the server:
Ethernet.begin(mac, ip, gateway, subnet);
server.begin();
mode = EEPROM.read(0); // legge da memoria se estate o inverno da indirizzo 0
if (mode < 0 || mode > 1) // controllo dato salvato in memoria
{
mode = defMode;
EEPROM.write(0, mode); // scrivo in memoria se estate o inverno su indirizzo 0 valore di default
}
tempImp = EEPROM.read(1); // legge da memoria il valore della temperatura voluta da indirizzo 1
if (tempImp < tMin || tempImp > tMax) // controllo dato salvato in memoria
{
tempImp = tMin;
EEPROM.write(1, tempImp); // scrive in memoria il valore della temperatura voluta su indirizzo 1 valore di default
}
pinMode(relayPin, OUTPUT);
}
void loop()
{
tempMis = (analogRead(sensorPin) * 500) / 1024; // legge dal sensore LM35 la temperatura ambientale
if (tempMis < tempImp && mode == 1)
digitalWrite(relayPin, HIGH);
else if (tempMis >= tempImp + isteresi || mode == 0) // isteresi serve a ridurre le accensioni/spegnimenti della caldaia
digitalWrite(relayPin, LOW);
// listen for incoming clients
EthernetClient client = server.available();
if (client)
{
// an http request ends with a blank line
boolean currentLineIsBlank = true; // ad ogni loop è inizializzata a "true"
int x = 0; // ad ogni loop è inizializzata a 0 e serve per popolare l'array
while (client.connected())
{
if (client.available())
{
char c = client.read();
// if you've gotten to the end of the line (received a newline
// character) and the line is blank, the http request has ended,
// so you can send a reply
if (x > 5 && x < 11) // i primi 5 caratteri sono: "GET/? " e il 10° carattere è l'ultimo da inserire nell'array
buffer[x - 6] = int(c) - 48; // In ASCII "0" = 48 e "9" = 57 e poi si ricicla x riportandola a 0 + n' ciclo
x++;
if (c == '\n' && currentLineIsBlank)
{
// se deve essere variata la modalità
if (buffer[0] == 1)
{
buffer[0] == 0; // resetto il write modalità
if (buffer[1] >= 0 && buffer[1] <= 1)
{
mode = buffer[1];
EEPROM.write(0, mode); // scrivo in memoria se estate o inverno su indirizzo 0
}
}
// se deve essere variata la temperatura impostata
if (buffer[2] == 1)
{
buffer[2] == 0; // resetto il write temp. impostata
x = buffer[3] * 10 + buffer[4]; // riutilizzo cnt ora non più utilizzata
if (x >= tMin && x <= tMax)
{
tempImp = x;
EEPROM.write(1, tempImp); // scrive in memoria il valore della temperatura voluta su indirizzo 1
}
}
// send a standard http response header
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println("Connnection: close");
client.println();
client.print("{\"temp_r\":\"");
client.print(tempMis);
if (mode == 0)
client.print("\",\"mode\":\"off\",\"temp_i\":\"");
else
client.print("\",\"mode\":\"on\",\"temp_i\":\"");
client.print(tempImp);
client.println("\"}");
break;
}
if (c == '\n')
{
// you're starting a new line
currentLineIsBlank = true;
}
else if (c != '\r')
{
// you've gotten a character on the current line
currentLineIsBlank = false;
}
}
}
// give the web browser time to receive the data
delay(1);
// close the connection:
client.stop();
}
}