Jan 12, 2022 - move some old versions to old
|
@ -1,112 +1,112 @@
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* FTP SERVER FOR ESP8266
|
* FTP SERVER FOR ESP8266
|
||||||
* based on FTP Serveur for Arduino Due and Ethernet shield (W5100) or WIZ820io (W5200)
|
* based on FTP Serveur for Arduino Due and Ethernet shield (W5100) or WIZ820io (W5200)
|
||||||
* based on Jean-Michel Gallego's work
|
* based on Jean-Michel Gallego's work
|
||||||
* modified to work with esp8266 SPIFFS by David Paiva (david@nailbuster.com)
|
* modified to work with esp8266 SPIFFS by David Paiva (david@nailbuster.com)
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify
|
* 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
|
* it under the terms of the GNU General Public License as published by
|
||||||
* the Free Software Foundation, either version 3 of the License, or
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
* (at your option) any later version.
|
* (at your option) any later version.
|
||||||
*
|
*
|
||||||
* This program is distributed in the hope that it will be useful,
|
* This program is distributed in the hope that it will be useful,
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
* GNU General Public License for more details.
|
* GNU General Public License for more details.
|
||||||
*
|
*
|
||||||
* You should have received a copy of the GNU General Public License
|
* You should have received a copy of the GNU General Public License
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
// 2017: modified by @robo8080
|
// 2017: modified by @robo8080
|
||||||
// 2019: modified by @fa1ke5
|
// 2019: modified by @fa1ke5
|
||||||
|
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
** **
|
** **
|
||||||
** DEFINITIONS FOR FTP SERVER **
|
** DEFINITIONS FOR FTP SERVER **
|
||||||
** **
|
** **
|
||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
|
|
||||||
// Uncomment to print debugging info to console attached to ESP8266
|
// Uncomment to print debugging info to console attached to ESP8266
|
||||||
//#define FTP_DEBUG
|
//#define FTP_DEBUG
|
||||||
|
|
||||||
#ifndef FTP_SERVERESP_H
|
#ifndef FTP_SERVERESP_H
|
||||||
#define FTP_SERVERESP_H
|
#define FTP_SERVERESP_H
|
||||||
|
|
||||||
//#include "Streaming.h"
|
//#include "Streaming.h"
|
||||||
#include "SD_MMC.h"
|
#include "SD_MMC.h"
|
||||||
#include <FS.h>
|
#include <FS.h>
|
||||||
#include <WiFiClient.h>
|
#include <WiFiClient.h>
|
||||||
|
|
||||||
#define FTP_SERVER_VERSION "FTP-2016-01-14"
|
#define FTP_SERVER_VERSION "FTP-2016-01-14"
|
||||||
|
|
||||||
#define FTP_CTRL_PORT 21 // Command port on wich server is listening
|
#define FTP_CTRL_PORT 21 // Command port on wich server is listening
|
||||||
#define FTP_DATA_PORT_PASV 50009 // Data port in passive mode
|
#define FTP_DATA_PORT_PASV 50009 // Data port in passive mode
|
||||||
|
|
||||||
#define FTP_TIME_OUT 5 // Disconnect client after 5 minutes of inactivity
|
#define FTP_TIME_OUT 5 // Disconnect client after 5 minutes of inactivity
|
||||||
#define FTP_CMD_SIZE 255 + 8 // max size of a command
|
#define FTP_CMD_SIZE 255 + 8 // max size of a command
|
||||||
#define FTP_CWD_SIZE 255 + 8 // max size of a directory name
|
#define FTP_CWD_SIZE 255 + 8 // max size of a directory name
|
||||||
#define FTP_FIL_SIZE 255 // max size of a file name
|
#define FTP_FIL_SIZE 255 // max size of a file name
|
||||||
|
|
||||||
//#define FTP_BUF_SIZE 512 //512 // size of file buffer for read/write
|
//#define FTP_BUF_SIZE 512 //512 // size of file buffer for read/write
|
||||||
//#define FTP_BUF_SIZE 2*1460 //512 // size of file buffer for read/write
|
//#define FTP_BUF_SIZE 2*1460 //512 // size of file buffer for read/write
|
||||||
#define FTP_BUF_SIZE 4096 //512 // 700 KByte/s download in AP mode, direct connection.
|
#define FTP_BUF_SIZE 4096 //512 // 700 KByte/s download in AP mode, direct connection.
|
||||||
|
|
||||||
|
|
||||||
class FtpServer
|
class FtpServer
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
void begin(String uname, String pword);
|
void begin(String uname, String pword);
|
||||||
void handleFTP();
|
void handleFTP();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
bool haveParameter();
|
bool haveParameter();
|
||||||
bool makeExistsPath( char * path, char * param = NULL );
|
bool makeExistsPath( char * path, char * param = NULL );
|
||||||
void iniVariables();
|
void iniVariables();
|
||||||
void clientConnected();
|
void clientConnected();
|
||||||
void disconnectClient();
|
void disconnectClient();
|
||||||
boolean userIdentity();
|
boolean userIdentity();
|
||||||
boolean userPassword();
|
boolean userPassword();
|
||||||
boolean processCommand();
|
boolean processCommand();
|
||||||
boolean dataConnect();
|
boolean dataConnect();
|
||||||
boolean doRetrieve();
|
boolean doRetrieve();
|
||||||
boolean doStore();
|
boolean doStore();
|
||||||
void closeTransfer();
|
void closeTransfer();
|
||||||
void abortTransfer();
|
void abortTransfer();
|
||||||
boolean makePath( char * fullname );
|
boolean makePath( char * fullname );
|
||||||
boolean makePath( char * fullName, char * param );
|
boolean makePath( char * fullName, char * param );
|
||||||
uint8_t getDateTime( uint16_t * pyear, uint8_t * pmonth, uint8_t * pday,
|
uint8_t getDateTime( uint16_t * pyear, uint8_t * pmonth, uint8_t * pday,
|
||||||
uint8_t * phour, uint8_t * pminute, uint8_t * second );
|
uint8_t * phour, uint8_t * pminute, uint8_t * second );
|
||||||
char * makeDateTimeStr( char * tstr, uint16_t date, uint16_t time );
|
char * makeDateTimeStr( char * tstr, uint16_t date, uint16_t time );
|
||||||
int8_t readChar();
|
int8_t readChar();
|
||||||
|
|
||||||
IPAddress dataIp; // IP address of client for data
|
IPAddress dataIp; // IP address of client for data
|
||||||
WiFiClient client;
|
WiFiClient client;
|
||||||
WiFiClient data;
|
WiFiClient data;
|
||||||
|
|
||||||
File file;
|
File file;
|
||||||
|
|
||||||
boolean dataPassiveConn;
|
boolean dataPassiveConn;
|
||||||
uint16_t dataPort;
|
uint16_t dataPort;
|
||||||
char buf[ FTP_BUF_SIZE ]; // data buffer for transfers
|
char buf[ FTP_BUF_SIZE ]; // data buffer for transfers
|
||||||
char cmdLine[ FTP_CMD_SIZE ]; // where to store incoming char from client
|
char cmdLine[ FTP_CMD_SIZE ]; // where to store incoming char from client
|
||||||
char cwdName[ FTP_CWD_SIZE ]; // name of current directory
|
char cwdName[ FTP_CWD_SIZE ]; // name of current directory
|
||||||
char command[ 5 ]; // command sent by client
|
char command[ 5 ]; // command sent by client
|
||||||
boolean rnfrCmd; // previous command was RNFR
|
boolean rnfrCmd; // previous command was RNFR
|
||||||
char * parameters; // point to begin of parameters sent by client
|
char * parameters; // point to begin of parameters sent by client
|
||||||
uint16_t iCL; // pointer to cmdLine next incoming char
|
uint16_t iCL; // pointer to cmdLine next incoming char
|
||||||
int8_t cmdStatus, // status of ftp command connexion
|
int8_t cmdStatus, // status of ftp command connexion
|
||||||
transferStatus; // status of ftp data transfer
|
transferStatus; // status of ftp data transfer
|
||||||
uint32_t millisTimeOut, // disconnect after 5 min of inactivity
|
uint32_t millisTimeOut, // disconnect after 5 min of inactivity
|
||||||
millisDelay,
|
millisDelay,
|
||||||
millisEndConnection, //
|
millisEndConnection, //
|
||||||
millisBeginTrans, // store time of beginning of a transaction
|
millisBeginTrans, // store time of beginning of a transaction
|
||||||
bytesTransfered; //
|
bytesTransfered; //
|
||||||
String _FTP_USER;
|
String _FTP_USER;
|
||||||
String _FTP_PASS;
|
String _FTP_PASS;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // FTP_SERVERESP_H
|
#endif // FTP_SERVERESP_H
|
|
@ -1,112 +1,112 @@
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* FTP SERVER FOR ESP8266
|
* FTP SERVER FOR ESP8266
|
||||||
* based on FTP Serveur for Arduino Due and Ethernet shield (W5100) or WIZ820io (W5200)
|
* based on FTP Serveur for Arduino Due and Ethernet shield (W5100) or WIZ820io (W5200)
|
||||||
* based on Jean-Michel Gallego's work
|
* based on Jean-Michel Gallego's work
|
||||||
* modified to work with esp8266 SPIFFS by David Paiva (david@nailbuster.com)
|
* modified to work with esp8266 SPIFFS by David Paiva (david@nailbuster.com)
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify
|
* 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
|
* it under the terms of the GNU General Public License as published by
|
||||||
* the Free Software Foundation, either version 3 of the License, or
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
* (at your option) any later version.
|
* (at your option) any later version.
|
||||||
*
|
*
|
||||||
* This program is distributed in the hope that it will be useful,
|
* This program is distributed in the hope that it will be useful,
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
* GNU General Public License for more details.
|
* GNU General Public License for more details.
|
||||||
*
|
*
|
||||||
* You should have received a copy of the GNU General Public License
|
* You should have received a copy of the GNU General Public License
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
// 2017: modified by @robo8080
|
// 2017: modified by @robo8080
|
||||||
// 2019: modified by @fa1ke5
|
// 2019: modified by @fa1ke5
|
||||||
|
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
** **
|
** **
|
||||||
** DEFINITIONS FOR FTP SERVER **
|
** DEFINITIONS FOR FTP SERVER **
|
||||||
** **
|
** **
|
||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
|
|
||||||
// Uncomment to print debugging info to console attached to ESP8266
|
// Uncomment to print debugging info to console attached to ESP8266
|
||||||
#define FTP_DEBUG
|
#define FTP_DEBUG
|
||||||
|
|
||||||
#ifndef FTP_SERVERESP_H
|
#ifndef FTP_SERVERESP_H
|
||||||
#define FTP_SERVERESP_H
|
#define FTP_SERVERESP_H
|
||||||
|
|
||||||
//#include "Streaming.h"
|
//#include "Streaming.h"
|
||||||
#include "SD_MMC.h"
|
#include "SD_MMC.h"
|
||||||
#include <FS.h>
|
#include <FS.h>
|
||||||
#include <WiFiClient.h>
|
#include <WiFiClient.h>
|
||||||
|
|
||||||
#define FTP_SERVER_VERSION "FTP-2016-01-14"
|
#define FTP_SERVER_VERSION "FTP-2016-01-14"
|
||||||
|
|
||||||
#define FTP_CTRL_PORT 21 // Command port on wich server is listening
|
#define FTP_CTRL_PORT 21 // Command port on wich server is listening
|
||||||
#define FTP_DATA_PORT_PASV 50009 // Data port in passive mode
|
#define FTP_DATA_PORT_PASV 50009 // Data port in passive mode
|
||||||
|
|
||||||
#define FTP_TIME_OUT 5 // Disconnect client after 5 minutes of inactivity
|
#define FTP_TIME_OUT 5 // Disconnect client after 5 minutes of inactivity
|
||||||
#define FTP_CMD_SIZE 255 + 8 // max size of a command
|
#define FTP_CMD_SIZE 255 + 8 // max size of a command
|
||||||
#define FTP_CWD_SIZE 255 + 8 // max size of a directory name
|
#define FTP_CWD_SIZE 255 + 8 // max size of a directory name
|
||||||
#define FTP_FIL_SIZE 255 // max size of a file name
|
#define FTP_FIL_SIZE 255 // max size of a file name
|
||||||
|
|
||||||
//#define FTP_BUF_SIZE 512 //512 // size of file buffer for read/write
|
//#define FTP_BUF_SIZE 512 //512 // size of file buffer for read/write
|
||||||
//#define FTP_BUF_SIZE 2*1460 //512 // size of file buffer for read/write
|
//#define FTP_BUF_SIZE 2*1460 //512 // size of file buffer for read/write
|
||||||
#define FTP_BUF_SIZE 4096 //512 // 700 KByte/s download in AP mode, direct connection.
|
#define FTP_BUF_SIZE 4096 //512 // 700 KByte/s download in AP mode, direct connection.
|
||||||
|
|
||||||
|
|
||||||
class FtpServer
|
class FtpServer
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
void begin(String uname, String pword);
|
void begin(String uname, String pword);
|
||||||
void handleFTP();
|
void handleFTP();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
bool haveParameter();
|
bool haveParameter();
|
||||||
bool makeExistsPath( char * path, char * param = NULL );
|
bool makeExistsPath( char * path, char * param = NULL );
|
||||||
void iniVariables();
|
void iniVariables();
|
||||||
void clientConnected();
|
void clientConnected();
|
||||||
void disconnectClient();
|
void disconnectClient();
|
||||||
boolean userIdentity();
|
boolean userIdentity();
|
||||||
boolean userPassword();
|
boolean userPassword();
|
||||||
boolean processCommand();
|
boolean processCommand();
|
||||||
boolean dataConnect();
|
boolean dataConnect();
|
||||||
boolean doRetrieve();
|
boolean doRetrieve();
|
||||||
boolean doStore();
|
boolean doStore();
|
||||||
void closeTransfer();
|
void closeTransfer();
|
||||||
void abortTransfer();
|
void abortTransfer();
|
||||||
boolean makePath( char * fullname );
|
boolean makePath( char * fullname );
|
||||||
boolean makePath( char * fullName, char * param );
|
boolean makePath( char * fullName, char * param );
|
||||||
uint8_t getDateTime( uint16_t * pyear, uint8_t * pmonth, uint8_t * pday,
|
uint8_t getDateTime( uint16_t * pyear, uint8_t * pmonth, uint8_t * pday,
|
||||||
uint8_t * phour, uint8_t * pminute, uint8_t * second );
|
uint8_t * phour, uint8_t * pminute, uint8_t * second );
|
||||||
char * makeDateTimeStr( char * tstr, uint16_t date, uint16_t time );
|
char * makeDateTimeStr( char * tstr, uint16_t date, uint16_t time );
|
||||||
int8_t readChar();
|
int8_t readChar();
|
||||||
|
|
||||||
IPAddress dataIp; // IP address of client for data
|
IPAddress dataIp; // IP address of client for data
|
||||||
WiFiClient client;
|
WiFiClient client;
|
||||||
WiFiClient data;
|
WiFiClient data;
|
||||||
|
|
||||||
File file;
|
File file;
|
||||||
|
|
||||||
boolean dataPassiveConn;
|
boolean dataPassiveConn;
|
||||||
uint16_t dataPort;
|
uint16_t dataPort;
|
||||||
char buf[ FTP_BUF_SIZE ]; // data buffer for transfers
|
char buf[ FTP_BUF_SIZE ]; // data buffer for transfers
|
||||||
char cmdLine[ FTP_CMD_SIZE ]; // where to store incoming char from client
|
char cmdLine[ FTP_CMD_SIZE ]; // where to store incoming char from client
|
||||||
char cwdName[ FTP_CWD_SIZE ]; // name of current directory
|
char cwdName[ FTP_CWD_SIZE ]; // name of current directory
|
||||||
char command[ 5 ]; // command sent by client
|
char command[ 5 ]; // command sent by client
|
||||||
boolean rnfrCmd; // previous command was RNFR
|
boolean rnfrCmd; // previous command was RNFR
|
||||||
char * parameters; // point to begin of parameters sent by client
|
char * parameters; // point to begin of parameters sent by client
|
||||||
uint16_t iCL; // pointer to cmdLine next incoming char
|
uint16_t iCL; // pointer to cmdLine next incoming char
|
||||||
int8_t cmdStatus, // status of ftp command connexion
|
int8_t cmdStatus, // status of ftp command connexion
|
||||||
transferStatus; // status of ftp data transfer
|
transferStatus; // status of ftp data transfer
|
||||||
uint32_t millisTimeOut, // disconnect after 5 min of inactivity
|
uint32_t millisTimeOut, // disconnect after 5 min of inactivity
|
||||||
millisDelay,
|
millisDelay,
|
||||||
millisEndConnection, //
|
millisEndConnection, //
|
||||||
millisBeginTrans, // store time of beginning of a transaction
|
millisBeginTrans, // store time of beginning of a transaction
|
||||||
bytesTransfered; //
|
bytesTransfered; //
|
||||||
String _FTP_USER;
|
String _FTP_USER;
|
||||||
String _FTP_PASS;
|
String _FTP_PASS;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // FTP_SERVERESP_H
|
#endif // FTP_SERVERESP_H
|
|
@ -1,112 +1,112 @@
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* FTP SERVER FOR ESP8266
|
* FTP SERVER FOR ESP8266
|
||||||
* based on FTP Serveur for Arduino Due and Ethernet shield (W5100) or WIZ820io (W5200)
|
* based on FTP Serveur for Arduino Due and Ethernet shield (W5100) or WIZ820io (W5200)
|
||||||
* based on Jean-Michel Gallego's work
|
* based on Jean-Michel Gallego's work
|
||||||
* modified to work with esp8266 SPIFFS by David Paiva (david@nailbuster.com)
|
* modified to work with esp8266 SPIFFS by David Paiva (david@nailbuster.com)
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify
|
* 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
|
* it under the terms of the GNU General Public License as published by
|
||||||
* the Free Software Foundation, either version 3 of the License, or
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
* (at your option) any later version.
|
* (at your option) any later version.
|
||||||
*
|
*
|
||||||
* This program is distributed in the hope that it will be useful,
|
* This program is distributed in the hope that it will be useful,
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
* GNU General Public License for more details.
|
* GNU General Public License for more details.
|
||||||
*
|
*
|
||||||
* You should have received a copy of the GNU General Public License
|
* You should have received a copy of the GNU General Public License
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
// 2017: modified by @robo8080
|
// 2017: modified by @robo8080
|
||||||
// 2019: modified by @fa1ke5
|
// 2019: modified by @fa1ke5
|
||||||
|
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
** **
|
** **
|
||||||
** DEFINITIONS FOR FTP SERVER **
|
** DEFINITIONS FOR FTP SERVER **
|
||||||
** **
|
** **
|
||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
|
|
||||||
// Uncomment to print debugging info to console attached to ESP8266
|
// Uncomment to print debugging info to console attached to ESP8266
|
||||||
//#define FTP_DEBUG
|
//#define FTP_DEBUG
|
||||||
|
|
||||||
#ifndef FTP_SERVERESP_H
|
#ifndef FTP_SERVERESP_H
|
||||||
#define FTP_SERVERESP_H
|
#define FTP_SERVERESP_H
|
||||||
|
|
||||||
//#include "Streaming.h"
|
//#include "Streaming.h"
|
||||||
#include "SD_MMC.h"
|
#include "SD_MMC.h"
|
||||||
#include <FS.h>
|
#include <FS.h>
|
||||||
#include <WiFiClient.h>
|
#include <WiFiClient.h>
|
||||||
|
|
||||||
#define FTP_SERVER_VERSION "FTP-2016-01-14"
|
#define FTP_SERVER_VERSION "FTP-2016-01-14"
|
||||||
|
|
||||||
#define FTP_CTRL_PORT 21 // Command port on wich server is listening
|
#define FTP_CTRL_PORT 21 // Command port on wich server is listening
|
||||||
#define FTP_DATA_PORT_PASV 50009 // Data port in passive mode
|
#define FTP_DATA_PORT_PASV 50009 // Data port in passive mode
|
||||||
|
|
||||||
#define FTP_TIME_OUT 5 // Disconnect client after 5 minutes of inactivity
|
#define FTP_TIME_OUT 5 // Disconnect client after 5 minutes of inactivity
|
||||||
#define FTP_CMD_SIZE 255 + 8 // max size of a command
|
#define FTP_CMD_SIZE 255 + 8 // max size of a command
|
||||||
#define FTP_CWD_SIZE 255 + 8 // max size of a directory name
|
#define FTP_CWD_SIZE 255 + 8 // max size of a directory name
|
||||||
#define FTP_FIL_SIZE 255 // max size of a file name
|
#define FTP_FIL_SIZE 255 // max size of a file name
|
||||||
|
|
||||||
//#define FTP_BUF_SIZE 512 //512 // size of file buffer for read/write
|
//#define FTP_BUF_SIZE 512 //512 // size of file buffer for read/write
|
||||||
//#define FTP_BUF_SIZE 2*1460 //512 // size of file buffer for read/write
|
//#define FTP_BUF_SIZE 2*1460 //512 // size of file buffer for read/write
|
||||||
#define FTP_BUF_SIZE 4096 //512 // 700 KByte/s download in AP mode, direct connection.
|
#define FTP_BUF_SIZE 4096 //512 // 700 KByte/s download in AP mode, direct connection.
|
||||||
|
|
||||||
|
|
||||||
class FtpServer
|
class FtpServer
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
void begin(String uname, String pword);
|
void begin(String uname, String pword);
|
||||||
void handleFTP();
|
void handleFTP();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
bool haveParameter();
|
bool haveParameter();
|
||||||
bool makeExistsPath( char * path, char * param = NULL );
|
bool makeExistsPath( char * path, char * param = NULL );
|
||||||
void iniVariables();
|
void iniVariables();
|
||||||
void clientConnected();
|
void clientConnected();
|
||||||
void disconnectClient();
|
void disconnectClient();
|
||||||
boolean userIdentity();
|
boolean userIdentity();
|
||||||
boolean userPassword();
|
boolean userPassword();
|
||||||
boolean processCommand();
|
boolean processCommand();
|
||||||
boolean dataConnect();
|
boolean dataConnect();
|
||||||
boolean doRetrieve();
|
boolean doRetrieve();
|
||||||
boolean doStore();
|
boolean doStore();
|
||||||
void closeTransfer();
|
void closeTransfer();
|
||||||
void abortTransfer();
|
void abortTransfer();
|
||||||
boolean makePath( char * fullname );
|
boolean makePath( char * fullname );
|
||||||
boolean makePath( char * fullName, char * param );
|
boolean makePath( char * fullName, char * param );
|
||||||
uint8_t getDateTime( uint16_t * pyear, uint8_t * pmonth, uint8_t * pday,
|
uint8_t getDateTime( uint16_t * pyear, uint8_t * pmonth, uint8_t * pday,
|
||||||
uint8_t * phour, uint8_t * pminute, uint8_t * second );
|
uint8_t * phour, uint8_t * pminute, uint8_t * second );
|
||||||
char * makeDateTimeStr( char * tstr, uint16_t date, uint16_t time );
|
char * makeDateTimeStr( char * tstr, uint16_t date, uint16_t time );
|
||||||
int8_t readChar();
|
int8_t readChar();
|
||||||
|
|
||||||
IPAddress dataIp; // IP address of client for data
|
IPAddress dataIp; // IP address of client for data
|
||||||
WiFiClient client;
|
WiFiClient client;
|
||||||
WiFiClient data;
|
WiFiClient data;
|
||||||
|
|
||||||
File file;
|
File file;
|
||||||
|
|
||||||
boolean dataPassiveConn;
|
boolean dataPassiveConn;
|
||||||
uint16_t dataPort;
|
uint16_t dataPort;
|
||||||
char buf[ FTP_BUF_SIZE ]; // data buffer for transfers
|
char buf[ FTP_BUF_SIZE ]; // data buffer for transfers
|
||||||
char cmdLine[ FTP_CMD_SIZE ]; // where to store incoming char from client
|
char cmdLine[ FTP_CMD_SIZE ]; // where to store incoming char from client
|
||||||
char cwdName[ FTP_CWD_SIZE ]; // name of current directory
|
char cwdName[ FTP_CWD_SIZE ]; // name of current directory
|
||||||
char command[ 5 ]; // command sent by client
|
char command[ 5 ]; // command sent by client
|
||||||
boolean rnfrCmd; // previous command was RNFR
|
boolean rnfrCmd; // previous command was RNFR
|
||||||
char * parameters; // point to begin of parameters sent by client
|
char * parameters; // point to begin of parameters sent by client
|
||||||
uint16_t iCL; // pointer to cmdLine next incoming char
|
uint16_t iCL; // pointer to cmdLine next incoming char
|
||||||
int8_t cmdStatus, // status of ftp command connexion
|
int8_t cmdStatus, // status of ftp command connexion
|
||||||
transferStatus; // status of ftp data transfer
|
transferStatus; // status of ftp data transfer
|
||||||
uint32_t millisTimeOut, // disconnect after 5 min of inactivity
|
uint32_t millisTimeOut, // disconnect after 5 min of inactivity
|
||||||
millisDelay,
|
millisDelay,
|
||||||
millisEndConnection, //
|
millisEndConnection, //
|
||||||
millisBeginTrans, // store time of beginning of a transaction
|
millisBeginTrans, // store time of beginning of a transaction
|
||||||
bytesTransfered; //
|
bytesTransfered; //
|
||||||
String _FTP_USER;
|
String _FTP_USER;
|
||||||
String _FTP_PASS;
|
String _FTP_PASS;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // FTP_SERVERESP_H
|
#endif // FTP_SERVERESP_H
|
|
@ -1,116 +1,116 @@
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* FTP SERVER FOR ESP8266
|
* FTP SERVER FOR ESP8266
|
||||||
* based on FTP Serveur for Arduino Due and Ethernet shield (W5100) or WIZ820io (W5200)
|
* based on FTP Serveur for Arduino Due and Ethernet shield (W5100) or WIZ820io (W5200)
|
||||||
* based on Jean-Michel Gallego's work
|
* based on Jean-Michel Gallego's work
|
||||||
* modified to work with esp8266 SPIFFS by David Paiva (david@nailbuster.com)
|
* modified to work with esp8266 SPIFFS by David Paiva (david@nailbuster.com)
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify
|
* 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
|
* it under the terms of the GNU General Public License as published by
|
||||||
* the Free Software Foundation, either version 3 of the License, or
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
* (at your option) any later version.
|
* (at your option) any later version.
|
||||||
*
|
*
|
||||||
* This program is distributed in the hope that it will be useful,
|
* This program is distributed in the hope that it will be useful,
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
* GNU General Public License for more details.
|
* GNU General Public License for more details.
|
||||||
*
|
*
|
||||||
* You should have received a copy of the GNU General Public License
|
* You should have received a copy of the GNU General Public License
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
// 2017: modified by @robo8080
|
// 2017: modified by @robo8080
|
||||||
// 2019: modified by @fa1ke5
|
// 2019: modified by @fa1ke5
|
||||||
|
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
** **
|
** **
|
||||||
** DEFINITIONS FOR FTP SERVER **
|
** DEFINITIONS FOR FTP SERVER **
|
||||||
** **
|
** **
|
||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
|
|
||||||
// Uncomment to print debugging info to console attached to ESP8266
|
// Uncomment to print debugging info to console attached to ESP8266
|
||||||
//#define FTP_DEBUG
|
//#define FTP_DEBUG
|
||||||
|
|
||||||
#ifndef FTP_SERVERESP_H
|
#ifndef FTP_SERVERESP_H
|
||||||
#define FTP_SERVERESP_H
|
#define FTP_SERVERESP_H
|
||||||
|
|
||||||
//#include "Streaming.h"
|
//#include "Streaming.h"
|
||||||
#include "SD_MMC.h"
|
#include "SD_MMC.h"
|
||||||
#include <FS.h>
|
#include <FS.h>
|
||||||
#include <WiFiClient.h>
|
#include <WiFiClient.h>
|
||||||
|
|
||||||
#define FTP_SERVER_VERSION "FTP-2016-01-14"
|
#define FTP_SERVER_VERSION "FTP-2016-01-14"
|
||||||
|
|
||||||
#define FTP_CTRL_PORT 21 // Command port on wich server is listening
|
#define FTP_CTRL_PORT 21 // Command port on wich server is listening
|
||||||
#define FTP_DATA_PORT_PASV 50009 // Data port in passive mode
|
#define FTP_DATA_PORT_PASV 50009 // Data port in passive mode
|
||||||
|
|
||||||
#define FTP_TIME_OUT 5 // Disconnect client after 5 minutes of inactivity
|
#define FTP_TIME_OUT 5 // Disconnect client after 5 minutes of inactivity
|
||||||
#define FTP_CMD_SIZE 255 + 8 // max size of a command
|
#define FTP_CMD_SIZE 255 + 8 // max size of a command
|
||||||
#define FTP_CWD_SIZE 255 + 8 // max size of a directory name
|
#define FTP_CWD_SIZE 255 + 8 // max size of a directory name
|
||||||
#define FTP_FIL_SIZE 255 // max size of a file name
|
#define FTP_FIL_SIZE 255 // max size of a file name
|
||||||
|
|
||||||
//#define FTP_BUF_SIZE 512 //512 // size of file buffer for read/write
|
//#define FTP_BUF_SIZE 512 //512 // size of file buffer for read/write
|
||||||
//#define FTP_BUF_SIZE 2*1460 //512 // size of file buffer for read/write
|
//#define FTP_BUF_SIZE 2*1460 //512 // size of file buffer for read/write
|
||||||
//#define FTP_BUF_SIZE 4096 //512 // 700 KByte/s download in AP mode, direct connection.
|
//#define FTP_BUF_SIZE 4096 //512 // 700 KByte/s download in AP mode, direct connection.
|
||||||
//#define FTP_BUF_SIZE 8192 reduce in v82
|
//#define FTP_BUF_SIZE 8192 reduce in v82
|
||||||
//#define FTP_BUF_SIZE 2048
|
//#define FTP_BUF_SIZE 2048
|
||||||
|
|
||||||
#define FTP_BUF_SIZE 4096
|
#define FTP_BUF_SIZE 4096
|
||||||
|
|
||||||
|
|
||||||
class FtpServer
|
class FtpServer
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
void begin(String uname, String pword);
|
void begin(String uname, String pword);
|
||||||
void handleFTP();
|
void handleFTP();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
bool haveParameter();
|
bool haveParameter();
|
||||||
bool makeExistsPath( char * path, char * param = NULL );
|
bool makeExistsPath( char * path, char * param = NULL );
|
||||||
void iniVariables();
|
void iniVariables();
|
||||||
void clientConnected();
|
void clientConnected();
|
||||||
void disconnectClient();
|
void disconnectClient();
|
||||||
boolean userIdentity();
|
boolean userIdentity();
|
||||||
boolean userPassword();
|
boolean userPassword();
|
||||||
boolean processCommand();
|
boolean processCommand();
|
||||||
boolean dataConnect();
|
boolean dataConnect();
|
||||||
boolean doRetrieve();
|
boolean doRetrieve();
|
||||||
boolean doStore();
|
boolean doStore();
|
||||||
void closeTransfer();
|
void closeTransfer();
|
||||||
void abortTransfer();
|
void abortTransfer();
|
||||||
boolean makePath( char * fullname );
|
boolean makePath( char * fullname );
|
||||||
boolean makePath( char * fullName, char * param );
|
boolean makePath( char * fullName, char * param );
|
||||||
uint8_t getDateTime( uint16_t * pyear, uint8_t * pmonth, uint8_t * pday,
|
uint8_t getDateTime( uint16_t * pyear, uint8_t * pmonth, uint8_t * pday,
|
||||||
uint8_t * phour, uint8_t * pminute, uint8_t * second );
|
uint8_t * phour, uint8_t * pminute, uint8_t * second );
|
||||||
char * makeDateTimeStr( char * tstr, uint16_t date, uint16_t time );
|
char * makeDateTimeStr( char * tstr, uint16_t date, uint16_t time );
|
||||||
int8_t readChar();
|
int8_t readChar();
|
||||||
|
|
||||||
IPAddress dataIp; // IP address of client for data
|
IPAddress dataIp; // IP address of client for data
|
||||||
WiFiClient client;
|
WiFiClient client;
|
||||||
WiFiClient data;
|
WiFiClient data;
|
||||||
|
|
||||||
File file;
|
File file;
|
||||||
|
|
||||||
boolean dataPassiveConn;
|
boolean dataPassiveConn;
|
||||||
uint16_t dataPort;
|
uint16_t dataPort;
|
||||||
char buf[ FTP_BUF_SIZE ]; // data buffer for transfers
|
char buf[ FTP_BUF_SIZE ]; // data buffer for transfers
|
||||||
char cmdLine[ FTP_CMD_SIZE ]; // where to store incoming char from client
|
char cmdLine[ FTP_CMD_SIZE ]; // where to store incoming char from client
|
||||||
char cwdName[ FTP_CWD_SIZE ]; // name of current directory
|
char cwdName[ FTP_CWD_SIZE ]; // name of current directory
|
||||||
char command[ 5 ]; // command sent by client
|
char command[ 5 ]; // command sent by client
|
||||||
boolean rnfrCmd; // previous command was RNFR
|
boolean rnfrCmd; // previous command was RNFR
|
||||||
char * parameters; // point to begin of parameters sent by client
|
char * parameters; // point to begin of parameters sent by client
|
||||||
uint16_t iCL; // pointer to cmdLine next incoming char
|
uint16_t iCL; // pointer to cmdLine next incoming char
|
||||||
int8_t cmdStatus, // status of ftp command connexion
|
int8_t cmdStatus, // status of ftp command connexion
|
||||||
transferStatus; // status of ftp data transfer
|
transferStatus; // status of ftp data transfer
|
||||||
uint32_t millisTimeOut, // disconnect after 5 min of inactivity
|
uint32_t millisTimeOut, // disconnect after 5 min of inactivity
|
||||||
millisDelay,
|
millisDelay,
|
||||||
millisEndConnection, //
|
millisEndConnection, //
|
||||||
millisBeginTrans, // store time of beginning of a transaction
|
millisBeginTrans, // store time of beginning of a transaction
|
||||||
bytesTransfered; //
|
bytesTransfered; //
|
||||||
String _FTP_USER;
|
String _FTP_USER;
|
||||||
String _FTP_PASS;
|
String _FTP_PASS;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // FTP_SERVERESP_H
|
#endif // FTP_SERVERESP_H
|
|
@ -1,123 +1,123 @@
|
||||||
/*
|
/*
|
||||||
Copyright (c) 2018 Brian Lough. All right reserved.
|
Copyright (c) 2018 Brian Lough. All right reserved.
|
||||||
|
|
||||||
UniversalTelegramBot - Library to create your own Telegram Bot using
|
UniversalTelegramBot - Library to create your own Telegram Bot using
|
||||||
ESP8266 or ESP32 on Arduino IDE.
|
ESP8266 or ESP32 on Arduino IDE.
|
||||||
|
|
||||||
This library is free software; you can redistribute it and/or
|
This library is free software; you can redistribute it and/or
|
||||||
modify it under the terms of the GNU Lesser General Public
|
modify it under the terms of the GNU Lesser General Public
|
||||||
License as published by the Free Software Foundation; either
|
License as published by the Free Software Foundation; either
|
||||||
version 2.1 of the License, or (at your option) any later version.
|
version 2.1 of the License, or (at your option) any later version.
|
||||||
|
|
||||||
This library is distributed in the hope that it will be useful,
|
This library is distributed in the hope that it will be useful,
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
Lesser General Public License for more details.
|
Lesser General Public License for more details.
|
||||||
|
|
||||||
You should have received a copy of the GNU Lesser General Public
|
You should have received a copy of the GNU Lesser General Public
|
||||||
License along with this library; if not, write to the Free Software
|
License along with this library; if not, write to the Free Software
|
||||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef UniversalTelegramBot_h
|
#ifndef UniversalTelegramBot_h
|
||||||
#define UniversalTelegramBot_h
|
#define UniversalTelegramBot_h
|
||||||
|
|
||||||
#define ARDUINOJSON_DECODE_UNICODE 1
|
#define ARDUINOJSON_DECODE_UNICODE 1
|
||||||
#define ARDUINOJSON_USE_LONG_LONG 1
|
#define ARDUINOJSON_USE_LONG_LONG 1
|
||||||
#include <Arduino.h>
|
#include <Arduino.h>
|
||||||
#include <ArduinoJson.h>
|
#include <ArduinoJson.h>
|
||||||
#include <Client.h>
|
#include <Client.h>
|
||||||
#include <core_version.h>
|
#include <core_version.h>
|
||||||
|
|
||||||
#define HOST "api.telegram.org"
|
#define HOST "api.telegram.org"
|
||||||
#define SSL_PORT 443
|
#define SSL_PORT 443
|
||||||
#define HANDLE_MESSAGES 1
|
#define HANDLE_MESSAGES 1
|
||||||
|
|
||||||
//unmark following line to enable debug mode
|
//unmark following line to enable debug mode
|
||||||
//#define _debug
|
//#define _debug
|
||||||
|
|
||||||
typedef bool (*MoreDataAvailable)();
|
typedef bool (*MoreDataAvailable)();
|
||||||
typedef byte (*GetNextByte)();
|
typedef byte (*GetNextByte)();
|
||||||
typedef byte* (*GetNextBuffer)();
|
typedef byte* (*GetNextBuffer)();
|
||||||
typedef int (GetNextBufferLen)();
|
typedef int (GetNextBufferLen)();
|
||||||
|
|
||||||
struct telegramMessage {
|
struct telegramMessage {
|
||||||
String text;
|
String text;
|
||||||
String chat_id;
|
String chat_id;
|
||||||
String chat_title;
|
String chat_title;
|
||||||
String from_id;
|
String from_id;
|
||||||
String from_name;
|
String from_name;
|
||||||
String date;
|
String date;
|
||||||
String type;
|
String type;
|
||||||
float longitude;
|
float longitude;
|
||||||
float latitude;
|
float latitude;
|
||||||
int update_id;
|
int update_id;
|
||||||
};
|
};
|
||||||
|
|
||||||
class UniversalTelegramBot {
|
class UniversalTelegramBot {
|
||||||
public:
|
public:
|
||||||
UniversalTelegramBot(String token, Client &client);
|
UniversalTelegramBot(String token, Client &client);
|
||||||
String sendGetToTelegram(String command);
|
String sendGetToTelegram(String command);
|
||||||
String sendPostToTelegram(String command, JsonObject payload);
|
String sendPostToTelegram(String command, JsonObject payload);
|
||||||
String
|
String
|
||||||
sendMultipartFormDataToTelegram(String command, String binaryProperyName,
|
sendMultipartFormDataToTelegram(String command, String binaryProperyName,
|
||||||
String fileName, String contentType,
|
String fileName, String contentType,
|
||||||
String chat_id, int fileSize,
|
String chat_id, int fileSize,
|
||||||
MoreDataAvailable moreDataAvailableCallback,
|
MoreDataAvailable moreDataAvailableCallback,
|
||||||
GetNextByte getNextByteCallback,
|
GetNextByte getNextByteCallback,
|
||||||
GetNextBuffer getNextBufferCallback,
|
GetNextBuffer getNextBufferCallback,
|
||||||
GetNextBufferLen getNextBufferLenCallback);
|
GetNextBufferLen getNextBufferLenCallback);
|
||||||
|
|
||||||
String
|
String
|
||||||
sendMultipartFormDataToTelegramWithCaption(String command, String binaryProperyName,
|
sendMultipartFormDataToTelegramWithCaption(String command, String binaryProperyName,
|
||||||
String fileName, String contentType,
|
String fileName, String contentType,
|
||||||
String caption, String chat_id, int fileSize,
|
String caption, String chat_id, int fileSize,
|
||||||
MoreDataAvailable moreDataAvailableCallback,
|
MoreDataAvailable moreDataAvailableCallback,
|
||||||
GetNextByte getNextByteCallback,
|
GetNextByte getNextByteCallback,
|
||||||
GetNextBuffer getNextBufferCallback,
|
GetNextBuffer getNextBufferCallback,
|
||||||
GetNextBufferLen getNextBufferLenCallback);
|
GetNextBufferLen getNextBufferLenCallback);
|
||||||
|
|
||||||
|
|
||||||
bool getMe();
|
bool getMe();
|
||||||
|
|
||||||
bool sendSimpleMessage(String chat_id, String text, String parse_mode);
|
bool sendSimpleMessage(String chat_id, String text, String parse_mode);
|
||||||
bool sendMessage(String chat_id, String text, String parse_mode = "");
|
bool sendMessage(String chat_id, String text, String parse_mode = "");
|
||||||
bool sendMessageWithReplyKeyboard(String chat_id, String text,
|
bool sendMessageWithReplyKeyboard(String chat_id, String text,
|
||||||
String parse_mode, String keyboard,
|
String parse_mode, String keyboard,
|
||||||
bool resize = false, bool oneTime = false,
|
bool resize = false, bool oneTime = false,
|
||||||
bool selective = false);
|
bool selective = false);
|
||||||
bool sendMessageWithInlineKeyboard(String chat_id, String text,
|
bool sendMessageWithInlineKeyboard(String chat_id, String text,
|
||||||
String parse_mode, String keyboard);
|
String parse_mode, String keyboard);
|
||||||
|
|
||||||
bool sendChatAction(String chat_id, String text);
|
bool sendChatAction(String chat_id, String text);
|
||||||
|
|
||||||
bool sendPostMessage(JsonObject payload);
|
bool sendPostMessage(JsonObject payload);
|
||||||
String sendPostPhoto(JsonObject payload);
|
String sendPostPhoto(JsonObject payload);
|
||||||
String sendPhotoByBinary(String chat_id, String contentType, int fileSize,
|
String sendPhotoByBinary(String chat_id, String contentType, int fileSize,
|
||||||
MoreDataAvailable moreDataAvailableCallback,
|
MoreDataAvailable moreDataAvailableCallback,
|
||||||
GetNextByte getNextByteCallback,
|
GetNextByte getNextByteCallback,
|
||||||
GetNextBuffer getNextBufferCallback,
|
GetNextBuffer getNextBufferCallback,
|
||||||
GetNextBufferLen getNextBufferLenCallback);
|
GetNextBufferLen getNextBufferLenCallback);
|
||||||
String sendPhoto(String chat_id, String photo, String caption = "",
|
String sendPhoto(String chat_id, String photo, String caption = "",
|
||||||
bool disable_notification = false,
|
bool disable_notification = false,
|
||||||
int reply_to_message_id = 0, String keyboard = "");
|
int reply_to_message_id = 0, String keyboard = "");
|
||||||
|
|
||||||
int getUpdates(long offset);
|
int getUpdates(long offset);
|
||||||
bool checkForOkResponse(String response);
|
bool checkForOkResponse(String response);
|
||||||
telegramMessage messages[HANDLE_MESSAGES];
|
telegramMessage messages[HANDLE_MESSAGES];
|
||||||
long last_message_received;
|
long last_message_received;
|
||||||
String name;
|
String name;
|
||||||
String userName;
|
String userName;
|
||||||
int longPoll = 0;
|
int longPoll = 0;
|
||||||
int waitForResponse = 10000; //jz = 1500;
|
int waitForResponse = 10000; //jz = 1500;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
// JsonObject * parseUpdates(String response);
|
// JsonObject * parseUpdates(String response);
|
||||||
String _token;
|
String _token;
|
||||||
Client *client;
|
Client *client;
|
||||||
void closeClient();
|
void closeClient();
|
||||||
const int maxMessageLength = 1500; //was 1500
|
const int maxMessageLength = 1500; //was 1500
|
||||||
bool processResult(JsonObject result, int messageIndex);
|
bool processResult(JsonObject result, int messageIndex);
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
|
@ -1,64 +1,64 @@
|
||||||
// ... pending inclusion in the new esp32 distribution - jz
|
// ... pending inclusion in the new esp32 distribution - jz
|
||||||
|
|
||||||
// You may have to edit rtc_cntl.h ... according to this link -- doesn't seem to be included in esp32 libraries as of Jun 2020 ... or I'll just put it here
|
// You may have to edit rtc_cntl.h ... according to this link -- doesn't seem to be included in esp32 libraries as of Jun 2020 ... or I'll just put it here
|
||||||
// https://github.com/espressif/esp-idf/commit/17bd6e8faba15812780d21e6e3db08fb26dd7033#diff-5e22dcf9fc6087d1585c7b2e434c0932
|
// https://github.com/espressif/esp-idf/commit/17bd6e8faba15812780d21e6e3db08fb26dd7033#diff-5e22dcf9fc6087d1585c7b2e434c0932
|
||||||
// https://github.com/espressif/esp-idf/pull/4532
|
// https://github.com/espressif/esp-idf/pull/4532
|
||||||
// C:\Users\James\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.4\tools\sdk\include\driver\driver -- approximate path
|
// C:\Users\James\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.4\tools\sdk\include\driver\driver -- approximate path
|
||||||
|
|
||||||
|
|
||||||
// Copyright 2016-2017 Espressif Systems (Shanghai) PTE LTD
|
// Copyright 2016-2017 Espressif Systems (Shanghai) PTE LTD
|
||||||
//
|
//
|
||||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
// you may not use this file except in compliance with the License.
|
// you may not use this file except in compliance with the License.
|
||||||
// You may obtain a copy of the License at
|
// You may obtain a copy of the License at
|
||||||
//
|
//
|
||||||
// http://www.apache.org/licenses/LICENSE-2.0
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
//
|
//
|
||||||
// Unless required by applicable law or agreed to in writing, software
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
// See the License for the specific language governing permissions and
|
// See the License for the specific language governing permissions and
|
||||||
// limitations under the License.
|
// limitations under the License.
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include "esp_err.h"
|
#include "esp_err.h"
|
||||||
#include "esp_intr_alloc.h"
|
#include "esp_intr_alloc.h"
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Register a handler for specific RTC_CNTL interrupts
|
* @brief Register a handler for specific RTC_CNTL interrupts
|
||||||
*
|
*
|
||||||
* Multiple handlers can be registered using this function. Whenever an
|
* Multiple handlers can be registered using this function. Whenever an
|
||||||
* RTC interrupt happens, all handlers with matching rtc_intr_mask values
|
* RTC interrupt happens, all handlers with matching rtc_intr_mask values
|
||||||
* will be called.
|
* will be called.
|
||||||
*
|
*
|
||||||
* @param handler handler function to call
|
* @param handler handler function to call
|
||||||
* @param handler_arg argument to be passed to the handler
|
* @param handler_arg argument to be passed to the handler
|
||||||
* @param rtc_intr_mask combination of RTC_CNTL_*_INT_ENA bits indicating the
|
* @param rtc_intr_mask combination of RTC_CNTL_*_INT_ENA bits indicating the
|
||||||
* sources to call the handler for
|
* sources to call the handler for
|
||||||
* @return
|
* @return
|
||||||
* - ESP_OK on success
|
* - ESP_OK on success
|
||||||
* - ESP_ERR_NO_MEM not enough memory to allocate handler structure
|
* - ESP_ERR_NO_MEM not enough memory to allocate handler structure
|
||||||
* - other errors returned by esp_intr_alloc
|
* - other errors returned by esp_intr_alloc
|
||||||
*/
|
*/
|
||||||
esp_err_t rtc_isr_register(intr_handler_t handler, void* handler_arg,
|
esp_err_t rtc_isr_register(intr_handler_t handler, void* handler_arg,
|
||||||
uint32_t rtc_intr_mask);
|
uint32_t rtc_intr_mask);
|
||||||
/**
|
/**
|
||||||
* @brief Deregister the handler previously registered using rtc_isr_register
|
* @brief Deregister the handler previously registered using rtc_isr_register
|
||||||
* @param handler handler function to call (as passed to rtc_isr_register)
|
* @param handler handler function to call (as passed to rtc_isr_register)
|
||||||
* @param handler_arg argument of the handler (as passed to rtc_isr_register)
|
* @param handler_arg argument of the handler (as passed to rtc_isr_register)
|
||||||
* @return
|
* @return
|
||||||
* - ESP_OK on success
|
* - ESP_OK on success
|
||||||
* - ESP_ERR_INVALID_STATE if a handler matching both handler and
|
* - ESP_ERR_INVALID_STATE if a handler matching both handler and
|
||||||
* handler_arg isn't registered
|
* handler_arg isn't registered
|
||||||
*/
|
*/
|
||||||
esp_err_t rtc_isr_deregister(intr_handler_t handler, void* handler_arg);
|
esp_err_t rtc_isr_deregister(intr_handler_t handler, void* handler_arg);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
|
@ -1,53 +1,53 @@
|
||||||
static const char devname[] = "desklens"; // name of your camera for mDNS, Router, and filenames
|
static const char devname[] = "desklens"; // name of your camera for mDNS, Router, and filenames
|
||||||
|
|
||||||
// https://sites.google.com/a/usapiens.com/opnode/time-zones -- find your timezone here
|
// https://sites.google.com/a/usapiens.com/opnode/time-zones -- find your timezone here
|
||||||
#define TIMEZONE "GMT0BST,M3.5.0/01,M10.5.0/02" // your timezone - this is GMT
|
#define TIMEZONE "GMT0BST,M3.5.0/01,M10.5.0/02" // your timezone - this is GMT
|
||||||
|
|
||||||
// 1 for blink red led with every sd card write, at your frame rate
|
// 1 for blink red led with every sd card write, at your frame rate
|
||||||
// 0 for blink only for skipping frames and SOS if camera or sd is broken
|
// 0 for blink only for skipping frames and SOS if camera or sd is broken
|
||||||
#define BlinkWithWrite 1
|
#define BlinkWithWrite 1
|
||||||
|
|
||||||
// EDIT ssid and password
|
// EDIT ssid and password
|
||||||
const char* ssid = "yourwifi";
|
const char* ssid = "yourwifi";
|
||||||
const char* password = "youwifipassword";
|
const char* password = "youwifipassword";
|
||||||
|
|
||||||
// reboot startup parameters here
|
// reboot startup parameters here
|
||||||
|
|
||||||
int Internet_Enabled = 1; // set to 0 to shut off all internet activities - wifi, time, http, ftp, telegram
|
int Internet_Enabled = 1; // set to 0 to shut off all internet activities - wifi, time, http, ftp, telegram
|
||||||
int DeepSleepPir = 0; // set to 1 to deepsleep between pir videos
|
int DeepSleepPir = 0; // set to 1 to deepsleep between pir videos
|
||||||
int record_on_reboot = 1; // set to 1 to record, or 0 to NOT record on reboot
|
int record_on_reboot = 1; // set to 1 to record, or 0 to NOT record on reboot
|
||||||
int PIRpin = 13; // for active high pir or microwave etc
|
int PIRpin = 13; // for active high pir or microwave etc
|
||||||
int PIRenabled = 0; // 1 is PIR is enable on reboot, will only work if you are not recording
|
int PIRenabled = 0; // 1 is PIR is enable on reboot, will only work if you are not recording
|
||||||
|
|
||||||
// here are 2 sets of startup parameters
|
// here are 2 sets of startup parameters
|
||||||
|
|
||||||
// VGA 10 fps for 30 minutes, and repeat, play at real time
|
// VGA 10 fps for 30 minutes, and repeat, play at real time
|
||||||
|
|
||||||
int framesize = 6; // 10 UXGA, 7 SVGA, 6 VGA, 5 CIF
|
int framesize = 6; // 10 UXGA, 7 SVGA, 6 VGA, 5 CIF
|
||||||
int repeat = 100; // repeat same movie this many times
|
int repeat = 100; // repeat same movie this many times
|
||||||
int xspeed = 1; // playback speed - realtime is 1, or 300 means playpack 30 fps of frames recorded at 10 second per frame ( 30 fps / 0.1 fps )
|
int xspeed = 1; // playback speed - realtime is 1, or 300 means playpack 30 fps of frames recorded at 10 second per frame ( 30 fps / 0.1 fps )
|
||||||
int gray = 0; // not gray
|
int gray = 0; // not gray
|
||||||
int quality = 12; // quality on the 10..50 subscale - 10 is good, 20 is grainy and smaller files, 12 is better in bright sunshine due to clipping
|
int quality = 12; // quality on the 10..50 subscale - 10 is good, 20 is grainy and smaller files, 12 is better in bright sunshine due to clipping
|
||||||
int capture_interval = 100; // milli-seconds between frames
|
int capture_interval = 100; // milli-seconds between frames
|
||||||
volatile int total_frames = 18000; // how many frames - length of movie in ms is total_frames x capture_interval
|
volatile int total_frames = 18000; // how many frames - length of movie in ms is total_frames x capture_interval
|
||||||
|
|
||||||
|
|
||||||
// UXGA 1 frame every 10 seconds, for 60 minutes, and repeat, play at 30 fps or 300 times speed
|
// UXGA 1 frame every 10 seconds, for 60 minutes, and repeat, play at 30 fps or 300 times speed
|
||||||
/*
|
/*
|
||||||
int framesize = 10; // 10 UXGA, 7 SVGA, 6 VGA, 5 CIF
|
int framesize = 10; // 10 UXGA, 7 SVGA, 6 VGA, 5 CIF
|
||||||
int repeat = 300; // repaeat same movie this many times
|
int repeat = 300; // repaeat same movie this many times
|
||||||
int xspeed = 300; // playback speed - realtime is 1, or 300 means playpack 30 fps of frames at 10 second per frames ( 30 fps / 0.1 fps )
|
int xspeed = 300; // playback speed - realtime is 1, or 300 means playpack 30 fps of frames at 10 second per frames ( 30 fps / 0.1 fps )
|
||||||
int gray = 0; // not gray
|
int gray = 0; // not gray
|
||||||
int quality = 12; // quality on the 10..50 subscale - 10 is good, 20 is grainy and smaller files, 12 is better in bright sunshine due to clipping
|
int quality = 12; // quality on the 10..50 subscale - 10 is good, 20 is grainy and smaller files, 12 is better in bright sunshine due to clipping
|
||||||
int capture_interval = 10000; // milli-seconds between frames
|
int capture_interval = 10000; // milli-seconds between frames
|
||||||
volatile int total_frames = 360; // how many frames - length of movie is total_frames x capture_interval
|
volatile int total_frames = 360; // how many frames - length of movie is total_frames x capture_interval
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// enable the www.telegram.org BOT - it sends a snapshot to your telegram every time it starts a video
|
// enable the www.telegram.org BOT - it sends a snapshot to your telegram every time it starts a video
|
||||||
// https://github.com/witnessmenow/Universal-Arduino-Telegram-Bot for more info about esp32 telegram
|
// https://github.com/witnessmenow/Universal-Arduino-Telegram-Bot for more info about esp32 telegram
|
||||||
// I'm using the branch v1.2 from June 2020 - new master introduced late june, but not working for picture and captions, so my v1.2 mods included here
|
// I'm using the branch v1.2 from June 2020 - new master introduced late june, but not working for picture and captions, so my v1.2 mods included here
|
||||||
// You need to create a bot, and get its number BOTtoken, and then get your telegram number -- all free at telegram.org
|
// You need to create a bot, and get its number BOTtoken, and then get your telegram number -- all free at telegram.org
|
||||||
|
|
||||||
RTC_DATA_ATTR int EnableBOT = 0; // 1 to enable
|
RTC_DATA_ATTR int EnableBOT = 0; // 1 to enable
|
||||||
#define BOTtoken "9876543210:qwertyuiopasdfghjklzxcvbnmqwertyuio" // get your own bot and id at telegram.org
|
#define BOTtoken "9876543210:qwertyuiopasdfghjklzxcvbnmqwertyuio" // get your own bot and id at telegram.org
|
||||||
#define BOTme "1234567890" // these are fake
|
#define BOTme "1234567890" // these are fake
|
Przed Szerokość: | Wysokość: | Rozmiar: 77 KiB Po Szerokość: | Wysokość: | Rozmiar: 77 KiB |
Przed Szerokość: | Wysokość: | Rozmiar: 100 KiB Po Szerokość: | Wysokość: | Rozmiar: 100 KiB |
Przed Szerokość: | Wysokość: | Rozmiar: 81 KiB Po Szerokość: | Wysokość: | Rozmiar: 81 KiB |
Przed Szerokość: | Wysokość: | Rozmiar: 114 KiB Po Szerokość: | Wysokość: | Rozmiar: 114 KiB |
|
@ -1,116 +1,116 @@
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* FTP SERVER FOR ESP8266
|
* FTP SERVER FOR ESP8266
|
||||||
* based on FTP Serveur for Arduino Due and Ethernet shield (W5100) or WIZ820io (W5200)
|
* based on FTP Serveur for Arduino Due and Ethernet shield (W5100) or WIZ820io (W5200)
|
||||||
* based on Jean-Michel Gallego's work
|
* based on Jean-Michel Gallego's work
|
||||||
* modified to work with esp8266 SPIFFS by David Paiva (david@nailbuster.com)
|
* modified to work with esp8266 SPIFFS by David Paiva (david@nailbuster.com)
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify
|
* 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
|
* it under the terms of the GNU General Public License as published by
|
||||||
* the Free Software Foundation, either version 3 of the License, or
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
* (at your option) any later version.
|
* (at your option) any later version.
|
||||||
*
|
*
|
||||||
* This program is distributed in the hope that it will be useful,
|
* This program is distributed in the hope that it will be useful,
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
* GNU General Public License for more details.
|
* GNU General Public License for more details.
|
||||||
*
|
*
|
||||||
* You should have received a copy of the GNU General Public License
|
* You should have received a copy of the GNU General Public License
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
// 2017: modified by @robo8080
|
// 2017: modified by @robo8080
|
||||||
// 2019: modified by @fa1ke5
|
// 2019: modified by @fa1ke5
|
||||||
|
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
** **
|
** **
|
||||||
** DEFINITIONS FOR FTP SERVER **
|
** DEFINITIONS FOR FTP SERVER **
|
||||||
** **
|
** **
|
||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
|
|
||||||
// Uncomment to print debugging info to console attached to ESP8266
|
// Uncomment to print debugging info to console attached to ESP8266
|
||||||
//#define FTP_DEBUG
|
//#define FTP_DEBUG
|
||||||
|
|
||||||
#ifndef FTP_SERVERESP_H
|
#ifndef FTP_SERVERESP_H
|
||||||
#define FTP_SERVERESP_H
|
#define FTP_SERVERESP_H
|
||||||
|
|
||||||
//#include "Streaming.h"
|
//#include "Streaming.h"
|
||||||
#include "SD_MMC.h"
|
#include "SD_MMC.h"
|
||||||
#include <FS.h>
|
#include <FS.h>
|
||||||
#include <WiFiClient.h>
|
#include <WiFiClient.h>
|
||||||
|
|
||||||
#define FTP_SERVER_VERSION "FTP-2016-01-14"
|
#define FTP_SERVER_VERSION "FTP-2016-01-14"
|
||||||
|
|
||||||
#define FTP_CTRL_PORT 21 // Command port on wich server is listening
|
#define FTP_CTRL_PORT 21 // Command port on wich server is listening
|
||||||
#define FTP_DATA_PORT_PASV 50009 // Data port in passive mode
|
#define FTP_DATA_PORT_PASV 50009 // Data port in passive mode
|
||||||
|
|
||||||
#define FTP_TIME_OUT 5 // Disconnect client after 5 minutes of inactivity
|
#define FTP_TIME_OUT 5 // Disconnect client after 5 minutes of inactivity
|
||||||
#define FTP_CMD_SIZE 255 + 8 // max size of a command
|
#define FTP_CMD_SIZE 255 + 8 // max size of a command
|
||||||
#define FTP_CWD_SIZE 255 + 8 // max size of a directory name
|
#define FTP_CWD_SIZE 255 + 8 // max size of a directory name
|
||||||
#define FTP_FIL_SIZE 255 // max size of a file name
|
#define FTP_FIL_SIZE 255 // max size of a file name
|
||||||
|
|
||||||
//#define FTP_BUF_SIZE 512 //512 // size of file buffer for read/write
|
//#define FTP_BUF_SIZE 512 //512 // size of file buffer for read/write
|
||||||
//#define FTP_BUF_SIZE 2*1460 //512 // size of file buffer for read/write
|
//#define FTP_BUF_SIZE 2*1460 //512 // size of file buffer for read/write
|
||||||
//#define FTP_BUF_SIZE 4096 //512 // 700 KByte/s download in AP mode, direct connection.
|
//#define FTP_BUF_SIZE 4096 //512 // 700 KByte/s download in AP mode, direct connection.
|
||||||
//#define FTP_BUF_SIZE 8192 reduce in v82
|
//#define FTP_BUF_SIZE 8192 reduce in v82
|
||||||
//#define FTP_BUF_SIZE 2048
|
//#define FTP_BUF_SIZE 2048
|
||||||
|
|
||||||
#define FTP_BUF_SIZE 4096
|
#define FTP_BUF_SIZE 4096
|
||||||
|
|
||||||
|
|
||||||
class FtpServer
|
class FtpServer
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
void begin(String uname, String pword);
|
void begin(String uname, String pword);
|
||||||
void handleFTP();
|
void handleFTP();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
bool haveParameter();
|
bool haveParameter();
|
||||||
bool makeExistsPath( char * path, char * param = NULL );
|
bool makeExistsPath( char * path, char * param = NULL );
|
||||||
void iniVariables();
|
void iniVariables();
|
||||||
void clientConnected();
|
void clientConnected();
|
||||||
void disconnectClient();
|
void disconnectClient();
|
||||||
boolean userIdentity();
|
boolean userIdentity();
|
||||||
boolean userPassword();
|
boolean userPassword();
|
||||||
boolean processCommand();
|
boolean processCommand();
|
||||||
boolean dataConnect();
|
boolean dataConnect();
|
||||||
boolean doRetrieve();
|
boolean doRetrieve();
|
||||||
boolean doStore();
|
boolean doStore();
|
||||||
void closeTransfer();
|
void closeTransfer();
|
||||||
void abortTransfer();
|
void abortTransfer();
|
||||||
boolean makePath( char * fullname );
|
boolean makePath( char * fullname );
|
||||||
boolean makePath( char * fullName, char * param );
|
boolean makePath( char * fullName, char * param );
|
||||||
uint8_t getDateTime( uint16_t * pyear, uint8_t * pmonth, uint8_t * pday,
|
uint8_t getDateTime( uint16_t * pyear, uint8_t * pmonth, uint8_t * pday,
|
||||||
uint8_t * phour, uint8_t * pminute, uint8_t * second );
|
uint8_t * phour, uint8_t * pminute, uint8_t * second );
|
||||||
char * makeDateTimeStr( char * tstr, uint16_t date, uint16_t time );
|
char * makeDateTimeStr( char * tstr, uint16_t date, uint16_t time );
|
||||||
int8_t readChar();
|
int8_t readChar();
|
||||||
|
|
||||||
IPAddress dataIp; // IP address of client for data
|
IPAddress dataIp; // IP address of client for data
|
||||||
WiFiClient client;
|
WiFiClient client;
|
||||||
WiFiClient data;
|
WiFiClient data;
|
||||||
|
|
||||||
File file;
|
File file;
|
||||||
|
|
||||||
boolean dataPassiveConn;
|
boolean dataPassiveConn;
|
||||||
uint16_t dataPort;
|
uint16_t dataPort;
|
||||||
char buf[ FTP_BUF_SIZE ]; // data buffer for transfers
|
char buf[ FTP_BUF_SIZE ]; // data buffer for transfers
|
||||||
char cmdLine[ FTP_CMD_SIZE ]; // where to store incoming char from client
|
char cmdLine[ FTP_CMD_SIZE ]; // where to store incoming char from client
|
||||||
char cwdName[ FTP_CWD_SIZE ]; // name of current directory
|
char cwdName[ FTP_CWD_SIZE ]; // name of current directory
|
||||||
char command[ 5 ]; // command sent by client
|
char command[ 5 ]; // command sent by client
|
||||||
boolean rnfrCmd; // previous command was RNFR
|
boolean rnfrCmd; // previous command was RNFR
|
||||||
char * parameters; // point to begin of parameters sent by client
|
char * parameters; // point to begin of parameters sent by client
|
||||||
uint16_t iCL; // pointer to cmdLine next incoming char
|
uint16_t iCL; // pointer to cmdLine next incoming char
|
||||||
int8_t cmdStatus, // status of ftp command connexion
|
int8_t cmdStatus, // status of ftp command connexion
|
||||||
transferStatus; // status of ftp data transfer
|
transferStatus; // status of ftp data transfer
|
||||||
uint32_t millisTimeOut, // disconnect after 5 min of inactivity
|
uint32_t millisTimeOut, // disconnect after 5 min of inactivity
|
||||||
millisDelay,
|
millisDelay,
|
||||||
millisEndConnection, //
|
millisEndConnection, //
|
||||||
millisBeginTrans, // store time of beginning of a transaction
|
millisBeginTrans, // store time of beginning of a transaction
|
||||||
bytesTransfered; //
|
bytesTransfered; //
|
||||||
String _FTP_USER;
|
String _FTP_USER;
|
||||||
String _FTP_PASS;
|
String _FTP_PASS;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // FTP_SERVERESP_H
|
#endif // FTP_SERVERESP_H
|
|
@ -1,125 +1,125 @@
|
||||||
/*
|
/*
|
||||||
Copyright (c) 2018 Brian Lough. All right reserved.
|
Copyright (c) 2018 Brian Lough. All right reserved.
|
||||||
|
|
||||||
UniversalTelegramBot - Library to create your own Telegram Bot using
|
UniversalTelegramBot - Library to create your own Telegram Bot using
|
||||||
ESP8266 or ESP32 on Arduino IDE.
|
ESP8266 or ESP32 on Arduino IDE.
|
||||||
|
|
||||||
This library is free software; you can redistribute it and/or
|
This library is free software; you can redistribute it and/or
|
||||||
modify it under the terms of the GNU Lesser General Public
|
modify it under the terms of the GNU Lesser General Public
|
||||||
License as published by the Free Software Foundation; either
|
License as published by the Free Software Foundation; either
|
||||||
version 2.1 of the License, or (at your option) any later version.
|
version 2.1 of the License, or (at your option) any later version.
|
||||||
|
|
||||||
This library is distributed in the hope that it will be useful,
|
This library is distributed in the hope that it will be useful,
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
Lesser General Public License for more details.
|
Lesser General Public License for more details.
|
||||||
|
|
||||||
You should have received a copy of the GNU Lesser General Public
|
You should have received a copy of the GNU Lesser General Public
|
||||||
License along with this library; if not, write to the Free Software
|
License along with this library; if not, write to the Free Software
|
||||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef UniversalTelegramBot_h
|
#ifndef UniversalTelegramBot_h
|
||||||
#define UniversalTelegramBot_h
|
#define UniversalTelegramBot_h
|
||||||
|
|
||||||
#define ARDUINOJSON_DECODE_UNICODE 1
|
#define ARDUINOJSON_DECODE_UNICODE 1
|
||||||
#define ARDUINOJSON_USE_LONG_LONG 1
|
#define ARDUINOJSON_USE_LONG_LONG 1
|
||||||
#include <Arduino.h>
|
#include <Arduino.h>
|
||||||
#include <ArduinoJson.h>
|
#include <ArduinoJson.h>
|
||||||
#include <Client.h>
|
#include <Client.h>
|
||||||
#include <core_version.h>
|
#include <core_version.h>
|
||||||
|
|
||||||
#define HOST "api.telegram.org"
|
#define HOST "api.telegram.org"
|
||||||
#define SSL_PORT 443
|
#define SSL_PORT 443
|
||||||
#define HANDLE_MESSAGES 1
|
#define HANDLE_MESSAGES 1
|
||||||
|
|
||||||
//unmark following line to enable debug mode
|
//unmark following line to enable debug mode
|
||||||
//#define _debug
|
//#define _debug
|
||||||
|
|
||||||
typedef bool (*MoreDataAvailable)();
|
typedef bool (*MoreDataAvailable)();
|
||||||
typedef byte (*GetNextByte)();
|
typedef byte (*GetNextByte)();
|
||||||
typedef byte* (*GetNextBuffer)();
|
typedef byte* (*GetNextBuffer)();
|
||||||
typedef int (GetNextBufferLen)();
|
typedef int (GetNextBufferLen)();
|
||||||
|
|
||||||
struct telegramMessage {
|
struct telegramMessage {
|
||||||
String text;
|
String text;
|
||||||
String chat_id;
|
String chat_id;
|
||||||
String chat_title;
|
String chat_title;
|
||||||
String from_id;
|
String from_id;
|
||||||
String from_name;
|
String from_name;
|
||||||
String date;
|
String date;
|
||||||
String type;
|
String type;
|
||||||
float longitude;
|
float longitude;
|
||||||
float latitude;
|
float latitude;
|
||||||
int update_id;
|
int update_id;
|
||||||
};
|
};
|
||||||
|
|
||||||
class UniversalTelegramBot {
|
class UniversalTelegramBot {
|
||||||
public:
|
public:
|
||||||
UniversalTelegramBot(String token, Client &client);
|
UniversalTelegramBot(String token, Client &client);
|
||||||
String sendGetToTelegram(String command);
|
String sendGetToTelegram(String command);
|
||||||
String sendPostToTelegram(String command, JsonObject payload);
|
String sendPostToTelegram(String command, JsonObject payload);
|
||||||
String
|
String
|
||||||
sendMultipartFormDataToTelegram(String command, String binaryProperyName,
|
sendMultipartFormDataToTelegram(String command, String binaryProperyName,
|
||||||
String fileName, String contentType,
|
String fileName, String contentType,
|
||||||
String chat_id, int fileSize,
|
String chat_id, int fileSize,
|
||||||
MoreDataAvailable moreDataAvailableCallback,
|
MoreDataAvailable moreDataAvailableCallback,
|
||||||
GetNextByte getNextByteCallback,
|
GetNextByte getNextByteCallback,
|
||||||
GetNextBuffer getNextBufferCallback,
|
GetNextBuffer getNextBufferCallback,
|
||||||
GetNextBufferLen getNextBufferLenCallback);
|
GetNextBufferLen getNextBufferLenCallback);
|
||||||
|
|
||||||
String
|
String
|
||||||
sendMultipartFormDataToTelegramWithCaption(String command, String binaryProperyName,
|
sendMultipartFormDataToTelegramWithCaption(String command, String binaryProperyName,
|
||||||
String fileName, String contentType,
|
String fileName, String contentType,
|
||||||
String caption, String chat_id, int fileSize,
|
String caption, String chat_id, int fileSize,
|
||||||
MoreDataAvailable moreDataAvailableCallback,
|
MoreDataAvailable moreDataAvailableCallback,
|
||||||
GetNextByte getNextByteCallback,
|
GetNextByte getNextByteCallback,
|
||||||
GetNextBuffer getNextBufferCallback,
|
GetNextBuffer getNextBufferCallback,
|
||||||
GetNextBufferLen getNextBufferLenCallback);
|
GetNextBufferLen getNextBufferLenCallback);
|
||||||
|
|
||||||
|
|
||||||
bool getMe();
|
bool getMe();
|
||||||
|
|
||||||
bool sendSimpleMessage(String chat_id, String text, String parse_mode);
|
bool sendSimpleMessage(String chat_id, String text, String parse_mode);
|
||||||
bool sendMessage(String chat_id, String text, String parse_mode = "");
|
bool sendMessage(String chat_id, String text, String parse_mode = "");
|
||||||
bool sendMessageWithReplyKeyboard(String chat_id, String text,
|
bool sendMessageWithReplyKeyboard(String chat_id, String text,
|
||||||
String parse_mode, String keyboard,
|
String parse_mode, String keyboard,
|
||||||
bool resize = false, bool oneTime = false,
|
bool resize = false, bool oneTime = false,
|
||||||
bool selective = false);
|
bool selective = false);
|
||||||
bool sendMessageWithInlineKeyboard(String chat_id, String text,
|
bool sendMessageWithInlineKeyboard(String chat_id, String text,
|
||||||
String parse_mode, String keyboard);
|
String parse_mode, String keyboard);
|
||||||
|
|
||||||
bool sendChatAction(String chat_id, String text);
|
bool sendChatAction(String chat_id, String text);
|
||||||
|
|
||||||
bool sendPostMessage(JsonObject payload);
|
bool sendPostMessage(JsonObject payload);
|
||||||
String sendPostPhoto(JsonObject payload);
|
String sendPostPhoto(JsonObject payload);
|
||||||
String sendPhotoByBinary(String chat_id, String contentType, int fileSize,
|
String sendPhotoByBinary(String chat_id, String contentType, int fileSize,
|
||||||
MoreDataAvailable moreDataAvailableCallback,
|
MoreDataAvailable moreDataAvailableCallback,
|
||||||
GetNextByte getNextByteCallback,
|
GetNextByte getNextByteCallback,
|
||||||
GetNextBuffer getNextBufferCallback,
|
GetNextBuffer getNextBufferCallback,
|
||||||
GetNextBufferLen getNextBufferLenCallback);
|
GetNextBufferLen getNextBufferLenCallback);
|
||||||
String sendPhoto(String chat_id, String photo, String caption = "",
|
String sendPhoto(String chat_id, String photo, String caption = "",
|
||||||
bool disable_notification = false,
|
bool disable_notification = false,
|
||||||
int reply_to_message_id = 0, String keyboard = "");
|
int reply_to_message_id = 0, String keyboard = "");
|
||||||
|
|
||||||
int getUpdates(long offset);
|
int getUpdates(long offset);
|
||||||
bool checkForOkResponse(String response);
|
bool checkForOkResponse(String response);
|
||||||
telegramMessage messages[HANDLE_MESSAGES];
|
telegramMessage messages[HANDLE_MESSAGES];
|
||||||
long last_message_received;
|
long last_message_received;
|
||||||
String name;
|
String name;
|
||||||
String userName;
|
String userName;
|
||||||
int longPoll = 0;
|
int longPoll = 0;
|
||||||
int waitForResponse = 5000; //jz = 1500;
|
int waitForResponse = 5000; //jz = 1500;
|
||||||
int jzdelay = 60; // delay between multipart blocks
|
int jzdelay = 60; // delay between multipart blocks
|
||||||
int jzblocksize = 2 * 1024; // multipart block size
|
int jzblocksize = 2 * 1024; // multipart block size
|
||||||
|
|
||||||
private:
|
private:
|
||||||
// JsonObject * parseUpdates(String response);
|
// JsonObject * parseUpdates(String response);
|
||||||
String _token;
|
String _token;
|
||||||
Client *client;
|
Client *client;
|
||||||
void closeClient();
|
void closeClient();
|
||||||
const int maxMessageLength = 1500; //was 1500
|
const int maxMessageLength = 1500; //was 1500
|
||||||
bool processResult(JsonObject result, int messageIndex);
|
bool processResult(JsonObject result, int messageIndex);
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
|
@ -1,64 +1,64 @@
|
||||||
// ... pending inclusion in the new esp32 distribution - jz
|
// ... pending inclusion in the new esp32 distribution - jz
|
||||||
|
|
||||||
// You may have to edit rtc_cntl.h ... according to this link -- doesn't seem to be included in esp32 libraries as of Jun 2020 ... or I'll just put it here
|
// You may have to edit rtc_cntl.h ... according to this link -- doesn't seem to be included in esp32 libraries as of Jun 2020 ... or I'll just put it here
|
||||||
// https://github.com/espressif/esp-idf/commit/17bd6e8faba15812780d21e6e3db08fb26dd7033#diff-5e22dcf9fc6087d1585c7b2e434c0932
|
// https://github.com/espressif/esp-idf/commit/17bd6e8faba15812780d21e6e3db08fb26dd7033#diff-5e22dcf9fc6087d1585c7b2e434c0932
|
||||||
// https://github.com/espressif/esp-idf/pull/4532
|
// https://github.com/espressif/esp-idf/pull/4532
|
||||||
// C:\Users\James\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.4\tools\sdk\include\driver\driver -- approximate path
|
// C:\Users\James\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.4\tools\sdk\include\driver\driver -- approximate path
|
||||||
|
|
||||||
|
|
||||||
// Copyright 2016-2017 Espressif Systems (Shanghai) PTE LTD
|
// Copyright 2016-2017 Espressif Systems (Shanghai) PTE LTD
|
||||||
//
|
//
|
||||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
// you may not use this file except in compliance with the License.
|
// you may not use this file except in compliance with the License.
|
||||||
// You may obtain a copy of the License at
|
// You may obtain a copy of the License at
|
||||||
//
|
//
|
||||||
// http://www.apache.org/licenses/LICENSE-2.0
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
//
|
//
|
||||||
// Unless required by applicable law or agreed to in writing, software
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
// See the License for the specific language governing permissions and
|
// See the License for the specific language governing permissions and
|
||||||
// limitations under the License.
|
// limitations under the License.
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include "esp_err.h"
|
#include "esp_err.h"
|
||||||
#include "esp_intr_alloc.h"
|
#include "esp_intr_alloc.h"
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Register a handler for specific RTC_CNTL interrupts
|
* @brief Register a handler for specific RTC_CNTL interrupts
|
||||||
*
|
*
|
||||||
* Multiple handlers can be registered using this function. Whenever an
|
* Multiple handlers can be registered using this function. Whenever an
|
||||||
* RTC interrupt happens, all handlers with matching rtc_intr_mask values
|
* RTC interrupt happens, all handlers with matching rtc_intr_mask values
|
||||||
* will be called.
|
* will be called.
|
||||||
*
|
*
|
||||||
* @param handler handler function to call
|
* @param handler handler function to call
|
||||||
* @param handler_arg argument to be passed to the handler
|
* @param handler_arg argument to be passed to the handler
|
||||||
* @param rtc_intr_mask combination of RTC_CNTL_*_INT_ENA bits indicating the
|
* @param rtc_intr_mask combination of RTC_CNTL_*_INT_ENA bits indicating the
|
||||||
* sources to call the handler for
|
* sources to call the handler for
|
||||||
* @return
|
* @return
|
||||||
* - ESP_OK on success
|
* - ESP_OK on success
|
||||||
* - ESP_ERR_NO_MEM not enough memory to allocate handler structure
|
* - ESP_ERR_NO_MEM not enough memory to allocate handler structure
|
||||||
* - other errors returned by esp_intr_alloc
|
* - other errors returned by esp_intr_alloc
|
||||||
*/
|
*/
|
||||||
esp_err_t rtc_isr_register(intr_handler_t handler, void* handler_arg,
|
esp_err_t rtc_isr_register(intr_handler_t handler, void* handler_arg,
|
||||||
uint32_t rtc_intr_mask);
|
uint32_t rtc_intr_mask);
|
||||||
/**
|
/**
|
||||||
* @brief Deregister the handler previously registered using rtc_isr_register
|
* @brief Deregister the handler previously registered using rtc_isr_register
|
||||||
* @param handler handler function to call (as passed to rtc_isr_register)
|
* @param handler handler function to call (as passed to rtc_isr_register)
|
||||||
* @param handler_arg argument of the handler (as passed to rtc_isr_register)
|
* @param handler_arg argument of the handler (as passed to rtc_isr_register)
|
||||||
* @return
|
* @return
|
||||||
* - ESP_OK on success
|
* - ESP_OK on success
|
||||||
* - ESP_ERR_INVALID_STATE if a handler matching both handler and
|
* - ESP_ERR_INVALID_STATE if a handler matching both handler and
|
||||||
* handler_arg isn't registered
|
* handler_arg isn't registered
|
||||||
*/
|
*/
|
||||||
esp_err_t rtc_isr_deregister(intr_handler_t handler, void* handler_arg);
|
esp_err_t rtc_isr_deregister(intr_handler_t handler, void* handler_arg);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
|
@ -1,54 +1,54 @@
|
||||||
static const char devname[] = "desklens"; // name of your camera for mDNS, Router, and filenames
|
static const char devname[] = "desklens"; // name of your camera for mDNS, Router, and filenames
|
||||||
|
|
||||||
// https://sites.google.com/a/usapiens.com/opnode/time-zones -- find your timezone here
|
// https://sites.google.com/a/usapiens.com/opnode/time-zones -- find your timezone here
|
||||||
#define TIMEZONE "GMT0BST,M3.5.0/01,M10.5.0/02" // your timezone - this is GMT
|
#define TIMEZONE "GMT0BST,M3.5.0/01,M10.5.0/02" // your timezone - this is GMT
|
||||||
|
|
||||||
// 1 for blink red led with every sd card write, at your frame rate
|
// 1 for blink red led with every sd card write, at your frame rate
|
||||||
// 0 for blink only for skipping frames and SOS if camera or sd is broken
|
// 0 for blink only for skipping frames and SOS if camera or sd is broken
|
||||||
#define BlinkWithWrite 1
|
#define BlinkWithWrite 1
|
||||||
|
|
||||||
// EDIT ssid and password
|
// EDIT ssid and password
|
||||||
const char* ssid = "jzjzjz";
|
const char* ssid = "jzjzjz";
|
||||||
const char* password = "jzjzjz";
|
const char* password = "jzjzjz";
|
||||||
|
|
||||||
// reboot startup parameters here
|
// reboot startup parameters here
|
||||||
|
|
||||||
int Internet_Enabled = 1; // set to 0 to shut off all internet activities - wifi, time, http, ftp, telegram
|
int Internet_Enabled = 1; // set to 0 to shut off all internet activities - wifi, time, http, ftp, telegram
|
||||||
int DeepSleepPir = 0; // set to 1 to deepsleep between pir videos
|
int DeepSleepPir = 0; // set to 1 to deepsleep between pir videos
|
||||||
int record_on_reboot = 1; // set to 1 to record, or 0 to NOT record on reboot
|
int record_on_reboot = 1; // set to 1 to record, or 0 to NOT record on reboot
|
||||||
int PIRpin = 13; // for active high pir or microwave etc
|
int PIRpin = 13; // for active high pir or microwave etc
|
||||||
int PIRenabled = 0; // 1 is PIR is enable on reboot, will only work if you are not recording
|
int PIRenabled = 0; // 1 is PIR is enable on reboot, will only work if you are not recording
|
||||||
|
|
||||||
// here are 2 sets of startup parameters -- more down in the stop and restart webpage
|
// here are 2 sets of startup parameters -- more down in the stop and restart webpage
|
||||||
|
|
||||||
|
|
||||||
// VGA 10 fps for 30 minutes, and repeat, play at real time
|
// VGA 10 fps for 30 minutes, and repeat, play at real time
|
||||||
/*
|
/*
|
||||||
int framesize = 6; // 10 UXGA, 7 SVGA, 6 VGA, 5 CIF
|
int framesize = 6; // 10 UXGA, 7 SVGA, 6 VGA, 5 CIF
|
||||||
int repeat_config = 100; // repaeat same movie this many times
|
int repeat_config = 100; // repaeat same movie this many times
|
||||||
int xspeed = 1; // playback speed - realtime is 1, or 300 means playpack 30 fps of frames at 10 second per frame ( 30 fps / 0.1 fps )
|
int xspeed = 1; // playback speed - realtime is 1, or 300 means playpack 30 fps of frames at 10 second per frame ( 30 fps / 0.1 fps )
|
||||||
int gray = 0; // not gray
|
int gray = 0; // not gray
|
||||||
int quality = 12; // quality on the 10..50 subscale - 10 is good, 20 is grainy and smaller files, 12 is better in bright sunshine due to clipping
|
int quality = 12; // quality on the 10..50 subscale - 10 is good, 20 is grainy and smaller files, 12 is better in bright sunshine due to clipping
|
||||||
int capture_interval = 100; // milli-seconds between frames
|
int capture_interval = 100; // milli-seconds between frames
|
||||||
volatile int total_frames_config = 18000; // how many frames - length of movie in ms is total_frames x capture_interval
|
volatile int total_frames_config = 18000; // how many frames - length of movie in ms is total_frames x capture_interval
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// UXGA 1 frame every 10 seconds for 60 minutes, and repeat, play at 30 fps or 300 times speed
|
// UXGA 1 frame every 10 seconds for 60 minutes, and repeat, play at 30 fps or 300 times speed
|
||||||
|
|
||||||
int framesize = 10; // 10 UXGA, 7 SVGA, 6 VGA, 5 CIF
|
int framesize = 10; // 10 UXGA, 7 SVGA, 6 VGA, 5 CIF
|
||||||
int repeat_config = 300; // repaeat same movie this many times
|
int repeat_config = 300; // repaeat same movie this many times
|
||||||
int xspeed = 300; // playback speed - realtime is 1, or 300 means playpack 30 fps of frames at 10 second per frames ( 30 fps / 0.1 fps )
|
int xspeed = 300; // playback speed - realtime is 1, or 300 means playpack 30 fps of frames at 10 second per frames ( 30 fps / 0.1 fps )
|
||||||
int gray = 0; // not gray
|
int gray = 0; // not gray
|
||||||
int quality = 12; // quality on the 10..50 subscale - 10 is good, 20 is grainy and smaller files, 12 is better in bright sunshine due to clipping
|
int quality = 12; // quality on the 10..50 subscale - 10 is good, 20 is grainy and smaller files, 12 is better in bright sunshine due to clipping
|
||||||
int capture_interval = 10000; // milli-seconds between frames
|
int capture_interval = 10000; // milli-seconds between frames
|
||||||
volatile int total_frames_config = 360; // how many frames - length of movie is total_frames x capture_interval
|
volatile int total_frames_config = 360; // how many frames - length of movie is total_frames x capture_interval
|
||||||
|
|
||||||
|
|
||||||
// enable the www.telegram.org BOT - it sends a text and and snapshot to you every time it starts a video
|
// enable the www.telegram.org BOT - it sends a text and and snapshot to you every time it starts a video
|
||||||
// https://github.com/witnessmenow/Universal-Arduino-Telegram-Bot
|
// https://github.com/witnessmenow/Universal-Arduino-Telegram-Bot
|
||||||
// I'm using the branch v1.2 from June 2020 - new master introduced late june, but not working for picture and captions, so my v1.2 mods included here
|
// I'm using the branch v1.2 from June 2020 - new master introduced late june, but not working for picture and captions, so my v1.2 mods included here
|
||||||
// You need to create a bot, and get its number BOTtoken, and then get your telegram number -- all free at telegram.org
|
// You need to create a bot, and get its number BOTtoken, and then get your telegram number -- all free at telegram.org
|
||||||
|
|
||||||
RTC_DATA_ATTR int EnableBOT = 0;
|
RTC_DATA_ATTR int EnableBOT = 0;
|
||||||
#define BOTtoken "9876543210:qwertyuiopasdfghjklzxcvbnmqwertyuio" // get your own bot and id at telegram.org
|
#define BOTtoken "9876543210:qwertyuiopasdfghjklzxcvbnmqwertyuio" // get your own bot and id at telegram.org
|
||||||
#define BOTme "1234567890"
|
#define BOTme "1234567890"
|
|
@ -1,116 +1,116 @@
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* FTP SERVER FOR ESP8266
|
* FTP SERVER FOR ESP8266
|
||||||
* based on FTP Serveur for Arduino Due and Ethernet shield (W5100) or WIZ820io (W5200)
|
* based on FTP Serveur for Arduino Due and Ethernet shield (W5100) or WIZ820io (W5200)
|
||||||
* based on Jean-Michel Gallego's work
|
* based on Jean-Michel Gallego's work
|
||||||
* modified to work with esp8266 SPIFFS by David Paiva (david@nailbuster.com)
|
* modified to work with esp8266 SPIFFS by David Paiva (david@nailbuster.com)
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify
|
* 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
|
* it under the terms of the GNU General Public License as published by
|
||||||
* the Free Software Foundation, either version 3 of the License, or
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
* (at your option) any later version.
|
* (at your option) any later version.
|
||||||
*
|
*
|
||||||
* This program is distributed in the hope that it will be useful,
|
* This program is distributed in the hope that it will be useful,
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
* GNU General Public License for more details.
|
* GNU General Public License for more details.
|
||||||
*
|
*
|
||||||
* You should have received a copy of the GNU General Public License
|
* You should have received a copy of the GNU General Public License
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
// 2017: modified by @robo8080
|
// 2017: modified by @robo8080
|
||||||
// 2019: modified by @fa1ke5
|
// 2019: modified by @fa1ke5
|
||||||
|
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
** **
|
** **
|
||||||
** DEFINITIONS FOR FTP SERVER **
|
** DEFINITIONS FOR FTP SERVER **
|
||||||
** **
|
** **
|
||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
|
|
||||||
// Uncomment to print debugging info to console attached to ESP8266
|
// Uncomment to print debugging info to console attached to ESP8266
|
||||||
//#define FTP_DEBUG
|
//#define FTP_DEBUG
|
||||||
|
|
||||||
#ifndef FTP_SERVERESP_H
|
#ifndef FTP_SERVERESP_H
|
||||||
#define FTP_SERVERESP_H
|
#define FTP_SERVERESP_H
|
||||||
|
|
||||||
//#include "Streaming.h"
|
//#include "Streaming.h"
|
||||||
#include "SD_MMC.h"
|
#include "SD_MMC.h"
|
||||||
#include <FS.h>
|
#include <FS.h>
|
||||||
#include <WiFiClient.h>
|
#include <WiFiClient.h>
|
||||||
|
|
||||||
#define FTP_SERVER_VERSION "FTP-2016-01-14"
|
#define FTP_SERVER_VERSION "FTP-2016-01-14"
|
||||||
|
|
||||||
#define FTP_CTRL_PORT 21 // Command port on wich server is listening
|
#define FTP_CTRL_PORT 21 // Command port on wich server is listening
|
||||||
#define FTP_DATA_PORT_PASV 50009 // Data port in passive mode
|
#define FTP_DATA_PORT_PASV 50009 // Data port in passive mode
|
||||||
|
|
||||||
#define FTP_TIME_OUT 5 // Disconnect client after 5 minutes of inactivity
|
#define FTP_TIME_OUT 5 // Disconnect client after 5 minutes of inactivity
|
||||||
#define FTP_CMD_SIZE 255 + 8 // max size of a command
|
#define FTP_CMD_SIZE 255 + 8 // max size of a command
|
||||||
#define FTP_CWD_SIZE 255 + 8 // max size of a directory name
|
#define FTP_CWD_SIZE 255 + 8 // max size of a directory name
|
||||||
#define FTP_FIL_SIZE 255 // max size of a file name
|
#define FTP_FIL_SIZE 255 // max size of a file name
|
||||||
|
|
||||||
//#define FTP_BUF_SIZE 512 //512 // size of file buffer for read/write
|
//#define FTP_BUF_SIZE 512 //512 // size of file buffer for read/write
|
||||||
//#define FTP_BUF_SIZE 2*1460 //512 // size of file buffer for read/write
|
//#define FTP_BUF_SIZE 2*1460 //512 // size of file buffer for read/write
|
||||||
//#define FTP_BUF_SIZE 4096 //512 // 700 KByte/s download in AP mode, direct connection.
|
//#define FTP_BUF_SIZE 4096 //512 // 700 KByte/s download in AP mode, direct connection.
|
||||||
//#define FTP_BUF_SIZE 8192 reduce in v82
|
//#define FTP_BUF_SIZE 8192 reduce in v82
|
||||||
//#define FTP_BUF_SIZE 2048
|
//#define FTP_BUF_SIZE 2048
|
||||||
|
|
||||||
#define FTP_BUF_SIZE 4096
|
#define FTP_BUF_SIZE 4096
|
||||||
|
|
||||||
|
|
||||||
class FtpServer
|
class FtpServer
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
void begin(String uname, String pword);
|
void begin(String uname, String pword);
|
||||||
void handleFTP();
|
void handleFTP();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
bool haveParameter();
|
bool haveParameter();
|
||||||
bool makeExistsPath( char * path, char * param = NULL );
|
bool makeExistsPath( char * path, char * param = NULL );
|
||||||
void iniVariables();
|
void iniVariables();
|
||||||
void clientConnected();
|
void clientConnected();
|
||||||
void disconnectClient();
|
void disconnectClient();
|
||||||
boolean userIdentity();
|
boolean userIdentity();
|
||||||
boolean userPassword();
|
boolean userPassword();
|
||||||
boolean processCommand();
|
boolean processCommand();
|
||||||
boolean dataConnect();
|
boolean dataConnect();
|
||||||
boolean doRetrieve();
|
boolean doRetrieve();
|
||||||
boolean doStore();
|
boolean doStore();
|
||||||
void closeTransfer();
|
void closeTransfer();
|
||||||
void abortTransfer();
|
void abortTransfer();
|
||||||
boolean makePath( char * fullname );
|
boolean makePath( char * fullname );
|
||||||
boolean makePath( char * fullName, char * param );
|
boolean makePath( char * fullName, char * param );
|
||||||
uint8_t getDateTime( uint16_t * pyear, uint8_t * pmonth, uint8_t * pday,
|
uint8_t getDateTime( uint16_t * pyear, uint8_t * pmonth, uint8_t * pday,
|
||||||
uint8_t * phour, uint8_t * pminute, uint8_t * second );
|
uint8_t * phour, uint8_t * pminute, uint8_t * second );
|
||||||
char * makeDateTimeStr( char * tstr, uint16_t date, uint16_t time );
|
char * makeDateTimeStr( char * tstr, uint16_t date, uint16_t time );
|
||||||
int8_t readChar();
|
int8_t readChar();
|
||||||
|
|
||||||
IPAddress dataIp; // IP address of client for data
|
IPAddress dataIp; // IP address of client for data
|
||||||
WiFiClient client;
|
WiFiClient client;
|
||||||
WiFiClient data;
|
WiFiClient data;
|
||||||
|
|
||||||
File file;
|
File file;
|
||||||
|
|
||||||
boolean dataPassiveConn;
|
boolean dataPassiveConn;
|
||||||
uint16_t dataPort;
|
uint16_t dataPort;
|
||||||
char buf[ FTP_BUF_SIZE ]; // data buffer for transfers
|
char buf[ FTP_BUF_SIZE ]; // data buffer for transfers
|
||||||
char cmdLine[ FTP_CMD_SIZE ]; // where to store incoming char from client
|
char cmdLine[ FTP_CMD_SIZE ]; // where to store incoming char from client
|
||||||
char cwdName[ FTP_CWD_SIZE ]; // name of current directory
|
char cwdName[ FTP_CWD_SIZE ]; // name of current directory
|
||||||
char command[ 5 ]; // command sent by client
|
char command[ 5 ]; // command sent by client
|
||||||
boolean rnfrCmd; // previous command was RNFR
|
boolean rnfrCmd; // previous command was RNFR
|
||||||
char * parameters; // point to begin of parameters sent by client
|
char * parameters; // point to begin of parameters sent by client
|
||||||
uint16_t iCL; // pointer to cmdLine next incoming char
|
uint16_t iCL; // pointer to cmdLine next incoming char
|
||||||
int8_t cmdStatus, // status of ftp command connexion
|
int8_t cmdStatus, // status of ftp command connexion
|
||||||
transferStatus; // status of ftp data transfer
|
transferStatus; // status of ftp data transfer
|
||||||
uint32_t millisTimeOut, // disconnect after 5 min of inactivity
|
uint32_t millisTimeOut, // disconnect after 5 min of inactivity
|
||||||
millisDelay,
|
millisDelay,
|
||||||
millisEndConnection, //
|
millisEndConnection, //
|
||||||
millisBeginTrans, // store time of beginning of a transaction
|
millisBeginTrans, // store time of beginning of a transaction
|
||||||
bytesTransfered; //
|
bytesTransfered; //
|
||||||
String _FTP_USER;
|
String _FTP_USER;
|
||||||
String _FTP_PASS;
|
String _FTP_PASS;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // FTP_SERVERESP_H
|
#endif // FTP_SERVERESP_H
|
|
@ -1,125 +1,125 @@
|
||||||
/*
|
/*
|
||||||
Copyright (c) 2018 Brian Lough. All right reserved.
|
Copyright (c) 2018 Brian Lough. All right reserved.
|
||||||
|
|
||||||
UniversalTelegramBot - Library to create your own Telegram Bot using
|
UniversalTelegramBot - Library to create your own Telegram Bot using
|
||||||
ESP8266 or ESP32 on Arduino IDE.
|
ESP8266 or ESP32 on Arduino IDE.
|
||||||
|
|
||||||
This library is free software; you can redistribute it and/or
|
This library is free software; you can redistribute it and/or
|
||||||
modify it under the terms of the GNU Lesser General Public
|
modify it under the terms of the GNU Lesser General Public
|
||||||
License as published by the Free Software Foundation; either
|
License as published by the Free Software Foundation; either
|
||||||
version 2.1 of the License, or (at your option) any later version.
|
version 2.1 of the License, or (at your option) any later version.
|
||||||
|
|
||||||
This library is distributed in the hope that it will be useful,
|
This library is distributed in the hope that it will be useful,
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
Lesser General Public License for more details.
|
Lesser General Public License for more details.
|
||||||
|
|
||||||
You should have received a copy of the GNU Lesser General Public
|
You should have received a copy of the GNU Lesser General Public
|
||||||
License along with this library; if not, write to the Free Software
|
License along with this library; if not, write to the Free Software
|
||||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef UniversalTelegramBot_h
|
#ifndef UniversalTelegramBot_h
|
||||||
#define UniversalTelegramBot_h
|
#define UniversalTelegramBot_h
|
||||||
|
|
||||||
#define ARDUINOJSON_DECODE_UNICODE 1
|
#define ARDUINOJSON_DECODE_UNICODE 1
|
||||||
#define ARDUINOJSON_USE_LONG_LONG 1
|
#define ARDUINOJSON_USE_LONG_LONG 1
|
||||||
#include <Arduino.h>
|
#include <Arduino.h>
|
||||||
#include <ArduinoJson.h>
|
#include <ArduinoJson.h>
|
||||||
#include <Client.h>
|
#include <Client.h>
|
||||||
#include <core_version.h>
|
#include <core_version.h>
|
||||||
|
|
||||||
#define HOST "api.telegram.org"
|
#define HOST "api.telegram.org"
|
||||||
#define SSL_PORT 443
|
#define SSL_PORT 443
|
||||||
#define HANDLE_MESSAGES 1
|
#define HANDLE_MESSAGES 1
|
||||||
|
|
||||||
//unmark following line to enable debug mode
|
//unmark following line to enable debug mode
|
||||||
//#define _debug
|
//#define _debug
|
||||||
|
|
||||||
typedef bool (*MoreDataAvailable)();
|
typedef bool (*MoreDataAvailable)();
|
||||||
typedef byte (*GetNextByte)();
|
typedef byte (*GetNextByte)();
|
||||||
typedef byte* (*GetNextBuffer)();
|
typedef byte* (*GetNextBuffer)();
|
||||||
typedef int (GetNextBufferLen)();
|
typedef int (GetNextBufferLen)();
|
||||||
|
|
||||||
struct telegramMessage {
|
struct telegramMessage {
|
||||||
String text;
|
String text;
|
||||||
String chat_id;
|
String chat_id;
|
||||||
String chat_title;
|
String chat_title;
|
||||||
String from_id;
|
String from_id;
|
||||||
String from_name;
|
String from_name;
|
||||||
String date;
|
String date;
|
||||||
String type;
|
String type;
|
||||||
float longitude;
|
float longitude;
|
||||||
float latitude;
|
float latitude;
|
||||||
int update_id;
|
int update_id;
|
||||||
};
|
};
|
||||||
|
|
||||||
class UniversalTelegramBot {
|
class UniversalTelegramBot {
|
||||||
public:
|
public:
|
||||||
UniversalTelegramBot(String token, Client &client);
|
UniversalTelegramBot(String token, Client &client);
|
||||||
String sendGetToTelegram(String command);
|
String sendGetToTelegram(String command);
|
||||||
String sendPostToTelegram(String command, JsonObject payload);
|
String sendPostToTelegram(String command, JsonObject payload);
|
||||||
String
|
String
|
||||||
sendMultipartFormDataToTelegram(String command, String binaryProperyName,
|
sendMultipartFormDataToTelegram(String command, String binaryProperyName,
|
||||||
String fileName, String contentType,
|
String fileName, String contentType,
|
||||||
String chat_id, int fileSize,
|
String chat_id, int fileSize,
|
||||||
MoreDataAvailable moreDataAvailableCallback,
|
MoreDataAvailable moreDataAvailableCallback,
|
||||||
GetNextByte getNextByteCallback,
|
GetNextByte getNextByteCallback,
|
||||||
GetNextBuffer getNextBufferCallback,
|
GetNextBuffer getNextBufferCallback,
|
||||||
GetNextBufferLen getNextBufferLenCallback);
|
GetNextBufferLen getNextBufferLenCallback);
|
||||||
|
|
||||||
String
|
String
|
||||||
sendMultipartFormDataToTelegramWithCaption(String command, String binaryProperyName,
|
sendMultipartFormDataToTelegramWithCaption(String command, String binaryProperyName,
|
||||||
String fileName, String contentType,
|
String fileName, String contentType,
|
||||||
String caption, String chat_id, int fileSize,
|
String caption, String chat_id, int fileSize,
|
||||||
MoreDataAvailable moreDataAvailableCallback,
|
MoreDataAvailable moreDataAvailableCallback,
|
||||||
GetNextByte getNextByteCallback,
|
GetNextByte getNextByteCallback,
|
||||||
GetNextBuffer getNextBufferCallback,
|
GetNextBuffer getNextBufferCallback,
|
||||||
GetNextBufferLen getNextBufferLenCallback);
|
GetNextBufferLen getNextBufferLenCallback);
|
||||||
|
|
||||||
|
|
||||||
bool getMe();
|
bool getMe();
|
||||||
|
|
||||||
bool sendSimpleMessage(String chat_id, String text, String parse_mode);
|
bool sendSimpleMessage(String chat_id, String text, String parse_mode);
|
||||||
bool sendMessage(String chat_id, String text, String parse_mode = "");
|
bool sendMessage(String chat_id, String text, String parse_mode = "");
|
||||||
bool sendMessageWithReplyKeyboard(String chat_id, String text,
|
bool sendMessageWithReplyKeyboard(String chat_id, String text,
|
||||||
String parse_mode, String keyboard,
|
String parse_mode, String keyboard,
|
||||||
bool resize = false, bool oneTime = false,
|
bool resize = false, bool oneTime = false,
|
||||||
bool selective = false);
|
bool selective = false);
|
||||||
bool sendMessageWithInlineKeyboard(String chat_id, String text,
|
bool sendMessageWithInlineKeyboard(String chat_id, String text,
|
||||||
String parse_mode, String keyboard);
|
String parse_mode, String keyboard);
|
||||||
|
|
||||||
bool sendChatAction(String chat_id, String text);
|
bool sendChatAction(String chat_id, String text);
|
||||||
|
|
||||||
bool sendPostMessage(JsonObject payload);
|
bool sendPostMessage(JsonObject payload);
|
||||||
String sendPostPhoto(JsonObject payload);
|
String sendPostPhoto(JsonObject payload);
|
||||||
String sendPhotoByBinary(String chat_id, String contentType, int fileSize,
|
String sendPhotoByBinary(String chat_id, String contentType, int fileSize,
|
||||||
MoreDataAvailable moreDataAvailableCallback,
|
MoreDataAvailable moreDataAvailableCallback,
|
||||||
GetNextByte getNextByteCallback,
|
GetNextByte getNextByteCallback,
|
||||||
GetNextBuffer getNextBufferCallback,
|
GetNextBuffer getNextBufferCallback,
|
||||||
GetNextBufferLen getNextBufferLenCallback);
|
GetNextBufferLen getNextBufferLenCallback);
|
||||||
String sendPhoto(String chat_id, String photo, String caption = "",
|
String sendPhoto(String chat_id, String photo, String caption = "",
|
||||||
bool disable_notification = false,
|
bool disable_notification = false,
|
||||||
int reply_to_message_id = 0, String keyboard = "");
|
int reply_to_message_id = 0, String keyboard = "");
|
||||||
|
|
||||||
int getUpdates(long offset);
|
int getUpdates(long offset);
|
||||||
bool checkForOkResponse(String response);
|
bool checkForOkResponse(String response);
|
||||||
telegramMessage messages[HANDLE_MESSAGES];
|
telegramMessage messages[HANDLE_MESSAGES];
|
||||||
long last_message_received;
|
long last_message_received;
|
||||||
String name;
|
String name;
|
||||||
String userName;
|
String userName;
|
||||||
int longPoll = 0;
|
int longPoll = 0;
|
||||||
int waitForResponse = 5000; //jz = 1500;
|
int waitForResponse = 5000; //jz = 1500;
|
||||||
int jzdelay = 60; // delay between multipart blocks
|
int jzdelay = 60; // delay between multipart blocks
|
||||||
int jzblocksize = 2 * 1024; // multipart block size
|
int jzblocksize = 2 * 1024; // multipart block size
|
||||||
|
|
||||||
private:
|
private:
|
||||||
// JsonObject * parseUpdates(String response);
|
// JsonObject * parseUpdates(String response);
|
||||||
String _token;
|
String _token;
|
||||||
Client *client;
|
Client *client;
|
||||||
void closeClient();
|
void closeClient();
|
||||||
const int maxMessageLength = 1500; //was 1500
|
const int maxMessageLength = 1500; //was 1500
|
||||||
bool processResult(JsonObject result, int messageIndex);
|
bool processResult(JsonObject result, int messageIndex);
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
|
@ -1,64 +1,64 @@
|
||||||
// ... pending inclusion in the new esp32 distribution - jz
|
// ... pending inclusion in the new esp32 distribution - jz
|
||||||
|
|
||||||
// You may have to edit rtc_cntl.h ... according to this link -- doesn't seem to be included in esp32 libraries as of Jun 2020 ... or I'll just put it here
|
// You may have to edit rtc_cntl.h ... according to this link -- doesn't seem to be included in esp32 libraries as of Jun 2020 ... or I'll just put it here
|
||||||
// https://github.com/espressif/esp-idf/commit/17bd6e8faba15812780d21e6e3db08fb26dd7033#diff-5e22dcf9fc6087d1585c7b2e434c0932
|
// https://github.com/espressif/esp-idf/commit/17bd6e8faba15812780d21e6e3db08fb26dd7033#diff-5e22dcf9fc6087d1585c7b2e434c0932
|
||||||
// https://github.com/espressif/esp-idf/pull/4532
|
// https://github.com/espressif/esp-idf/pull/4532
|
||||||
// C:\Users\James\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.4\tools\sdk\include\driver\driver -- approximate path
|
// C:\Users\James\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.4\tools\sdk\include\driver\driver -- approximate path
|
||||||
|
|
||||||
|
|
||||||
// Copyright 2016-2017 Espressif Systems (Shanghai) PTE LTD
|
// Copyright 2016-2017 Espressif Systems (Shanghai) PTE LTD
|
||||||
//
|
//
|
||||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
// you may not use this file except in compliance with the License.
|
// you may not use this file except in compliance with the License.
|
||||||
// You may obtain a copy of the License at
|
// You may obtain a copy of the License at
|
||||||
//
|
//
|
||||||
// http://www.apache.org/licenses/LICENSE-2.0
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
//
|
//
|
||||||
// Unless required by applicable law or agreed to in writing, software
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
// See the License for the specific language governing permissions and
|
// See the License for the specific language governing permissions and
|
||||||
// limitations under the License.
|
// limitations under the License.
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include "esp_err.h"
|
#include "esp_err.h"
|
||||||
#include "esp_intr_alloc.h"
|
#include "esp_intr_alloc.h"
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Register a handler for specific RTC_CNTL interrupts
|
* @brief Register a handler for specific RTC_CNTL interrupts
|
||||||
*
|
*
|
||||||
* Multiple handlers can be registered using this function. Whenever an
|
* Multiple handlers can be registered using this function. Whenever an
|
||||||
* RTC interrupt happens, all handlers with matching rtc_intr_mask values
|
* RTC interrupt happens, all handlers with matching rtc_intr_mask values
|
||||||
* will be called.
|
* will be called.
|
||||||
*
|
*
|
||||||
* @param handler handler function to call
|
* @param handler handler function to call
|
||||||
* @param handler_arg argument to be passed to the handler
|
* @param handler_arg argument to be passed to the handler
|
||||||
* @param rtc_intr_mask combination of RTC_CNTL_*_INT_ENA bits indicating the
|
* @param rtc_intr_mask combination of RTC_CNTL_*_INT_ENA bits indicating the
|
||||||
* sources to call the handler for
|
* sources to call the handler for
|
||||||
* @return
|
* @return
|
||||||
* - ESP_OK on success
|
* - ESP_OK on success
|
||||||
* - ESP_ERR_NO_MEM not enough memory to allocate handler structure
|
* - ESP_ERR_NO_MEM not enough memory to allocate handler structure
|
||||||
* - other errors returned by esp_intr_alloc
|
* - other errors returned by esp_intr_alloc
|
||||||
*/
|
*/
|
||||||
esp_err_t rtc_isr_register(intr_handler_t handler, void* handler_arg,
|
esp_err_t rtc_isr_register(intr_handler_t handler, void* handler_arg,
|
||||||
uint32_t rtc_intr_mask);
|
uint32_t rtc_intr_mask);
|
||||||
/**
|
/**
|
||||||
* @brief Deregister the handler previously registered using rtc_isr_register
|
* @brief Deregister the handler previously registered using rtc_isr_register
|
||||||
* @param handler handler function to call (as passed to rtc_isr_register)
|
* @param handler handler function to call (as passed to rtc_isr_register)
|
||||||
* @param handler_arg argument of the handler (as passed to rtc_isr_register)
|
* @param handler_arg argument of the handler (as passed to rtc_isr_register)
|
||||||
* @return
|
* @return
|
||||||
* - ESP_OK on success
|
* - ESP_OK on success
|
||||||
* - ESP_ERR_INVALID_STATE if a handler matching both handler and
|
* - ESP_ERR_INVALID_STATE if a handler matching both handler and
|
||||||
* handler_arg isn't registered
|
* handler_arg isn't registered
|
||||||
*/
|
*/
|
||||||
esp_err_t rtc_isr_deregister(intr_handler_t handler, void* handler_arg);
|
esp_err_t rtc_isr_deregister(intr_handler_t handler, void* handler_arg);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
|
@ -1,57 +1,57 @@
|
||||||
static const char devname[] = "desklens"; // name of your camera for mDNS, Router, and filenames
|
static const char devname[] = "desklens"; // name of your camera for mDNS, Router, and filenames
|
||||||
|
|
||||||
// https://sites.google.com/a/usapiens.com/opnode/time-zones -- find your timezone here
|
// https://sites.google.com/a/usapiens.com/opnode/time-zones -- find your timezone here
|
||||||
#define TIMEZONE "GMT0BST,M3.5.0/01,M10.5.0/02" // your timezone - this is GMT
|
#define TIMEZONE "GMT0BST,M3.5.0/01,M10.5.0/02" // your timezone - this is GMT
|
||||||
|
|
||||||
// 1 for blink red led with every sd card write, at your frame rate
|
// 1 for blink red led with every sd card write, at your frame rate
|
||||||
// 0 for blink only for skipping frames and SOS if camera or sd is broken
|
// 0 for blink only for skipping frames and SOS if camera or sd is broken
|
||||||
#define BlinkWithWrite 1
|
#define BlinkWithWrite 1
|
||||||
|
|
||||||
// EDIT ssid and password
|
// EDIT ssid and password
|
||||||
const char* ssid = "jzjzjz";
|
const char* ssid = "jzjzjz";
|
||||||
const char* password = "jzjzjz";
|
const char* password = "jzjzjz";
|
||||||
|
|
||||||
// reboot startup parameters here
|
// reboot startup parameters here
|
||||||
|
|
||||||
int Internet_Enabled = 1; // set to 0 to shut off all internet activities - wifi, time, http, ftp, telegram
|
int Internet_Enabled = 1; // set to 0 to shut off all internet activities - wifi, time, http, ftp, telegram
|
||||||
int DeepSleepPir = 0; // set to 1 to deepsleep between pir videos
|
int DeepSleepPir = 0; // set to 1 to deepsleep between pir videos
|
||||||
int record_on_reboot = 1; // set to 1 to record, or 0 to NOT record on reboot
|
int record_on_reboot = 1; // set to 1 to record, or 0 to NOT record on reboot
|
||||||
int PIRpin = 13; // for active high pir or microwave etc
|
int PIRpin = 13; // for active high pir or microwave etc
|
||||||
int PIRenabled = 0; // 1 is PIR is enable on reboot, will only work if you are not recording
|
int PIRenabled = 0; // 1 is PIR is enable on reboot, will only work if you are not recording
|
||||||
|
|
||||||
int MagicNumber = 314; // change this if you are re-compiling and you dont want to use the ESPROM settings
|
int MagicNumber = 314; // change this if you are re-compiling and you dont want to use the ESPROM settings
|
||||||
int stream_interval = 333; // milliseconds between frames delivered during the live stream - 333 is 3 fps
|
int stream_interval = 333; // milliseconds between frames delivered during the live stream - 333 is 3 fps
|
||||||
|
|
||||||
// here are 2 sets of startup parameters -- more down in the stop and restart webpage
|
// here are 2 sets of startup parameters -- more down in the stop and restart webpage
|
||||||
|
|
||||||
// VGA 10 fps for 30 minutes, and repeat, play at real time
|
// VGA 10 fps for 30 minutes, and repeat, play at real time
|
||||||
|
|
||||||
int framesize = 6; // 10 UXGA, 7 SVGA, 6 VGA, 5 CIF
|
int framesize = 6; // 10 UXGA, 7 SVGA, 6 VGA, 5 CIF
|
||||||
int repeat_config = 100; // repaeat same movie this many times
|
int repeat_config = 100; // repaeat same movie this many times
|
||||||
int xspeed = 1; // playback speed - realtime is 1, or 300 means playpack 30 fps of frames at 10 second per frame ( 30 fps / 0.1 fps )
|
int xspeed = 1; // playback speed - realtime is 1, or 300 means playpack 30 fps of frames at 10 second per frame ( 30 fps / 0.1 fps )
|
||||||
int gray = 0; // not gray
|
int gray = 0; // not gray
|
||||||
int quality = 12; // quality on the 10..50 subscale - 10 is good, 20 is grainy and smaller files, 12 is better in bright sunshine due to clipping
|
int quality = 12; // quality on the 10..50 subscale - 10 is good, 20 is grainy and smaller files, 12 is better in bright sunshine due to clipping
|
||||||
int capture_interval = 100; // milli-seconds between frames
|
int capture_interval = 100; // milli-seconds between frames
|
||||||
volatile int total_frames_config = 18000; // how many frames - length of movie in ms is total_frames x capture_interval
|
volatile int total_frames_config = 18000; // how many frames - length of movie in ms is total_frames x capture_interval
|
||||||
|
|
||||||
|
|
||||||
// UXGA 1 frame every 10 seconds for 60 minutes, and repeat, play at 30 fps or 300 times speed
|
// UXGA 1 frame every 10 seconds for 60 minutes, and repeat, play at 30 fps or 300 times speed
|
||||||
/*
|
/*
|
||||||
int framesize = 10; // 10 UXGA, 7 SVGA, 6 VGA, 5 CIF
|
int framesize = 10; // 10 UXGA, 7 SVGA, 6 VGA, 5 CIF
|
||||||
int repeat_config = 300; // repaeat same movie this many times
|
int repeat_config = 300; // repaeat same movie this many times
|
||||||
int xspeed = 300; // playback speed - realtime is 1, or 300 means playpack 30 fps of frames at 10 second per frames ( 30 fps / 0.1 fps )
|
int xspeed = 300; // playback speed - realtime is 1, or 300 means playpack 30 fps of frames at 10 second per frames ( 30 fps / 0.1 fps )
|
||||||
int gray = 0; // not gray
|
int gray = 0; // not gray
|
||||||
int quality = 6; // quality on the 10..50 subscale - 10 is good, 20 is grainy and smaller files, 12 is better in bright sunshine due to clipping
|
int quality = 6; // quality on the 10..50 subscale - 10 is good, 20 is grainy and smaller files, 12 is better in bright sunshine due to clipping
|
||||||
int capture_interval = 10000; // milli-seconds between frames
|
int capture_interval = 10000; // milli-seconds between frames
|
||||||
volatile int total_frames_config = 360; // how many frames - length of movie is total_frames x capture_interval
|
volatile int total_frames_config = 360; // how many frames - length of movie is total_frames x capture_interval
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// enable the www.telegram.org BOT - it sends a text and and snapshot to you every time it starts a video
|
// enable the www.telegram.org BOT - it sends a text and and snapshot to you every time it starts a video
|
||||||
// https://github.com/witnessmenow/Universal-Arduino-Telegram-Bot
|
// https://github.com/witnessmenow/Universal-Arduino-Telegram-Bot
|
||||||
// I'm using the branch v1.2 from June 2020 - new master introduced late june, but not working for picture and captions, so my v1.2 mods included here
|
// I'm using the branch v1.2 from June 2020 - new master introduced late june, but not working for picture and captions, so my v1.2 mods included here
|
||||||
// You need to create a bot, and get its number BOTtoken, and then get your telegram number -- all free at telegram.org
|
// You need to create a bot, and get its number BOTtoken, and then get your telegram number -- all free at telegram.org
|
||||||
// detailed instructions here https://randomnerdtutorials.com/telegram-control-esp32-esp8266-nodemcu-outputs/
|
// detailed instructions here https://randomnerdtutorials.com/telegram-control-esp32-esp8266-nodemcu-outputs/
|
||||||
|
|
||||||
RTC_DATA_ATTR int EnableBOT = 0; // change to 1 for enable - must fill in your numbers below
|
RTC_DATA_ATTR int EnableBOT = 0; // change to 1 for enable - must fill in your numbers below
|
||||||
#define BOTtoken "9876543210:qwertyuiopasdfghjklzxcvbnmqwertyuio" // get your own bot and id at telegram.org
|
#define BOTtoken "9876543210:qwertyuiopasdfghjklzxcvbnmqwertyuio" // get your own bot and id at telegram.org
|
||||||
#define BOTme "1234567890"
|
#define BOTme "1234567890"
|
Przed Szerokość: | Wysokość: | Rozmiar: 102 KiB Po Szerokość: | Wysokość: | Rozmiar: 102 KiB |