3

Hi I am trying to send data collected from an series of sensors to a server using Arduino with a WiFi shield.

My code is void readdata() { char dataBuff [300];

   logfile.seek(pos);
   pos = logfile.position();
  while(logfile.available()){
    while(logfile.position() < logfile.size()){
      String dataBuff = logfile.readStringUntil('\n');
 Serial.println(F("DataBuff is"));
 Serial.println(dataBuff);

        //Variables for WiFi Shield
  char ssid[] = "xxx";       //your network SSID (name)
  char pass[] = "xxx"; 
  char server[] = "http://example.com";
  int dataSize = sizeof(dataBuff);

  while (status != WL_CONNECTED) {
    Serial.print(F("Attempting to connect to SSID: "));
    Serial.println(ssid);

    status = WiFi.begin(ssid, pass);

    // wait 1 second for connection:
    delay(1000);
  }
  Serial.println(F("Connected to wifi"));
 // #endif

  // check for the presence of the shield:
  if (WiFi.status() == WL_NO_SHIELD) {
    Serial.println(F("WiFi shield not present"));
    // don't continue:
   while (true);
  }

  int fileSize = 0;
  fileSize = sizeof(dataBuff);
  uint32_t fileLength = 0;
  fileLength = 137 + fileSize + 40;
  Serial.println (fileLength);

  Serial.println(F("\nStarting connection to server..."));
  Serial.println(server);
  // if you get a connection, report back via serial:
  if (client.connect(server, 80)) {
    Serial.println(F("connected to server"));
    // Make a HTTP request:

  client.print(F("POST /uploadf HTTP/1.1\r\n"));
  client.print(F("Host: example.com\r\n"));
  client.print(F("User-Agent: Frank/1.0\r\n"));
  client.print(F("Accept-Encoding: gzip, deflate\r\n"));
  client.print(F("Accept: */*\r\n"));
  client.print(F("Connection: keep-alive\r\n"));
  client.print(F("Content-Length: "));
  client.print(fileLength);
  client.print(F("\r\n"));
  client.print(F("Content-Type: multipart/form-data;   boundary=710ff0c6cf2d4c73b12db64cab12e58c\r\n"));
  client.print(F("\r\n"));
  client.print(F("--710ff0c6cf2d4c73b12db64cab12e58c\r\nContent-Disposition: form-data; name=\"file\"; filename=\""));
  client.print(dataSent);
  client.print(F("\""));
  client.print(F("\r\n"));
  client.print(F("Content-Type: text/plain\r\n\r\n"));
  client.print(dataBuff);
  client.print(F("\r\n--710ff0c6cf2d4c73b12db64cab12e58c--\r\n"));
  }

  while(client.connected()){
    while (client.available()&& status==WL_CONNECTED) {
    char c = client.read();
    Serial.write(c);
  }
  }

  client.stop();

  // if the server's disconnected, stop the client:
  if (!client.connected()) {
    Serial.print(F("\r\n"));
    Serial.println(F("disconnecting from server."));
    client.flush();
    client.stop();

  } 
    }
   }
 logfile.close();
 while (true);
  }

When I run the code the data is read correctly but upon connecting to the server I get the following

connected to server

disconnecting from server.

1 Answer 1

4

Go this fixed: For anyone who runs into similar problem the attached code allows you to open a file and read the data one line at a time and upload t a server.

 void readdata()
  {

            //Variables for WiFi Shield
  char ssid[] = "example";           //your network SSID (name)
  char pass[] = "example";           
  char server[] = "http://sleeppapi.pythonanywhere.com";

  while (status != WL_CONNECTED) {
    Serial.print(F("Attempting to connect to SSID: "));
    Serial.println(ssid);

    status = WiFi.begin(ssid, pass);

    // wait 1 second for connection:
    delay(1000);
  }
  Serial.println(F("Connected to wifi"));
 // #endif

  // check for the presence of the shield:
  if (WiFi.status() == WL_NO_SHIELD) {
    Serial.println(F("WiFi shield not present"));
    // don't continue:
   while (true);
  }

  int fileLength = 0;
  fileLength = 137 + filesize + 40;
  Serial.println(filesize);

  Serial.println(F("\nStarting connection to server..."));
  Serial.println(server);
  // if you get a connection, report back via serial:
  if (client.connect(server, 80)) {
    Serial.println(F("connected to server"));

    // Make a HTTP request:

  client.print(F("POST /uploadf HTTP/1.1\r\n"));
  client.print(F("Host: example.com\r\n"));
  client.print(F("User-Agent: Frank/1.0\r\n"));
  client.print(F("Accept-Encoding: gzip, deflate\r\n"));
  client.print(F("Accept: */*\r\n"));
  client.print(F("Connection: keep-alive\r\n"));
  client.print(F("Content-Length: "));
  client.print(fileLength);
  client.print(F("\r\n"));
  client.print(F("Content-Type: multipart/form-data;     boundary=710ff0c6cf2d4c73b12db64cab12e58c\r\n"));
  client.print(F("\r\n"));
  client.print(F("--710ff0c6cf2d4c73b12db64cab12e58c\r\nContent-Disposition:  form-data; name=\"file\"; filename=\""));
  client.print(dataSent);
  client.print(F("\""));
  client.print(F("\r\n"));
  client.print(F("Content-Type: text/plain\r\n\r\n"));
  logfile=SD.open(nameFile);
  while(logfile.available()){
    while(logfile.position() < logfile.size()){
      String dataBuff = logfile.readStringUntil('\n');
      client.print(dataBuff);
      client.print("\n");
    }
  }
  client.print(F("\r\n--710ff0c6cf2d4c73b12db64cab12e58c--\r\n"));
  //client.flush();
  }

  while(client.connected()){
    while (client.available()&& status==WL_CONNECTED) {
      char c = client.read();
     Serial.write(c);
   }
 }

  // if the server's disconnected, stop the client:
  if (!client.connected()) {
    Serial.print(F("\r\n"));
    Serial.println(F("disconnecting from server."));
    client.stop();

  } 
 logfile.close();
 while (true);
  }
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.