Problema Arduino+Pachube

Volevo ampliare il tutorial che ho fatto con l’ LM35 e far fare a pachube da datalogger per le temperature perchè quando l’ho provato tempo fa mi era parso semplice, però questa volta Arduino+Ethernet Shield mi manda in palla i router (di Alice) e non riesco a capire il perchè.
Se qualcuno ha qualche dritta da darmi ne sarei felicissimo!!

Posto anche il codice:

Tab Pachube_ethernet_input_output:

/* ==============================
 * This code, which assumes you're using the official Arduino Ethernet shield,
 * updates a Pachube feed with your analog-in values and grabs values from a Pachube
 * feed - basically it enables you to have both "local" and "remote" sensors.
 * 
 * Tested with Arduino 14
 *
 * Pachube is www.pachube.com - connect, tag and share real time sensor data
 * code by usman (www.haque.co.uk), may 2009
 * copy, distribute, whatever, as you like.
 *
 * v1.1 - added User-Agent & fixed HTTP parser for new Pachube headers
 * and check millis() for when it wraps around
 *
 * =============================== */


#include <Ethernet.h>
#include <string.h>

#undef int() // needed by arduino 0011 to allow use of stdio
#include <stdio.h> // for function sprintf

#define LM35_TEMP 0  // Pin analogico 0
#define LM35_REF 1   // Pin analogico 1


#define SHARE_FEED_ID              2413     // this is your Pachube feed ID that you want to share to
#define REMOTE_FEED_ID             256      // this is the ID of the remote Pachube feed that you want to connect to
#define REMOTE_FEED_DATASTREAMS    4        // make sure that remoteSensor array is big enough to fit all the remote data streams
#define UPDATE_INTERVAL            10000    // if the connection is good wait 10 seconds before updating again - should not be less than 5
#define RESET_INTERVAL             10000    // if connection fails/resets wait 10 seconds before trying again - should not be less than 5

#define PACHUBE_API_KEY            "il mio API KEY" // fill in your API key 

byte mac[] = { 0xFE, 0xDE, 0xAA, 0xED, 0xEF, 0x85 }; // make sure this is unique on your network
byte ip[] = { 192, 168, 1, 144   };                  // no DHCP so we set our own IP address
byte remoteServer[] = { 209,40,205,190 };            // pachube.com

float remoteSensor[REMOTE_FEED_DATASTREAMS];        // we know that feed 256 has floats - this might need changing for feeds without floats




void setup()
{
  Serial.begin(57600); 
  setupEthernet(); 
}

void loop()
{

  // call 'pachube_in_out' at the beginning of the loop, handles timing, requesting
  // and reading. use serial monitor to view debug messages

  pachube_in_out();


}//Loop

Tab pachube_functions:

char pachube_data[70];

boolean found_status_200 = false;
boolean found_session_id = false;
boolean found_CSV = false;
char *found;
unsigned int successes = 0;
unsigned int failures = 0;
boolean ready_to_update = true;
boolean reading_pachube = false;

boolean request_pause = false;
boolean found_content = false;

unsigned long last_connect;

int content_length;

float temperatura; // variabile in cui viene salvata la temperatura in gradi centigradi 
float prev_temperatura = 0; // temperatura precendente
int ref; // valore della tensione di riferimento dei due diodi
int ref_medio = 0; // valore della tensione di riferimento medio
int sensoreTemperatura; // valore di tensione letto dal pin OUT del sensore 
int sensoreTemperatura_medio = 0; // valore sensoreTemperatura medio
int cont; //contatore usato per ottenere un valore medio

void pachube_in_out(){

  if (millis() < last_connect) last_connect = millis();

  if (request_pause){
    if ((millis() - last_connect) > interval){
      ready_to_update = true;
      reading_pachube = false;
      request_pause = false;
      found_status_200 = false;
      found_session_id = false;
      found_CSV = false;

      //Serial.print("Ready to connect: ");
      //Serial.println(millis());
    }
  }

  if (ready_to_update){
    Serial.println("Connecting...");
    if (localClient.connect()) {

      // here we assign comma-separated values to 'data', which will update Pachube datastreams
      // we use all the analog-in values, but could of course use anything else millis(), digital
      // inputs, etc. . i also like to keep track of successful and failed connection
      // attempts, sometimes useful for determining whether there are major problems.


      // vengono sommati 10 valori di temperatura per poi farne la media
      for( cont = 0; cont < 10; cont++)
      {
        sensoreTemperatura = analogRead(LM35_TEMP); // lettura della tensione del pin OUT LM35
        sensoreTemperatura_medio += sensoreTemperatura; //sommatoria dei valori

        ref = analogRead(LM35_REF); // lettura della tensione di riferimento
        ref_medio += ref; // sommatoria dei valori

        //  delay(500); // intervallo di campionamento
        //la lettura durera' 10 (numero di camoioni) x 500ms (intervallo tra due campioni) = 5000ms
      } 

      if(cont == 10) // quando ho sommato i dieci valori campionati si esegue:
      {
        cont = 0; // azzeramento contatore, per far ripartire il successivo campionamento

        // media della sommatoria dei dieci valori campionati di ref e sensoreTemperatura
        sensoreTemperatura_medio = sensoreTemperatura_medio / 10;
        ref_medio = ref_medio / 10;

        // conversione dei valori medi misurati in una temperatura in gradi centigradi
        temperatura = (sensoreTemperatura_medio - ref_medio) * 100/2.56;
        temperatura = temperatura * 5/1024;

        // valore di temperatura che verra' mostrato quando si e' in fase di campionamento
        //e non c'e' una temperatura disponibile
        prev_temperatura = temperatura; 

        // stampa su seriale dei due valori medi
        // Serial.print(" ref_medio: ");
        //Serial.print(ref_medio);
        //Serial.print(" temp_medio: ");
        //Serial.print(sensoreTemperatura_medio);

        // prima di un successiva acquisizione e media questi valori vanno azzerati
        sensoreTemperatura_medio = 0;
        ref_medio = 0;
      }
      else{
        temperatura = prev_temperatura;
      }
      // stampa su seriale della temperatura ottenuta in gradi centigradi
      //Serial.print(" gradi: ");
      //Serial.println(temperatura);


      sprintf(pachube_data,"%f,%d,%d", temperatura , successes + 1, failures);
      content_length = strlen(pachube_data);

      ... il resto è uguale

In pratica sulla seriale vedo :
Connecting… connection failed

quindi non riesce mai ad entrare nell’ " if (localClient.connect()) { "
che si trova dopo l’istruzion " Serial.println(“Connecting…”); "
:-/

io non ho ancora risolto...per adesso ho accantonato