problemas con sensores

Hola gente del foro... tengo una estacion meteorologica conectada y cada 5 minutos envia a una web los datos... el problema es que funciona bien un rato y luego me tira errores como por ejemplo 340km el viento o 200 grados de temperatura..... datos claramente erroneos.. subo el codigo arduino para saber si puede haber un error en el codigo.
se aceptan sugerencias que desde ya estan muy agradecidas

#include <SPI.h>
#include <Ethernet.h>

char                 databuffer[35];
double               temp;
long intervalo =300000;   // es el tiempo de nuestro delay   5 minutos     60000
long tiempo = 0;
long tiempoAnterior = 0;
boolean bandera=1;
// Mac unica de cada EthernetShield (deben cambiarla)
byte mac[] = { 0x90, 0xA2, 0xDA, 0x0D, 0x4E, 0xD7 };

// Descomentar esta linea si se desea un IP fijo
IPAddress ip(192,168,0,50);

// Descomentar esta linea para asignar un DNS fijo
IPAddress myDns(200,58,112,193);

// Inicializa la instancia client
EthernetClient client;

// Direccion del servidor
char server[] = "www.*****.com";

// Variable de tiempo de la ultima conexion en milisegundos
unsigned long ultimaConexion = 0;          
// Estado de la ultima conexion
boolean ultimoEstado = false;
// Intervalo en milisegundos entre conexiones
const unsigned long intervaloConexion =1000; //300000;   

// Datos del sensor

int Direccion;
float velocidad;
float velMax;
float temperatura;
float OneHour;
float OneDay;
float presion;
int humedad,i;



//String envioDatos = "GET /estacion/carga.php?";
String envioDatos = "GET /carga.php?";
String url = " ";
#define parametro1 "&WindDirection="
#define parametro2 "&WindSpeedAverage="
#define parametro7 "&WindSpeedMax="
#define parametro3 "&Temperature="
#define parametro4 "&RainfallOneHour="
#define parametro5 "&BarPressure="
#define parametro6 "&Humidity="
#define parametro8 "&RainfallOneDay="



 
void setup() {
  // Inicializa puerto serial
  Serial.begin(9600);
  
  
  // 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() {
 
      tiempo = millis();
  
      if(tiempo - tiempoAnterior > intervalo) 
      {
        
      tiempoAnterior = tiempo;  
      
  
   
     getBuffer();  
     Serial.println("#### Prueba sensores ####");     
      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();

    
 
 // Realiza la conexion http al servidor

   if (client.available()) {
    char c = client.read();
    Serial.print(c);
  }

  // Se conecta al servidor en el puerto 80 (web)
  if (client.connect(server, 80)) {
     url = 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(url);
    // Envia el requerimiento al servidor via GET
    
       Serial.print(presion);
Serial.print(temperatura);
  Serial.println("Iniciando conexion...");
    
    client.print("GET /carga2.php?");
    client.println(" HTTP/1.1");
    client.print("Host: ");
    client.println(server);
    client.println("User-Agent: Arduino-Ethernet");
    Serial.println("Conectado");
    client.println("Connection: close");
    client.println();

    // Actualiza el tiempo en milisegundos de la ultima conexion
    ultimaConexion = millis();
  } 
  else {
    
    Serial.println("Fallo en la conexion");
  }
  if (!client.connected()) {
    Serial.println("Disconnected!");
  }
  client.stop();
  client.flush();
  //delay(60000); // Espero un minuto antes de tomar otra muestra
    }

}

// Fin del loop principal

void getBuffer()                                                                    //Get weather status data
{
  int index;
  for (index = 0;index < 35;index ++)
  {
    if(Serial.available())
    {
      databuffer[index] = Serial.read();
      if (databuffer[0] != 'c')
      {
        index = -1;
      }
    }
    else
    {
      index --;
    }
  }
}
 
int transCharToInt(char *_buffer,int _start,int _stop)                               //char to int)
{
  int _index;
  int result = 0;
  int num = _stop - _start + 1;
  int _temp[num];
  for (_index = _start;_index <= _stop;_index ++)
  {
    _temp[_index - _start] = _buffer[_index] - '0';
    result = 10*result + _temp[_index - _start];
  }
  return result;
}
 
int WindDirection()                                                                  //Wind Direction
{
  return transCharToInt(databuffer,1,3);
}
 
float WindSpeedAverage()                                                             //air Speed (1 minute)
{
  temp = 0.44704 * transCharToInt(databuffer,5,7);
  return temp;
}
 
float WindSpeedMax()                                                                 //Max air speed (5 minutes)
{
  temp = 0.44704 * transCharToInt(databuffer,9,11);
  return temp;
}
 
float Temperature()                                                                  //Temperature ("C")
{
  temp = (transCharToInt(databuffer,13,15) - 32.00) * 5.00 / 9.00;
  return temp;
}
 
float RainfallOneHour()                                                              //Rainfall (1 hour)
{
  temp = transCharToInt(databuffer,17,19) * 25.40 * 0.01;
  return temp;
}
 
float RainfallOneDay()                                                               //Rainfall (24 hours)
{
  temp = transCharToInt(databuffer,21,23) * 25.40 * 0.01;
  return temp;
}
 
int Humidity()                                                                       //Humidity
{
  return transCharToInt(databuffer,25,26);
}
 
float BarPressure()                                                                  //Barometric Pressure
{
  temp = transCharToInt(databuffer,28,32);
  return (temp / 10.00)*2;
}

Puedes poner los datos del buffer recibidos como para que nosotros evaluemos que falla?

char                 databuffer[35];

Lo que recibe databuffer quiero saber

Hola surbyte..muchas gracias por responder..
Tengo la estacion conectada en un techo fuera de alcance... si sirve de ayuda los sensores arrojan bien los datos por la consola.
La falla es aleatoria....de 12 resultados q arroja por hora 3 o 4 son erroneos..

¿Has probado a monitorizar la petición get enviada a ver si hay algún error? Pon debajo del

client.print(url);
Serial.print(url);

Ok...no me va a quedar otra q bajarla. Lo pruebo y comento. Gracias..
Otra inquietud... podra ser el array databuffer que no lo limpio dps de enviado? .

Perdón pero que tiene que ver que la tengas en el techo fuera de alcance. Yo te pedí un buffer de ejemplo para poder probar lo que dices!!

Hola surbyte...no se como hace.. comente lo del techo porque el arduino esta ahi y es la unica forma que conozco de transferirle el codigo.
Gracias por responder

No quiero que transfieras el código. La información la ves donde? No puedes capturar lo que envia por Ethernet?
Donde lo recibes o a donde lo envías?

Surbyte, aca te mando una captura de la base de datos donde se guardan los datos... en mysql