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 .
*
* 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........
Last updated