Jan 12, 2022 - move some old versions to old

master
jameszah 2022-01-12 22:53:45 -07:00
rodzic 1926993760
commit b7802ac3a7
41 zmienionych plików z 23304 dodań i 23304 usunięć

Wyświetl plik

@ -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

Wyświetl plik

@ -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

Wyświetl plik

@ -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

Wyświetl plik

@ -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

Wyświetl plik

@ -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

Wyświetl plik

@ -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

Wyświetl plik

@ -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

Wyświetl plik

Przed

Szerokość:  |  Wysokość:  |  Rozmiar: 77 KiB

Po

Szerokość:  |  Wysokość:  |  Rozmiar: 77 KiB

Wyświetl plik

Przed

Szerokość:  |  Wysokość:  |  Rozmiar: 100 KiB

Po

Szerokość:  |  Wysokość:  |  Rozmiar: 100 KiB

Wyświetl plik

Przed

Szerokość:  |  Wysokość:  |  Rozmiar: 81 KiB

Po

Szerokość:  |  Wysokość:  |  Rozmiar: 81 KiB

Wyświetl plik

Przed

Szerokość:  |  Wysokość:  |  Rozmiar: 114 KiB

Po

Szerokość:  |  Wysokość:  |  Rozmiar: 114 KiB

Wyświetl plik

@ -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

Wyświetl plik

@ -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

Wyświetl plik

@ -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

Wyświetl plik

@ -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"

Wyświetl plik

@ -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

Wyświetl plik

@ -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

Wyświetl plik

@ -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

Wyświetl plik

@ -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"

Wyświetl plik

Przed

Szerokość:  |  Wysokość:  |  Rozmiar: 102 KiB

Po

Szerokość:  |  Wysokość:  |  Rozmiar: 102 KiB