Development

» WiFi PRO 17: FTP upload

This example shows how to perform FTP upload. The file transferred has previously been created in the Waspmote SD card.

Required Materials

- The battery has to be connected.
- This example can be executed in Waspmote v15

Notes

1 x Waspmote
1 x Battery
1 x WiFi PRO Module

Code

/*  
 *  ------ WIFI Example -------- 
 *  
 *  Explanation: This example shows how to perform FTP upload.
 *  The file transferred has previously been created in the Waspmote 
 *  SD card.
 *  
 *  Copyright (C) 2016 Libelium Comunicaciones Distribuidas S.L. 
 *  http://www.libelium.com 
 *  
 *  This program is free software: you can redistribute it and/or modify  
 *  it under the terms of the GNU General Public License as published by  
 *  the Free Software Foundation, either version 3 of the License, or  
 *  (at your option) any later version.  
 *   
 *  This program is distributed in the hope that it will be useful,  
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of  
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 *  GNU General Public License for more details.  
 *   
 *  You should have received a copy of the GNU General Public License  
 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.  
 *  
 *  Version:           3.0
 *  Design:            David Gascon 
 *  Implementation:    Yuri Carmona
 */

// Put your libraries here (#include ...)
#include <WaspWIFI_PRO.h> 


// choose socket (SELECT USER'S SOCKET)
///////////////////////////////////////
uint8_t socket = SOCKET0;
///////////////////////////////////////


// choose FTP server settings
///////////////////////////////////////
char SERVER[]   = "pruebas.libelium.com";
char PORT[]     = "21";
char USER[]     = "w@libelium.com";
char PASSWORD[] = "ftp1234";
///////////////////////////////////////

/////////////////////////////////////////////////////////////////////// 
// Define filenames for SD card and FTP server:
//  - If the file is in the root directory: "FILE.TXT" or "/FILE.TXT" 
//  - If the file is inside a folder: "/FOLDER/FILE.TXT"	
///////////////////////////////////////////////////////////////////////
char SD_FILE[]     = "/FILE1.TXT";
char SERVER_FILE[] = "/FILE2.TXT";
///////////////////////////////////////////////////////////////////////


// define variables
uint8_t error;
uint8_t status;
unsigned long previous;
uint8_t sd_answer;
uint16_t ftp_handle = 0;


void setup() 
{
  USB.println(F("Start program"));  
  USB.println(F("***************************************"));  
  USB.println(F("Once the module is set with one or more"));
  USB.println(F("AP settings, it attempts to join the AP"));
  USB.println(F("automatically once it is powered on"));    
  USB.println(F("Refer to example 'WIFI_PRO_01' to configure"));  
  USB.println(F("the WiFi module with proper settings"));
  USB.println(F("***************************************"));

  //////////////////////////////////////////////////
  // 1. Create a new file to upload
  //////////////////////////////////////////////////  

  ///////////////////////////////////
  // 1.1. Init SD card
  ///////////////////////////////////
  sd_answer = SD.ON();

  if (sd_answer == 1)
  {
    USB.println(F("1. SD init OK"));
  }
  else 
  {
    USB.println(F("1. SD init ERROR"));  
  }

  ///////////////////////////////////
  // 1.2. Delete file if exists
  ///////////////////////////////////
  sd_answer = SD.del(SD_FILE);

  if (sd_answer == 1)
  {
    USB.println(F("2. File deleted"));
  }
  else 
  {
    USB.println(F("2. File NOT deleted"));  
  }

  ///////////////////////////////////
  // 1.3. Create file
  ///////////////////////////////////
  sd_answer = SD.create(SD_FILE);

  if (sd_answer == 1)
  {
    USB.println(F("3. File created"));
  }
  else 
  {
    USB.println(F("3. File NOT created"));  
  }

  ///////////////////////////////////
  // 1.4. Append contents  
  ///////////////////////////////////
  USB.println(F("4. Appending data..."));  
  for( int i=0; i<100; i++)
  {
    sd_answer = SD.append( SD_FILE, "This is a new message\n");

    if (sd_answer != 1)
    {
      USB.println(F("SD append error"));
    }
  }

  ///////////////////////////////////
  //1.5. Close SD
  ///////////////////////////////////
  SD.OFF();   
  USB.println(F("5. SD off"));
  USB.println(F("Setup done\n\n"));
}



void loop()
{ 
  // get actual time
  previous = millis();


  //////////////////////////////////////////////////
  // 1. Switch ON
  //////////////////////////////////////////////////  
  error = WIFI_PRO.ON(socket);

  if( error == 0 )
  {    
    USB.println(F("1. WiFi switched ON"));
  }
  else
  {
    USB.println(F("1. WiFi did not initialize correctly"));
  }


  //////////////////////////////////////////////////
  // 2. Check if connected
  //////////////////////////////////////////////////  

  // check connectivity
  status =  WIFI_PRO.isConnected();

  // Check if module is connected
  if (status == true)
  {    
    USB.print(F("2. WiFi is connected OK"));
    USB.print(F(" Time(ms):"));    
    USB.println(millis()-previous);
  }
  else
  {
    USB.print(F("2. WiFi is connected ERROR")); 
    USB.print(F(" Time(ms):"));    
    USB.println(millis()-previous);    
  }



  //////////////////////////////////////////////////
  // 3. FTP
  //////////////////////////////////////////////////  

  // Check if module is connected
  if (status == true)
  {   
    /////////////////////////////////////////////// 
    // 3.1. Open FTP session
    ///////////////////////////////////////////////
    error = WIFI_PRO.ftpOpenSession( SERVER, PORT, USER, PASSWORD );

    // check response
    if (error == 0)
    {
      // get FTP handle
      ftp_handle = WIFI_PRO._ftp_handle;
      
      USB.print(F("3.1. Open FTP session OK in handle:"));
      USB.println(ftp_handle, DEC);
    }
    else
    {
      USB.println(F("3.1. Error calling 'ftpOpenSession' function"));
      WIFI_PRO.printErrorCode();    
      status = false;
    }


    ///////////////////////////////////////////////
    // 3.2. Upload file
    ///////////////////////////////////////////////
    if (status == true)
    {
      error = WIFI_PRO.ftpUpload( ftp_handle, SERVER_FILE, SD_FILE);

      // check response
      if (error == 0)
      {
        USB.println(F("3.2. FTP Upload OK"));       
      }
      else
      {
        USB.println(F("3.2. FTP Upload error")); 
        WIFI_PRO.printErrorCode();
        status = false;
      }

      USB.print(F("Time from OFF state (ms):"));    
      USB.println(millis()-previous);   


      /////////////////////////////////////////////
      // 3.3. Get File Size
      /////////////////////////////////////////////
      if (status == true)
      {
        error = WIFI_PRO.ftpFileSize(ftp_handle, SERVER_FILE);

        // check response
        if( error == 0 )
        {
          USB.print(F("3.3. File size: "));  
          USB.println(WIFI_PRO._filesize,DEC);      
        }
        else
        {
          USB.println(F("3.3. FileSize error")); 
          WIFI_PRO.printErrorCode();          
        }
      }


      /////////////////////////////////////////////
      // 3.4. Close FTP session
      /////////////////////////////////////////////
      error = WIFI_PRO.ftpCloseSession(ftp_handle);

      // check response
      if (error == 0)
      {
        USB.println(F("3.4. Close FTP session OK"));   
      }
      else
      {
        USB.println(F("3.4. Error calling 'ftpCloseSession' function"));
        WIFI_PRO.printErrorCode();       
      }
    }
  }


  //////////////////////////////////////////////////
  // 4. Switch OFF
  //////////////////////////////////////////////////  
  USB.println(F("4. WiFi switched OFF\n\n")); 
  WIFI_PRO.OFF(socket);


  USB.println(F("Wait 10 seconds........\n")); 
  delay(10000);

}

Output

H#
Start program
***************************************
Once the module is set with one or more
AP settings, it attempts to join the AP
automatically once it is powered on
Refer to example 'WIFI_PRO_01' to configure
the WiFi module with proper settings
***************************************
1. SD init OK
2. File deleted
3. File created
4. Appending data...
5. SD off
Setup done


1. WiFi switched ON
2. WiFi is connected OK Time(ms):5708
3.1. Open FTP session OK in handle:0
3.2. FTP Upload OK
Time from OFF state (ms):7631
3.3. File size: 2200
3.4. Close FTP session OK
4. WiFi switched OFF


Wait 10 seconds........

Quick Publish: