conexion a red

Hola gente, sigo con problemas con la estacion meteorologica... paso a comentar el nuevo problema
tomo los datos de los sensores y los envia a una web... la primera conexion la hace perfecta.. la visualiza y captura.. pero luego ya me da error en la conexion
Uso la funcion delay momentaneamente de prueba
subo la rutina principal.. si alguien puede darme una mano agradecida... ya no se por donde mirar y desde ya gracias

void setup() {
  // Inicializa puerto serial
  Serial.begin(9600);
  Serial.println("#### Prueba sensores ####");
  
  // Espera 1 segundo para que se inicie la tarjeta Ethernet
  delay(1000);
  // Si deseas usar un ip fijo y un DNS fijo descomentar esta linea y comentar la linea 39
   Ethernet.begin(mac, ip, myDns);
  // Inicializa la tarjeta ethernet mediante DHCP
  Ethernet.begin(mac);
  // Imprime la direccion IP de la tarjeta
  Serial.print("Direccion IP: ");
  Serial.println(Ethernet.localIP());
}
// Loop principal
void loop() {
 
        
      
  
   
     getBuffer();       
      Serial.print("Wind speed: ");
      Serial.print(WindSpeedMax());                                                          
      Serial.print("Wind Direction: ");
      Serial.print(WindDirection());
      Serial.println("  ");
      Serial.print("Average Wind Speed (One Minute): ");
      Serial.print(WindSpeedAverage());
      Serial.println("m/s  ");
      Serial.print("Rain Fall (One Hour): ");
      Serial.print(RainfallOneHour());
      Serial.println("mm  ");
      Serial.print("Temperature: ");
      Serial.print(Temperature());
      Serial.println("C  ");
      Serial.print("Humidity: ");
      Serial.print(Humidity());
      Serial.println("%  ");
      Serial.print("Barometric Pressure: ");
      Serial.print(BarPressure());
      Serial.println("hPa");
      Serial.println("");
      Serial.println("");
    
      Direccion = WindDirection();
      velocidad=WindSpeedAverage();
      temperatura=Temperature();
      OneHour=RainfallOneHour();
      presion=BarPressure();
      humedad = Humidity();
      velMax = WindSpeedMax();
      OneDay =RainfallOneDay();
 
  httpRequest();
  
  delay (60000);
  }



// Fin del loop principal

// Realiza la conexion http al servidor
void httpRequest() {
  // Se conecta al servidor en el puerto 80 (web)
  if (client.connect(server, 80)) {
     envioDatos +=  parametro1 + String(Direccion) + parametro2  + String(velocidad)+ parametro3  + String(temperatura) +  parametro4  + String(OneHour) + parametro5 +  String(presion) + parametro6 +  String(humedad) + parametro7  + String(velMax)+ parametro8  + String(OneDay);
     client.print(envioDatos);
   
    // Envia el requerimiento al servidor via GET
    Serial.println("Iniciando conexion...");
    
    client.print("GET /****.php?");
     client.println(" HTTP/1.1");
    client.print("Host: ");
    client.println(server);
    client.println("User-Agent: Arduino-Ethernet");
    client.println("Connection: close");
    client.println();


  } 
  else {
    // Si la conexion fallo se desconecta
    Serial.println("Error al conectarse al servidor");
    Serial.println("Desconectando...");
    client.stop();
    }
    
}

Por que no asignas una dirección IP fija en tu proyecto dentro de tu intranet ? y no dependes del dhcp
Realmente el cable y la toma al swich funcionen bien?

Puedes crear un .Bat que lance Ping a tu estación meteorológica y comprobar que esta y responde sin perdida de conexión o paquetes.

@echo off
setlocal

for /F "delims=" %%i in ('ping 127.0.0.1 -t') do call :format "%%i"
goto :done

:format
echo %date% %time% %1 1>> output.txt

:done

Solo tienes que cambiar donde pone ('ping 127.0.0.1 -t') por la dirección IP asignada a tu estación, te mostraría esto.

26/10/2009 13:53:54.28 ""
26/10/2009 13:53:54.29 "Haciendo ping a 127.0.0.1 con 32 bytes de datos:"
26/10/2009 13:53:54.29 ""
26/10/2009 13:53:54.29 "Respuesta desde 127.0.0.1: bytes=32 tiempo<1m TTL=128"
26/10/2009 13:53:54.31 "Respuesta desde 127.0.0.1: bytes=32 tiempo<1m TTL=128"
26/10/2009 13:53:54.31 "Respuesta desde 127.0.0.1: bytes=32 tiempo<1m TTL=128"
26/10/2009 13:53:54.31 "Respuesta desde 127.0.0.1: bytes=32 tiempo<1m TTL=128"
26/10/2009 13:53:54.31 "Respuesta desde 127.0.0.1: bytes=32 tiempo<1m TTL=128"
26/10/2009 13:53:54.32 "Respuesta desde 127.0.0.1: bytes=32 tiempo<1m TTL=128"
26/10/2009 13:53:54.32 "Respuesta desde 127.0.0.1: bytes=32 tiempo<1m TTL=128"
26/10/2009 13:53:54.32 "Respuesta desde 127.0.0.1: bytes=32 tiempo<1m TTL=128"
26/10/2009 13:53:54.34 "Respuesta desde 127.0.0.1: bytes=32 tiempo<1m TTL=128"
26/10/2009 13:53:54.34 "Respuesta desde 127.0.0.1: bytes=32 tiempo<1m TTL=128"
26/10/2009 13:53:54.34 "Respuesta desde 127.0.0.1: bytes=32 tiempo<1m TTL=128"
26/10/2009 13:53:54.34 "Respuesta desde 127.0.0.1: bytes=32 tiempo<1m TTL=128"
26/10/2009 13:53:54.35 "Respuesta desde 127.0.0.1: bytes=32 tiempo<1m TTL=128"
26/10/2009 13:53:54.35 "Respuesta desde 127.0.0.1: bytes=32 tiempo<1m TTL=128"
26/10/2009 13:53:54.35 "Respuesta desde 127.0.0.1: bytes=32 tiempo<1m TTL=128"
26/10/2009 13:53:54.37 ""
26/10/2009 13:53:54.37 "Estadísticas de ping para 127.0.0.1:"
26/10/2009 13:53:54.37 "    Paquetes: enviados = 15, recibidos = 15, perdidos = 0"
26/10/2009 13:53:54.37 "    (0 perdidos),"
26/10/2009 13:53:54.39 "Tiempos aproximados de ida y vuelta en milisegundos:"
26/10/2009 13:53:54.39 "    Mínimo = 0ms, Máximo = 0ms, Media = 0ms"
26/10/2009 13:53:54.39 "Control-C"

También puedes incluir en el código una conexión (Telnet Serial Monitor) de esta forma no tiene que conectar físicamente con tu arduino, por la red conectarías con el puerto serie.

Espero que te pueda servir para solucionar el problema, pero seguro que algunas de estas opciones serán de utilidad yo incluiría (Telnet Serial Monitor) te dará mucho juego, ya que estarías conectado a tu estación el cualquier parte del mundo, con una simple conexiona a la Red.