#include <WiFi.h>
#include <WiFiClient.h>
#include <ESP32_FTPClient.h>
#define ssid "SSIDDESU"
#define password "passworddesu"
char ftp_server[] = "192.xxx.xxx.xxx";
char ftp_user[] = "usernamae";
char ftp_pass[] = "passworddesu";
//wifi接続
int lpcnt;
int lpcnt2;
// you can pass a FTP timeout and debbug mode on the last 2 arguments
ESP32_FTPClient ftp (ftp_server,ftp_user,ftp_pass, 5000, 2);//2でデバッグ 1で無し
void setup()
{
//SPIFFS.format();
Serial.begin( 115200 );
delay(500);
// ssidとpasswordを用いてWi-Fiに接続
Serial.print("Connecting to ");
Serial.println(ssid);
while (WiFi.status() != WL_CONNECTED) { // 接続確認
delay(500); // 0.5秒毎にチェック
lpcnt += 1 ; //
if (lpcnt > 6) { // 6回目(3秒) で切断/再接続
WiFi.disconnect(true,true) ; //
WiFi.begin(ssid, password); //
lpcnt = 0 ; //
lpcnt2 += 1 ; // 再接続の回数をカウント
} //
if (lpcnt2 > 3) { // 3回 接続できなければ、
ESP.restart() ; // ソフトウェアリセット
} //
Serial.print("."); //
}
// IPアドレスを出力し、webserverをスタート
Serial.println("");
Serial.println("WiFi connected.");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
ftp.OpenConnection();//ftp転送開始
mkdirs("Testdirectory"); //Testdirectoryが無ければディレクトリを作成する
ftp.ChangeWorkDir("Testdirectory");//ディレクトリを移動
ftp.InitFile("Type A");//アスキーモードで転送
ftp.AppendFile("TestFileName.csv");//転送するファイルの名前
ftp.Write("data1,data2,data3");//ファイルの中身を書き出し
ftp.CloseFile();
ftp.CloseConnection();
}
//ftp ディレクトリが無ければ作成
void mkdirs(String dirString){
char dirName[256];
int flgmkdir=0;
strcpy(dirName,dirString.c_str());//stringをcharに変換
for(int iii=0; iii < 2; iii++) //フォルダが見つからないかリトライ 無くてもよい
{
ftp.InitFile("Type A");
String list[128]={};
ftp.ContentListWithListCommand("", list);
//sizeof(list)は、byteを返すのでlistの個数ではない
//ライブラリのサンプルを流用の為 配列サイズ128でよい
for( uint8_t imm = 0; imm < sizeof(list); imm++)
{
if(list[imm].length() > 0)
{
String str=list[imm];
Serial.print("フォルダ名:");
Serial.println(str);
str.trim();
dirString.trim();
if( str==dirString )
{
flgmkdir=1;
Serial.println("見つかりました");
break;
}
}
else
break;
}
if(flgmkdir==1){break;}
}
if(flgmkdir==0){
Serial.println("見つかりませんでした作成します");
ftp.InitFile("Type A");
ftp.MakeDir(dirName);
}
}
void loop()
{
}