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
* based on FTP Serveur for Arduino Due and Ethernet shield (W5100) or WIZ820io (W5200)
* based on Jean-Michel Gallego's work
* modified to work with esp8266 SPIFFS by David Paiva (david@nailbuster.com)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
// 2017: modified by @robo8080
// 2019: modified by @fa1ke5
/*******************************************************************************
** **
** DEFINITIONS FOR FTP SERVER **
** **
*******************************************************************************/
// Uncomment to print debugging info to console attached to ESP8266
//#define FTP_DEBUG
#ifndef FTP_SERVERESP_H
#define FTP_SERVERESP_H
//#include "Streaming.h"
#include "SD_MMC.h"
#include <FS.h>
#include <WiFiClient.h>
#define FTP_SERVER_VERSION "FTP-2016-01-14"
#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_TIME_OUT 5 // Disconnect client after 5 minutes of inactivity
#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_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 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.
class FtpServer
{
public:
void begin(String uname, String pword);
void handleFTP();
private:
bool haveParameter();
bool makeExistsPath( char * path, char * param = NULL );
void iniVariables();
void clientConnected();
void disconnectClient();
boolean userIdentity();
boolean userPassword();
boolean processCommand();
boolean dataConnect();
boolean doRetrieve();
boolean doStore();
void closeTransfer();
void abortTransfer();
boolean makePath( char * fullname );
boolean makePath( char * fullName, char * param );
uint8_t getDateTime( uint16_t * pyear, uint8_t * pmonth, uint8_t * pday,
uint8_t * phour, uint8_t * pminute, uint8_t * second );
char * makeDateTimeStr( char * tstr, uint16_t date, uint16_t time );
int8_t readChar();
IPAddress dataIp; // IP address of client for data
WiFiClient client;
WiFiClient data;
File file;
boolean dataPassiveConn;
uint16_t dataPort;
char buf[ FTP_BUF_SIZE ]; // data buffer for transfers
char cmdLine[ FTP_CMD_SIZE ]; // where to store incoming char from client
char cwdName[ FTP_CWD_SIZE ]; // name of current directory
char command[ 5 ]; // command sent by client
boolean rnfrCmd; // previous command was RNFR
char * parameters; // point to begin of parameters sent by client
uint16_t iCL; // pointer to cmdLine next incoming char
int8_t cmdStatus, // status of ftp command connexion
transferStatus; // status of ftp data transfer
uint32_t millisTimeOut, // disconnect after 5 min of inactivity
millisDelay,
millisEndConnection, //
millisBeginTrans, // store time of beginning of a transaction
bytesTransfered; //
String _FTP_USER;
String _FTP_PASS;
};
#endif // FTP_SERVERESP_H
/*
* FTP SERVER FOR ESP8266
* based on FTP Serveur for Arduino Due and Ethernet shield (W5100) or WIZ820io (W5200)
* based on Jean-Michel Gallego's work
* modified to work with esp8266 SPIFFS by David Paiva (david@nailbuster.com)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
// 2017: modified by @robo8080
// 2019: modified by @fa1ke5
/*******************************************************************************
** **
** DEFINITIONS FOR FTP SERVER **
** **
*******************************************************************************/
// Uncomment to print debugging info to console attached to ESP8266
//#define FTP_DEBUG
#ifndef FTP_SERVERESP_H
#define FTP_SERVERESP_H
//#include "Streaming.h"
#include "SD_MMC.h"
#include <FS.h>
#include <WiFiClient.h>
#define FTP_SERVER_VERSION "FTP-2016-01-14"
#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_TIME_OUT 5 // Disconnect client after 5 minutes of inactivity
#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_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 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.
class FtpServer
{
public:
void begin(String uname, String pword);
void handleFTP();
private:
bool haveParameter();
bool makeExistsPath( char * path, char * param = NULL );
void iniVariables();
void clientConnected();
void disconnectClient();
boolean userIdentity();
boolean userPassword();
boolean processCommand();
boolean dataConnect();
boolean doRetrieve();
boolean doStore();
void closeTransfer();
void abortTransfer();
boolean makePath( char * fullname );
boolean makePath( char * fullName, char * param );
uint8_t getDateTime( uint16_t * pyear, uint8_t * pmonth, uint8_t * pday,
uint8_t * phour, uint8_t * pminute, uint8_t * second );
char * makeDateTimeStr( char * tstr, uint16_t date, uint16_t time );
int8_t readChar();
IPAddress dataIp; // IP address of client for data
WiFiClient client;
WiFiClient data;
File file;
boolean dataPassiveConn;
uint16_t dataPort;
char buf[ FTP_BUF_SIZE ]; // data buffer for transfers
char cmdLine[ FTP_CMD_SIZE ]; // where to store incoming char from client
char cwdName[ FTP_CWD_SIZE ]; // name of current directory
char command[ 5 ]; // command sent by client
boolean rnfrCmd; // previous command was RNFR
char * parameters; // point to begin of parameters sent by client
uint16_t iCL; // pointer to cmdLine next incoming char
int8_t cmdStatus, // status of ftp command connexion
transferStatus; // status of ftp data transfer
uint32_t millisTimeOut, // disconnect after 5 min of inactivity
millisDelay,
millisEndConnection, //
millisBeginTrans, // store time of beginning of a transaction
bytesTransfered; //
String _FTP_USER;
String _FTP_PASS;
};
#endif // FTP_SERVERESP_H

Wyświetl plik

@ -1,112 +1,112 @@
/*
* FTP SERVER FOR ESP8266
* based on FTP Serveur for Arduino Due and Ethernet shield (W5100) or WIZ820io (W5200)
* based on Jean-Michel Gallego's work
* modified to work with esp8266 SPIFFS by David Paiva (david@nailbuster.com)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
// 2017: modified by @robo8080
// 2019: modified by @fa1ke5
/*******************************************************************************
** **
** DEFINITIONS FOR FTP SERVER **
** **
*******************************************************************************/
// Uncomment to print debugging info to console attached to ESP8266
#define FTP_DEBUG
#ifndef FTP_SERVERESP_H
#define FTP_SERVERESP_H
//#include "Streaming.h"
#include "SD_MMC.h"
#include <FS.h>
#include <WiFiClient.h>
#define FTP_SERVER_VERSION "FTP-2016-01-14"
#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_TIME_OUT 5 // Disconnect client after 5 minutes of inactivity
#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_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 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.
class FtpServer
{
public:
void begin(String uname, String pword);
void handleFTP();
private:
bool haveParameter();
bool makeExistsPath( char * path, char * param = NULL );
void iniVariables();
void clientConnected();
void disconnectClient();
boolean userIdentity();
boolean userPassword();
boolean processCommand();
boolean dataConnect();
boolean doRetrieve();
boolean doStore();
void closeTransfer();
void abortTransfer();
boolean makePath( char * fullname );
boolean makePath( char * fullName, char * param );
uint8_t getDateTime( uint16_t * pyear, uint8_t * pmonth, uint8_t * pday,
uint8_t * phour, uint8_t * pminute, uint8_t * second );
char * makeDateTimeStr( char * tstr, uint16_t date, uint16_t time );
int8_t readChar();
IPAddress dataIp; // IP address of client for data
WiFiClient client;
WiFiClient data;
File file;
boolean dataPassiveConn;
uint16_t dataPort;
char buf[ FTP_BUF_SIZE ]; // data buffer for transfers
char cmdLine[ FTP_CMD_SIZE ]; // where to store incoming char from client
char cwdName[ FTP_CWD_SIZE ]; // name of current directory
char command[ 5 ]; // command sent by client
boolean rnfrCmd; // previous command was RNFR
char * parameters; // point to begin of parameters sent by client
uint16_t iCL; // pointer to cmdLine next incoming char
int8_t cmdStatus, // status of ftp command connexion
transferStatus; // status of ftp data transfer
uint32_t millisTimeOut, // disconnect after 5 min of inactivity
millisDelay,
millisEndConnection, //
millisBeginTrans, // store time of beginning of a transaction
bytesTransfered; //
String _FTP_USER;
String _FTP_PASS;
};
#endif // FTP_SERVERESP_H
/*
* FTP SERVER FOR ESP8266
* based on FTP Serveur for Arduino Due and Ethernet shield (W5100) or WIZ820io (W5200)
* based on Jean-Michel Gallego's work
* modified to work with esp8266 SPIFFS by David Paiva (david@nailbuster.com)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
// 2017: modified by @robo8080
// 2019: modified by @fa1ke5
/*******************************************************************************
** **
** DEFINITIONS FOR FTP SERVER **
** **
*******************************************************************************/
// Uncomment to print debugging info to console attached to ESP8266
#define FTP_DEBUG
#ifndef FTP_SERVERESP_H
#define FTP_SERVERESP_H
//#include "Streaming.h"
#include "SD_MMC.h"
#include <FS.h>
#include <WiFiClient.h>
#define FTP_SERVER_VERSION "FTP-2016-01-14"
#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_TIME_OUT 5 // Disconnect client after 5 minutes of inactivity
#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_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 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.
class FtpServer
{
public:
void begin(String uname, String pword);
void handleFTP();
private:
bool haveParameter();
bool makeExistsPath( char * path, char * param = NULL );
void iniVariables();
void clientConnected();
void disconnectClient();
boolean userIdentity();
boolean userPassword();
boolean processCommand();
boolean dataConnect();
boolean doRetrieve();
boolean doStore();
void closeTransfer();
void abortTransfer();
boolean makePath( char * fullname );
boolean makePath( char * fullName, char * param );
uint8_t getDateTime( uint16_t * pyear, uint8_t * pmonth, uint8_t * pday,
uint8_t * phour, uint8_t * pminute, uint8_t * second );
char * makeDateTimeStr( char * tstr, uint16_t date, uint16_t time );
int8_t readChar();
IPAddress dataIp; // IP address of client for data
WiFiClient client;
WiFiClient data;
File file;
boolean dataPassiveConn;
uint16_t dataPort;
char buf[ FTP_BUF_SIZE ]; // data buffer for transfers
char cmdLine[ FTP_CMD_SIZE ]; // where to store incoming char from client
char cwdName[ FTP_CWD_SIZE ]; // name of current directory
char command[ 5 ]; // command sent by client
boolean rnfrCmd; // previous command was RNFR
char * parameters; // point to begin of parameters sent by client
uint16_t iCL; // pointer to cmdLine next incoming char
int8_t cmdStatus, // status of ftp command connexion
transferStatus; // status of ftp data transfer
uint32_t millisTimeOut, // disconnect after 5 min of inactivity
millisDelay,
millisEndConnection, //
millisBeginTrans, // store time of beginning of a transaction
bytesTransfered; //
String _FTP_USER;
String _FTP_PASS;
};
#endif // FTP_SERVERESP_H

Wyświetl plik

@ -1,112 +1,112 @@
/*
* FTP SERVER FOR ESP8266
* based on FTP Serveur for Arduino Due and Ethernet shield (W5100) or WIZ820io (W5200)
* based on Jean-Michel Gallego's work
* modified to work with esp8266 SPIFFS by David Paiva (david@nailbuster.com)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
// 2017: modified by @robo8080
// 2019: modified by @fa1ke5
/*******************************************************************************
** **
** DEFINITIONS FOR FTP SERVER **
** **
*******************************************************************************/
// Uncomment to print debugging info to console attached to ESP8266
//#define FTP_DEBUG
#ifndef FTP_SERVERESP_H
#define FTP_SERVERESP_H
//#include "Streaming.h"
#include "SD_MMC.h"
#include <FS.h>
#include <WiFiClient.h>
#define FTP_SERVER_VERSION "FTP-2016-01-14"
#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_TIME_OUT 5 // Disconnect client after 5 minutes of inactivity
#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_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 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.
class FtpServer
{
public:
void begin(String uname, String pword);
void handleFTP();
private:
bool haveParameter();
bool makeExistsPath( char * path, char * param = NULL );
void iniVariables();
void clientConnected();
void disconnectClient();
boolean userIdentity();
boolean userPassword();
boolean processCommand();
boolean dataConnect();
boolean doRetrieve();
boolean doStore();
void closeTransfer();
void abortTransfer();
boolean makePath( char * fullname );
boolean makePath( char * fullName, char * param );
uint8_t getDateTime( uint16_t * pyear, uint8_t * pmonth, uint8_t * pday,
uint8_t * phour, uint8_t * pminute, uint8_t * second );
char * makeDateTimeStr( char * tstr, uint16_t date, uint16_t time );
int8_t readChar();
IPAddress dataIp; // IP address of client for data
WiFiClient client;
WiFiClient data;
File file;
boolean dataPassiveConn;
uint16_t dataPort;
char buf[ FTP_BUF_SIZE ]; // data buffer for transfers
char cmdLine[ FTP_CMD_SIZE ]; // where to store incoming char from client
char cwdName[ FTP_CWD_SIZE ]; // name of current directory
char command[ 5 ]; // command sent by client
boolean rnfrCmd; // previous command was RNFR
char * parameters; // point to begin of parameters sent by client
uint16_t iCL; // pointer to cmdLine next incoming char
int8_t cmdStatus, // status of ftp command connexion
transferStatus; // status of ftp data transfer
uint32_t millisTimeOut, // disconnect after 5 min of inactivity
millisDelay,
millisEndConnection, //
millisBeginTrans, // store time of beginning of a transaction
bytesTransfered; //
String _FTP_USER;
String _FTP_PASS;
};
#endif // FTP_SERVERESP_H
/*
* FTP SERVER FOR ESP8266
* based on FTP Serveur for Arduino Due and Ethernet shield (W5100) or WIZ820io (W5200)
* based on Jean-Michel Gallego's work
* modified to work with esp8266 SPIFFS by David Paiva (david@nailbuster.com)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
// 2017: modified by @robo8080
// 2019: modified by @fa1ke5
/*******************************************************************************
** **
** DEFINITIONS FOR FTP SERVER **
** **
*******************************************************************************/
// Uncomment to print debugging info to console attached to ESP8266
//#define FTP_DEBUG
#ifndef FTP_SERVERESP_H
#define FTP_SERVERESP_H
//#include "Streaming.h"
#include "SD_MMC.h"
#include <FS.h>
#include <WiFiClient.h>
#define FTP_SERVER_VERSION "FTP-2016-01-14"
#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_TIME_OUT 5 // Disconnect client after 5 minutes of inactivity
#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_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 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.
class FtpServer
{
public:
void begin(String uname, String pword);
void handleFTP();
private:
bool haveParameter();
bool makeExistsPath( char * path, char * param = NULL );
void iniVariables();
void clientConnected();
void disconnectClient();
boolean userIdentity();
boolean userPassword();
boolean processCommand();
boolean dataConnect();
boolean doRetrieve();
boolean doStore();
void closeTransfer();
void abortTransfer();
boolean makePath( char * fullname );
boolean makePath( char * fullName, char * param );
uint8_t getDateTime( uint16_t * pyear, uint8_t * pmonth, uint8_t * pday,
uint8_t * phour, uint8_t * pminute, uint8_t * second );
char * makeDateTimeStr( char * tstr, uint16_t date, uint16_t time );
int8_t readChar();
IPAddress dataIp; // IP address of client for data
WiFiClient client;
WiFiClient data;
File file;
boolean dataPassiveConn;
uint16_t dataPort;
char buf[ FTP_BUF_SIZE ]; // data buffer for transfers
char cmdLine[ FTP_CMD_SIZE ]; // where to store incoming char from client
char cwdName[ FTP_CWD_SIZE ]; // name of current directory
char command[ 5 ]; // command sent by client
boolean rnfrCmd; // previous command was RNFR
char * parameters; // point to begin of parameters sent by client
uint16_t iCL; // pointer to cmdLine next incoming char
int8_t cmdStatus, // status of ftp command connexion
transferStatus; // status of ftp data transfer
uint32_t millisTimeOut, // disconnect after 5 min of inactivity
millisDelay,
millisEndConnection, //
millisBeginTrans, // store time of beginning of a transaction
bytesTransfered; //
String _FTP_USER;
String _FTP_PASS;
};
#endif // FTP_SERVERESP_H

Wyświetl plik

@ -1,116 +1,116 @@
/*
* FTP SERVER FOR ESP8266
* based on FTP Serveur for Arduino Due and Ethernet shield (W5100) or WIZ820io (W5200)
* based on Jean-Michel Gallego's work
* modified to work with esp8266 SPIFFS by David Paiva (david@nailbuster.com)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
// 2017: modified by @robo8080
// 2019: modified by @fa1ke5
/*******************************************************************************
** **
** DEFINITIONS FOR FTP SERVER **
** **
*******************************************************************************/
// Uncomment to print debugging info to console attached to ESP8266
//#define FTP_DEBUG
#ifndef FTP_SERVERESP_H
#define FTP_SERVERESP_H
//#include "Streaming.h"
#include "SD_MMC.h"
#include <FS.h>
#include <WiFiClient.h>
#define FTP_SERVER_VERSION "FTP-2016-01-14"
#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_TIME_OUT 5 // Disconnect client after 5 minutes of inactivity
#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_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 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 8192 reduce in v82
//#define FTP_BUF_SIZE 2048
#define FTP_BUF_SIZE 4096
class FtpServer
{
public:
void begin(String uname, String pword);
void handleFTP();
private:
bool haveParameter();
bool makeExistsPath( char * path, char * param = NULL );
void iniVariables();
void clientConnected();
void disconnectClient();
boolean userIdentity();
boolean userPassword();
boolean processCommand();
boolean dataConnect();
boolean doRetrieve();
boolean doStore();
void closeTransfer();
void abortTransfer();
boolean makePath( char * fullname );
boolean makePath( char * fullName, char * param );
uint8_t getDateTime( uint16_t * pyear, uint8_t * pmonth, uint8_t * pday,
uint8_t * phour, uint8_t * pminute, uint8_t * second );
char * makeDateTimeStr( char * tstr, uint16_t date, uint16_t time );
int8_t readChar();
IPAddress dataIp; // IP address of client for data
WiFiClient client;
WiFiClient data;
File file;
boolean dataPassiveConn;
uint16_t dataPort;
char buf[ FTP_BUF_SIZE ]; // data buffer for transfers
char cmdLine[ FTP_CMD_SIZE ]; // where to store incoming char from client
char cwdName[ FTP_CWD_SIZE ]; // name of current directory
char command[ 5 ]; // command sent by client
boolean rnfrCmd; // previous command was RNFR
char * parameters; // point to begin of parameters sent by client
uint16_t iCL; // pointer to cmdLine next incoming char
int8_t cmdStatus, // status of ftp command connexion
transferStatus; // status of ftp data transfer
uint32_t millisTimeOut, // disconnect after 5 min of inactivity
millisDelay,
millisEndConnection, //
millisBeginTrans, // store time of beginning of a transaction
bytesTransfered; //
String _FTP_USER;
String _FTP_PASS;
};
#endif // FTP_SERVERESP_H
/*
* FTP SERVER FOR ESP8266
* based on FTP Serveur for Arduino Due and Ethernet shield (W5100) or WIZ820io (W5200)
* based on Jean-Michel Gallego's work
* modified to work with esp8266 SPIFFS by David Paiva (david@nailbuster.com)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
// 2017: modified by @robo8080
// 2019: modified by @fa1ke5
/*******************************************************************************
** **
** DEFINITIONS FOR FTP SERVER **
** **
*******************************************************************************/
// Uncomment to print debugging info to console attached to ESP8266
//#define FTP_DEBUG
#ifndef FTP_SERVERESP_H
#define FTP_SERVERESP_H
//#include "Streaming.h"
#include "SD_MMC.h"
#include <FS.h>
#include <WiFiClient.h>
#define FTP_SERVER_VERSION "FTP-2016-01-14"
#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_TIME_OUT 5 // Disconnect client after 5 minutes of inactivity
#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_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 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 8192 reduce in v82
//#define FTP_BUF_SIZE 2048
#define FTP_BUF_SIZE 4096
class FtpServer
{
public:
void begin(String uname, String pword);
void handleFTP();
private:
bool haveParameter();
bool makeExistsPath( char * path, char * param = NULL );
void iniVariables();
void clientConnected();
void disconnectClient();
boolean userIdentity();
boolean userPassword();
boolean processCommand();
boolean dataConnect();
boolean doRetrieve();
boolean doStore();
void closeTransfer();
void abortTransfer();
boolean makePath( char * fullname );
boolean makePath( char * fullName, char * param );
uint8_t getDateTime( uint16_t * pyear, uint8_t * pmonth, uint8_t * pday,
uint8_t * phour, uint8_t * pminute, uint8_t * second );
char * makeDateTimeStr( char * tstr, uint16_t date, uint16_t time );
int8_t readChar();
IPAddress dataIp; // IP address of client for data
WiFiClient client;
WiFiClient data;
File file;
boolean dataPassiveConn;
uint16_t dataPort;
char buf[ FTP_BUF_SIZE ]; // data buffer for transfers
char cmdLine[ FTP_CMD_SIZE ]; // where to store incoming char from client
char cwdName[ FTP_CWD_SIZE ]; // name of current directory
char command[ 5 ]; // command sent by client
boolean rnfrCmd; // previous command was RNFR
char * parameters; // point to begin of parameters sent by client
uint16_t iCL; // pointer to cmdLine next incoming char
int8_t cmdStatus, // status of ftp command connexion
transferStatus; // status of ftp data transfer
uint32_t millisTimeOut, // disconnect after 5 min of inactivity
millisDelay,
millisEndConnection, //
millisBeginTrans, // store time of beginning of a transaction
bytesTransfered; //
String _FTP_USER;
String _FTP_PASS;
};
#endif // FTP_SERVERESP_H

Wyświetl plik

@ -1,123 +1,123 @@
/*
Copyright (c) 2018 Brian Lough. All right reserved.
UniversalTelegramBot - Library to create your own Telegram Bot using
ESP8266 or ESP32 on Arduino IDE.
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
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,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
#ifndef UniversalTelegramBot_h
#define UniversalTelegramBot_h
#define ARDUINOJSON_DECODE_UNICODE 1
#define ARDUINOJSON_USE_LONG_LONG 1
#include <Arduino.h>
#include <ArduinoJson.h>
#include <Client.h>
#include <core_version.h>
#define HOST "api.telegram.org"
#define SSL_PORT 443
#define HANDLE_MESSAGES 1
//unmark following line to enable debug mode
//#define _debug
typedef bool (*MoreDataAvailable)();
typedef byte (*GetNextByte)();
typedef byte* (*GetNextBuffer)();
typedef int (GetNextBufferLen)();
struct telegramMessage {
String text;
String chat_id;
String chat_title;
String from_id;
String from_name;
String date;
String type;
float longitude;
float latitude;
int update_id;
};
class UniversalTelegramBot {
public:
UniversalTelegramBot(String token, Client &client);
String sendGetToTelegram(String command);
String sendPostToTelegram(String command, JsonObject payload);
String
sendMultipartFormDataToTelegram(String command, String binaryProperyName,
String fileName, String contentType,
String chat_id, int fileSize,
MoreDataAvailable moreDataAvailableCallback,
GetNextByte getNextByteCallback,
GetNextBuffer getNextBufferCallback,
GetNextBufferLen getNextBufferLenCallback);
String
sendMultipartFormDataToTelegramWithCaption(String command, String binaryProperyName,
String fileName, String contentType,
String caption, String chat_id, int fileSize,
MoreDataAvailable moreDataAvailableCallback,
GetNextByte getNextByteCallback,
GetNextBuffer getNextBufferCallback,
GetNextBufferLen getNextBufferLenCallback);
bool getMe();
bool sendSimpleMessage(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,
String parse_mode, String keyboard,
bool resize = false, bool oneTime = false,
bool selective = false);
bool sendMessageWithInlineKeyboard(String chat_id, String text,
String parse_mode, String keyboard);
bool sendChatAction(String chat_id, String text);
bool sendPostMessage(JsonObject payload);
String sendPostPhoto(JsonObject payload);
String sendPhotoByBinary(String chat_id, String contentType, int fileSize,
MoreDataAvailable moreDataAvailableCallback,
GetNextByte getNextByteCallback,
GetNextBuffer getNextBufferCallback,
GetNextBufferLen getNextBufferLenCallback);
String sendPhoto(String chat_id, String photo, String caption = "",
bool disable_notification = false,
int reply_to_message_id = 0, String keyboard = "");
int getUpdates(long offset);
bool checkForOkResponse(String response);
telegramMessage messages[HANDLE_MESSAGES];
long last_message_received;
String name;
String userName;
int longPoll = 0;
int waitForResponse = 10000; //jz = 1500;
private:
// JsonObject * parseUpdates(String response);
String _token;
Client *client;
void closeClient();
const int maxMessageLength = 1500; //was 1500
bool processResult(JsonObject result, int messageIndex);
};
#endif
/*
Copyright (c) 2018 Brian Lough. All right reserved.
UniversalTelegramBot - Library to create your own Telegram Bot using
ESP8266 or ESP32 on Arduino IDE.
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
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,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
#ifndef UniversalTelegramBot_h
#define UniversalTelegramBot_h
#define ARDUINOJSON_DECODE_UNICODE 1
#define ARDUINOJSON_USE_LONG_LONG 1
#include <Arduino.h>
#include <ArduinoJson.h>
#include <Client.h>
#include <core_version.h>
#define HOST "api.telegram.org"
#define SSL_PORT 443
#define HANDLE_MESSAGES 1
//unmark following line to enable debug mode
//#define _debug
typedef bool (*MoreDataAvailable)();
typedef byte (*GetNextByte)();
typedef byte* (*GetNextBuffer)();
typedef int (GetNextBufferLen)();
struct telegramMessage {
String text;
String chat_id;
String chat_title;
String from_id;
String from_name;
String date;
String type;
float longitude;
float latitude;
int update_id;
};
class UniversalTelegramBot {
public:
UniversalTelegramBot(String token, Client &client);
String sendGetToTelegram(String command);
String sendPostToTelegram(String command, JsonObject payload);
String
sendMultipartFormDataToTelegram(String command, String binaryProperyName,
String fileName, String contentType,
String chat_id, int fileSize,
MoreDataAvailable moreDataAvailableCallback,
GetNextByte getNextByteCallback,
GetNextBuffer getNextBufferCallback,
GetNextBufferLen getNextBufferLenCallback);
String
sendMultipartFormDataToTelegramWithCaption(String command, String binaryProperyName,
String fileName, String contentType,
String caption, String chat_id, int fileSize,
MoreDataAvailable moreDataAvailableCallback,
GetNextByte getNextByteCallback,
GetNextBuffer getNextBufferCallback,
GetNextBufferLen getNextBufferLenCallback);
bool getMe();
bool sendSimpleMessage(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,
String parse_mode, String keyboard,
bool resize = false, bool oneTime = false,
bool selective = false);
bool sendMessageWithInlineKeyboard(String chat_id, String text,
String parse_mode, String keyboard);
bool sendChatAction(String chat_id, String text);
bool sendPostMessage(JsonObject payload);
String sendPostPhoto(JsonObject payload);
String sendPhotoByBinary(String chat_id, String contentType, int fileSize,
MoreDataAvailable moreDataAvailableCallback,
GetNextByte getNextByteCallback,
GetNextBuffer getNextBufferCallback,
GetNextBufferLen getNextBufferLenCallback);
String sendPhoto(String chat_id, String photo, String caption = "",
bool disable_notification = false,
int reply_to_message_id = 0, String keyboard = "");
int getUpdates(long offset);
bool checkForOkResponse(String response);
telegramMessage messages[HANDLE_MESSAGES];
long last_message_received;
String name;
String userName;
int longPoll = 0;
int waitForResponse = 10000; //jz = 1500;
private:
// JsonObject * parseUpdates(String response);
String _token;
Client *client;
void closeClient();
const int maxMessageLength = 1500; //was 1500
bool processResult(JsonObject result, int messageIndex);
};
#endif

Wyświetl plik

@ -1,64 +1,64 @@
// ... 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
// https://github.com/espressif/esp-idf/commit/17bd6e8faba15812780d21e6e3db08fb26dd7033#diff-5e22dcf9fc6087d1585c7b2e434c0932
// 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
// Copyright 2016-2017 Espressif Systems (Shanghai) PTE LTD
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
#pragma once
#include <stdint.h>
#include "esp_err.h"
#include "esp_intr_alloc.h"
#ifdef __cplusplus
extern "C" {
#endif
/**
* @brief Register a handler for specific RTC_CNTL interrupts
*
* Multiple handlers can be registered using this function. Whenever an
* RTC interrupt happens, all handlers with matching rtc_intr_mask values
* will be called.
*
* @param handler handler function to call
* @param handler_arg argument to be passed to the handler
* @param rtc_intr_mask combination of RTC_CNTL_*_INT_ENA bits indicating the
* sources to call the handler for
* @return
* - ESP_OK on success
* - ESP_ERR_NO_MEM not enough memory to allocate handler structure
* - other errors returned by esp_intr_alloc
*/
esp_err_t rtc_isr_register(intr_handler_t handler, void* handler_arg,
uint32_t rtc_intr_mask);
/**
* @brief Deregister the handler previously registered using 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)
* @return
* - ESP_OK on success
* - ESP_ERR_INVALID_STATE if a handler matching both handler and
* handler_arg isn't registered
*/
esp_err_t rtc_isr_deregister(intr_handler_t handler, void* handler_arg);
#ifdef __cplusplus
}
#endif
// ... 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
// https://github.com/espressif/esp-idf/commit/17bd6e8faba15812780d21e6e3db08fb26dd7033#diff-5e22dcf9fc6087d1585c7b2e434c0932
// 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
// Copyright 2016-2017 Espressif Systems (Shanghai) PTE LTD
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
#pragma once
#include <stdint.h>
#include "esp_err.h"
#include "esp_intr_alloc.h"
#ifdef __cplusplus
extern "C" {
#endif
/**
* @brief Register a handler for specific RTC_CNTL interrupts
*
* Multiple handlers can be registered using this function. Whenever an
* RTC interrupt happens, all handlers with matching rtc_intr_mask values
* will be called.
*
* @param handler handler function to call
* @param handler_arg argument to be passed to the handler
* @param rtc_intr_mask combination of RTC_CNTL_*_INT_ENA bits indicating the
* sources to call the handler for
* @return
* - ESP_OK on success
* - ESP_ERR_NO_MEM not enough memory to allocate handler structure
* - other errors returned by esp_intr_alloc
*/
esp_err_t rtc_isr_register(intr_handler_t handler, void* handler_arg,
uint32_t rtc_intr_mask);
/**
* @brief Deregister the handler previously registered using 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)
* @return
* - ESP_OK on success
* - ESP_ERR_INVALID_STATE if a handler matching both handler and
* handler_arg isn't registered
*/
esp_err_t rtc_isr_deregister(intr_handler_t handler, void* handler_arg);
#ifdef __cplusplus
}
#endif

Wyświetl plik

@ -1,53 +1,53 @@
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
#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
// 0 for blink only for skipping frames and SOS if camera or sd is broken
#define BlinkWithWrite 1
// EDIT ssid and password
const char* ssid = "yourwifi";
const char* password = "youwifipassword";
// reboot startup parameters here
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 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 PIRenabled = 0; // 1 is PIR is enable on reboot, will only work if you are not recording
// here are 2 sets of startup parameters
// VGA 10 fps for 30 minutes, and repeat, play at real time
int framesize = 6; // 10 UXGA, 7 SVGA, 6 VGA, 5 CIF
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 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 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
// 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 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 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 capture_interval = 10000; // milli-seconds between frames
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
// 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
// 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
#define BOTtoken "9876543210:qwertyuiopasdfghjklzxcvbnmqwertyuio" // get your own bot and id at telegram.org
#define BOTme "1234567890" // these are fake
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
#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
// 0 for blink only for skipping frames and SOS if camera or sd is broken
#define BlinkWithWrite 1
// EDIT ssid and password
const char* ssid = "yourwifi";
const char* password = "youwifipassword";
// reboot startup parameters here
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 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 PIRenabled = 0; // 1 is PIR is enable on reboot, will only work if you are not recording
// here are 2 sets of startup parameters
// VGA 10 fps for 30 minutes, and repeat, play at real time
int framesize = 6; // 10 UXGA, 7 SVGA, 6 VGA, 5 CIF
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 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 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
// 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 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 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 capture_interval = 10000; // milli-seconds between frames
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
// 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
// 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
#define BOTtoken "9876543210:qwertyuiopasdfghjklzxcvbnmqwertyuio" // get your own bot and id at telegram.org
#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
* based on FTP Serveur for Arduino Due and Ethernet shield (W5100) or WIZ820io (W5200)
* based on Jean-Michel Gallego's work
* modified to work with esp8266 SPIFFS by David Paiva (david@nailbuster.com)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
// 2017: modified by @robo8080
// 2019: modified by @fa1ke5
/*******************************************************************************
** **
** DEFINITIONS FOR FTP SERVER **
** **
*******************************************************************************/
// Uncomment to print debugging info to console attached to ESP8266
//#define FTP_DEBUG
#ifndef FTP_SERVERESP_H
#define FTP_SERVERESP_H
//#include "Streaming.h"
#include "SD_MMC.h"
#include <FS.h>
#include <WiFiClient.h>
#define FTP_SERVER_VERSION "FTP-2016-01-14"
#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_TIME_OUT 5 // Disconnect client after 5 minutes of inactivity
#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_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 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 8192 reduce in v82
//#define FTP_BUF_SIZE 2048
#define FTP_BUF_SIZE 4096
class FtpServer
{
public:
void begin(String uname, String pword);
void handleFTP();
private:
bool haveParameter();
bool makeExistsPath( char * path, char * param = NULL );
void iniVariables();
void clientConnected();
void disconnectClient();
boolean userIdentity();
boolean userPassword();
boolean processCommand();
boolean dataConnect();
boolean doRetrieve();
boolean doStore();
void closeTransfer();
void abortTransfer();
boolean makePath( char * fullname );
boolean makePath( char * fullName, char * param );
uint8_t getDateTime( uint16_t * pyear, uint8_t * pmonth, uint8_t * pday,
uint8_t * phour, uint8_t * pminute, uint8_t * second );
char * makeDateTimeStr( char * tstr, uint16_t date, uint16_t time );
int8_t readChar();
IPAddress dataIp; // IP address of client for data
WiFiClient client;
WiFiClient data;
File file;
boolean dataPassiveConn;
uint16_t dataPort;
char buf[ FTP_BUF_SIZE ]; // data buffer for transfers
char cmdLine[ FTP_CMD_SIZE ]; // where to store incoming char from client
char cwdName[ FTP_CWD_SIZE ]; // name of current directory
char command[ 5 ]; // command sent by client
boolean rnfrCmd; // previous command was RNFR
char * parameters; // point to begin of parameters sent by client
uint16_t iCL; // pointer to cmdLine next incoming char
int8_t cmdStatus, // status of ftp command connexion
transferStatus; // status of ftp data transfer
uint32_t millisTimeOut, // disconnect after 5 min of inactivity
millisDelay,
millisEndConnection, //
millisBeginTrans, // store time of beginning of a transaction
bytesTransfered; //
String _FTP_USER;
String _FTP_PASS;
};
#endif // FTP_SERVERESP_H
/*
* FTP SERVER FOR ESP8266
* based on FTP Serveur for Arduino Due and Ethernet shield (W5100) or WIZ820io (W5200)
* based on Jean-Michel Gallego's work
* modified to work with esp8266 SPIFFS by David Paiva (david@nailbuster.com)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
// 2017: modified by @robo8080
// 2019: modified by @fa1ke5
/*******************************************************************************
** **
** DEFINITIONS FOR FTP SERVER **
** **
*******************************************************************************/
// Uncomment to print debugging info to console attached to ESP8266
//#define FTP_DEBUG
#ifndef FTP_SERVERESP_H
#define FTP_SERVERESP_H
//#include "Streaming.h"
#include "SD_MMC.h"
#include <FS.h>
#include <WiFiClient.h>
#define FTP_SERVER_VERSION "FTP-2016-01-14"
#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_TIME_OUT 5 // Disconnect client after 5 minutes of inactivity
#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_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 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 8192 reduce in v82
//#define FTP_BUF_SIZE 2048
#define FTP_BUF_SIZE 4096
class FtpServer
{
public:
void begin(String uname, String pword);
void handleFTP();
private:
bool haveParameter();
bool makeExistsPath( char * path, char * param = NULL );
void iniVariables();
void clientConnected();
void disconnectClient();
boolean userIdentity();
boolean userPassword();
boolean processCommand();
boolean dataConnect();
boolean doRetrieve();
boolean doStore();
void closeTransfer();
void abortTransfer();
boolean makePath( char * fullname );
boolean makePath( char * fullName, char * param );
uint8_t getDateTime( uint16_t * pyear, uint8_t * pmonth, uint8_t * pday,
uint8_t * phour, uint8_t * pminute, uint8_t * second );
char * makeDateTimeStr( char * tstr, uint16_t date, uint16_t time );
int8_t readChar();
IPAddress dataIp; // IP address of client for data
WiFiClient client;
WiFiClient data;
File file;
boolean dataPassiveConn;
uint16_t dataPort;
char buf[ FTP_BUF_SIZE ]; // data buffer for transfers
char cmdLine[ FTP_CMD_SIZE ]; // where to store incoming char from client
char cwdName[ FTP_CWD_SIZE ]; // name of current directory
char command[ 5 ]; // command sent by client
boolean rnfrCmd; // previous command was RNFR
char * parameters; // point to begin of parameters sent by client
uint16_t iCL; // pointer to cmdLine next incoming char
int8_t cmdStatus, // status of ftp command connexion
transferStatus; // status of ftp data transfer
uint32_t millisTimeOut, // disconnect after 5 min of inactivity
millisDelay,
millisEndConnection, //
millisBeginTrans, // store time of beginning of a transaction
bytesTransfered; //
String _FTP_USER;
String _FTP_PASS;
};
#endif // FTP_SERVERESP_H

Wyświetl plik

@ -1,125 +1,125 @@
/*
Copyright (c) 2018 Brian Lough. All right reserved.
UniversalTelegramBot - Library to create your own Telegram Bot using
ESP8266 or ESP32 on Arduino IDE.
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
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,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
#ifndef UniversalTelegramBot_h
#define UniversalTelegramBot_h
#define ARDUINOJSON_DECODE_UNICODE 1
#define ARDUINOJSON_USE_LONG_LONG 1
#include <Arduino.h>
#include <ArduinoJson.h>
#include <Client.h>
#include <core_version.h>
#define HOST "api.telegram.org"
#define SSL_PORT 443
#define HANDLE_MESSAGES 1
//unmark following line to enable debug mode
//#define _debug
typedef bool (*MoreDataAvailable)();
typedef byte (*GetNextByte)();
typedef byte* (*GetNextBuffer)();
typedef int (GetNextBufferLen)();
struct telegramMessage {
String text;
String chat_id;
String chat_title;
String from_id;
String from_name;
String date;
String type;
float longitude;
float latitude;
int update_id;
};
class UniversalTelegramBot {
public:
UniversalTelegramBot(String token, Client &client);
String sendGetToTelegram(String command);
String sendPostToTelegram(String command, JsonObject payload);
String
sendMultipartFormDataToTelegram(String command, String binaryProperyName,
String fileName, String contentType,
String chat_id, int fileSize,
MoreDataAvailable moreDataAvailableCallback,
GetNextByte getNextByteCallback,
GetNextBuffer getNextBufferCallback,
GetNextBufferLen getNextBufferLenCallback);
String
sendMultipartFormDataToTelegramWithCaption(String command, String binaryProperyName,
String fileName, String contentType,
String caption, String chat_id, int fileSize,
MoreDataAvailable moreDataAvailableCallback,
GetNextByte getNextByteCallback,
GetNextBuffer getNextBufferCallback,
GetNextBufferLen getNextBufferLenCallback);
bool getMe();
bool sendSimpleMessage(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,
String parse_mode, String keyboard,
bool resize = false, bool oneTime = false,
bool selective = false);
bool sendMessageWithInlineKeyboard(String chat_id, String text,
String parse_mode, String keyboard);
bool sendChatAction(String chat_id, String text);
bool sendPostMessage(JsonObject payload);
String sendPostPhoto(JsonObject payload);
String sendPhotoByBinary(String chat_id, String contentType, int fileSize,
MoreDataAvailable moreDataAvailableCallback,
GetNextByte getNextByteCallback,
GetNextBuffer getNextBufferCallback,
GetNextBufferLen getNextBufferLenCallback);
String sendPhoto(String chat_id, String photo, String caption = "",
bool disable_notification = false,
int reply_to_message_id = 0, String keyboard = "");
int getUpdates(long offset);
bool checkForOkResponse(String response);
telegramMessage messages[HANDLE_MESSAGES];
long last_message_received;
String name;
String userName;
int longPoll = 0;
int waitForResponse = 5000; //jz = 1500;
int jzdelay = 60; // delay between multipart blocks
int jzblocksize = 2 * 1024; // multipart block size
private:
// JsonObject * parseUpdates(String response);
String _token;
Client *client;
void closeClient();
const int maxMessageLength = 1500; //was 1500
bool processResult(JsonObject result, int messageIndex);
};
#endif
/*
Copyright (c) 2018 Brian Lough. All right reserved.
UniversalTelegramBot - Library to create your own Telegram Bot using
ESP8266 or ESP32 on Arduino IDE.
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
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,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
#ifndef UniversalTelegramBot_h
#define UniversalTelegramBot_h
#define ARDUINOJSON_DECODE_UNICODE 1
#define ARDUINOJSON_USE_LONG_LONG 1
#include <Arduino.h>
#include <ArduinoJson.h>
#include <Client.h>
#include <core_version.h>
#define HOST "api.telegram.org"
#define SSL_PORT 443
#define HANDLE_MESSAGES 1
//unmark following line to enable debug mode
//#define _debug
typedef bool (*MoreDataAvailable)();
typedef byte (*GetNextByte)();
typedef byte* (*GetNextBuffer)();
typedef int (GetNextBufferLen)();
struct telegramMessage {
String text;
String chat_id;
String chat_title;
String from_id;
String from_name;
String date;
String type;
float longitude;
float latitude;
int update_id;
};
class UniversalTelegramBot {
public:
UniversalTelegramBot(String token, Client &client);
String sendGetToTelegram(String command);
String sendPostToTelegram(String command, JsonObject payload);
String
sendMultipartFormDataToTelegram(String command, String binaryProperyName,
String fileName, String contentType,
String chat_id, int fileSize,
MoreDataAvailable moreDataAvailableCallback,
GetNextByte getNextByteCallback,
GetNextBuffer getNextBufferCallback,
GetNextBufferLen getNextBufferLenCallback);
String
sendMultipartFormDataToTelegramWithCaption(String command, String binaryProperyName,
String fileName, String contentType,
String caption, String chat_id, int fileSize,
MoreDataAvailable moreDataAvailableCallback,
GetNextByte getNextByteCallback,
GetNextBuffer getNextBufferCallback,
GetNextBufferLen getNextBufferLenCallback);
bool getMe();
bool sendSimpleMessage(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,
String parse_mode, String keyboard,
bool resize = false, bool oneTime = false,
bool selective = false);
bool sendMessageWithInlineKeyboard(String chat_id, String text,
String parse_mode, String keyboard);
bool sendChatAction(String chat_id, String text);
bool sendPostMessage(JsonObject payload);
String sendPostPhoto(JsonObject payload);
String sendPhotoByBinary(String chat_id, String contentType, int fileSize,
MoreDataAvailable moreDataAvailableCallback,
GetNextByte getNextByteCallback,
GetNextBuffer getNextBufferCallback,
GetNextBufferLen getNextBufferLenCallback);
String sendPhoto(String chat_id, String photo, String caption = "",
bool disable_notification = false,
int reply_to_message_id = 0, String keyboard = "");
int getUpdates(long offset);
bool checkForOkResponse(String response);
telegramMessage messages[HANDLE_MESSAGES];
long last_message_received;
String name;
String userName;
int longPoll = 0;
int waitForResponse = 5000; //jz = 1500;
int jzdelay = 60; // delay between multipart blocks
int jzblocksize = 2 * 1024; // multipart block size
private:
// JsonObject * parseUpdates(String response);
String _token;
Client *client;
void closeClient();
const int maxMessageLength = 1500; //was 1500
bool processResult(JsonObject result, int messageIndex);
};
#endif

Wyświetl plik

@ -1,64 +1,64 @@
// ... 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
// https://github.com/espressif/esp-idf/commit/17bd6e8faba15812780d21e6e3db08fb26dd7033#diff-5e22dcf9fc6087d1585c7b2e434c0932
// 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
// Copyright 2016-2017 Espressif Systems (Shanghai) PTE LTD
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
#pragma once
#include <stdint.h>
#include "esp_err.h"
#include "esp_intr_alloc.h"
#ifdef __cplusplus
extern "C" {
#endif
/**
* @brief Register a handler for specific RTC_CNTL interrupts
*
* Multiple handlers can be registered using this function. Whenever an
* RTC interrupt happens, all handlers with matching rtc_intr_mask values
* will be called.
*
* @param handler handler function to call
* @param handler_arg argument to be passed to the handler
* @param rtc_intr_mask combination of RTC_CNTL_*_INT_ENA bits indicating the
* sources to call the handler for
* @return
* - ESP_OK on success
* - ESP_ERR_NO_MEM not enough memory to allocate handler structure
* - other errors returned by esp_intr_alloc
*/
esp_err_t rtc_isr_register(intr_handler_t handler, void* handler_arg,
uint32_t rtc_intr_mask);
/**
* @brief Deregister the handler previously registered using 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)
* @return
* - ESP_OK on success
* - ESP_ERR_INVALID_STATE if a handler matching both handler and
* handler_arg isn't registered
*/
esp_err_t rtc_isr_deregister(intr_handler_t handler, void* handler_arg);
#ifdef __cplusplus
}
#endif
// ... 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
// https://github.com/espressif/esp-idf/commit/17bd6e8faba15812780d21e6e3db08fb26dd7033#diff-5e22dcf9fc6087d1585c7b2e434c0932
// 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
// Copyright 2016-2017 Espressif Systems (Shanghai) PTE LTD
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
#pragma once
#include <stdint.h>
#include "esp_err.h"
#include "esp_intr_alloc.h"
#ifdef __cplusplus
extern "C" {
#endif
/**
* @brief Register a handler for specific RTC_CNTL interrupts
*
* Multiple handlers can be registered using this function. Whenever an
* RTC interrupt happens, all handlers with matching rtc_intr_mask values
* will be called.
*
* @param handler handler function to call
* @param handler_arg argument to be passed to the handler
* @param rtc_intr_mask combination of RTC_CNTL_*_INT_ENA bits indicating the
* sources to call the handler for
* @return
* - ESP_OK on success
* - ESP_ERR_NO_MEM not enough memory to allocate handler structure
* - other errors returned by esp_intr_alloc
*/
esp_err_t rtc_isr_register(intr_handler_t handler, void* handler_arg,
uint32_t rtc_intr_mask);
/**
* @brief Deregister the handler previously registered using 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)
* @return
* - ESP_OK on success
* - ESP_ERR_INVALID_STATE if a handler matching both handler and
* handler_arg isn't registered
*/
esp_err_t rtc_isr_deregister(intr_handler_t handler, void* handler_arg);
#ifdef __cplusplus
}
#endif

Wyświetl plik

@ -1,54 +1,54 @@
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
#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
// 0 for blink only for skipping frames and SOS if camera or sd is broken
#define BlinkWithWrite 1
// EDIT ssid and password
const char* ssid = "jzjzjz";
const char* password = "jzjzjz";
// reboot startup parameters here
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 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 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
// VGA 10 fps for 30 minutes, and repeat, play at real time
/*
int framesize = 6; // 10 UXGA, 7 SVGA, 6 VGA, 5 CIF
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 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 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
*/
// 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 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 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 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
// 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
// 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
RTC_DATA_ATTR int EnableBOT = 0;
#define BOTtoken "9876543210:qwertyuiopasdfghjklzxcvbnmqwertyuio" // get your own bot and id at telegram.org
#define BOTme "1234567890"
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
#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
// 0 for blink only for skipping frames and SOS if camera or sd is broken
#define BlinkWithWrite 1
// EDIT ssid and password
const char* ssid = "jzjzjz";
const char* password = "jzjzjz";
// reboot startup parameters here
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 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 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
// VGA 10 fps for 30 minutes, and repeat, play at real time
/*
int framesize = 6; // 10 UXGA, 7 SVGA, 6 VGA, 5 CIF
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 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 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
*/
// 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 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 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 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
// 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
// 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
RTC_DATA_ATTR int EnableBOT = 0;
#define BOTtoken "9876543210:qwertyuiopasdfghjklzxcvbnmqwertyuio" // get your own bot and id at telegram.org
#define BOTme "1234567890"

Wyświetl plik

@ -1,116 +1,116 @@
/*
* FTP SERVER FOR ESP8266
* based on FTP Serveur for Arduino Due and Ethernet shield (W5100) or WIZ820io (W5200)
* based on Jean-Michel Gallego's work
* modified to work with esp8266 SPIFFS by David Paiva (david@nailbuster.com)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
// 2017: modified by @robo8080
// 2019: modified by @fa1ke5
/*******************************************************************************
** **
** DEFINITIONS FOR FTP SERVER **
** **
*******************************************************************************/
// Uncomment to print debugging info to console attached to ESP8266
//#define FTP_DEBUG
#ifndef FTP_SERVERESP_H
#define FTP_SERVERESP_H
//#include "Streaming.h"
#include "SD_MMC.h"
#include <FS.h>
#include <WiFiClient.h>
#define FTP_SERVER_VERSION "FTP-2016-01-14"
#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_TIME_OUT 5 // Disconnect client after 5 minutes of inactivity
#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_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 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 8192 reduce in v82
//#define FTP_BUF_SIZE 2048
#define FTP_BUF_SIZE 4096
class FtpServer
{
public:
void begin(String uname, String pword);
void handleFTP();
private:
bool haveParameter();
bool makeExistsPath( char * path, char * param = NULL );
void iniVariables();
void clientConnected();
void disconnectClient();
boolean userIdentity();
boolean userPassword();
boolean processCommand();
boolean dataConnect();
boolean doRetrieve();
boolean doStore();
void closeTransfer();
void abortTransfer();
boolean makePath( char * fullname );
boolean makePath( char * fullName, char * param );
uint8_t getDateTime( uint16_t * pyear, uint8_t * pmonth, uint8_t * pday,
uint8_t * phour, uint8_t * pminute, uint8_t * second );
char * makeDateTimeStr( char * tstr, uint16_t date, uint16_t time );
int8_t readChar();
IPAddress dataIp; // IP address of client for data
WiFiClient client;
WiFiClient data;
File file;
boolean dataPassiveConn;
uint16_t dataPort;
char buf[ FTP_BUF_SIZE ]; // data buffer for transfers
char cmdLine[ FTP_CMD_SIZE ]; // where to store incoming char from client
char cwdName[ FTP_CWD_SIZE ]; // name of current directory
char command[ 5 ]; // command sent by client
boolean rnfrCmd; // previous command was RNFR
char * parameters; // point to begin of parameters sent by client
uint16_t iCL; // pointer to cmdLine next incoming char
int8_t cmdStatus, // status of ftp command connexion
transferStatus; // status of ftp data transfer
uint32_t millisTimeOut, // disconnect after 5 min of inactivity
millisDelay,
millisEndConnection, //
millisBeginTrans, // store time of beginning of a transaction
bytesTransfered; //
String _FTP_USER;
String _FTP_PASS;
};
#endif // FTP_SERVERESP_H
/*
* FTP SERVER FOR ESP8266
* based on FTP Serveur for Arduino Due and Ethernet shield (W5100) or WIZ820io (W5200)
* based on Jean-Michel Gallego's work
* modified to work with esp8266 SPIFFS by David Paiva (david@nailbuster.com)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
// 2017: modified by @robo8080
// 2019: modified by @fa1ke5
/*******************************************************************************
** **
** DEFINITIONS FOR FTP SERVER **
** **
*******************************************************************************/
// Uncomment to print debugging info to console attached to ESP8266
//#define FTP_DEBUG
#ifndef FTP_SERVERESP_H
#define FTP_SERVERESP_H
//#include "Streaming.h"
#include "SD_MMC.h"
#include <FS.h>
#include <WiFiClient.h>
#define FTP_SERVER_VERSION "FTP-2016-01-14"
#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_TIME_OUT 5 // Disconnect client after 5 minutes of inactivity
#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_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 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 8192 reduce in v82
//#define FTP_BUF_SIZE 2048
#define FTP_BUF_SIZE 4096
class FtpServer
{
public:
void begin(String uname, String pword);
void handleFTP();
private:
bool haveParameter();
bool makeExistsPath( char * path, char * param = NULL );
void iniVariables();
void clientConnected();
void disconnectClient();
boolean userIdentity();
boolean userPassword();
boolean processCommand();
boolean dataConnect();
boolean doRetrieve();
boolean doStore();
void closeTransfer();
void abortTransfer();
boolean makePath( char * fullname );
boolean makePath( char * fullName, char * param );
uint8_t getDateTime( uint16_t * pyear, uint8_t * pmonth, uint8_t * pday,
uint8_t * phour, uint8_t * pminute, uint8_t * second );
char * makeDateTimeStr( char * tstr, uint16_t date, uint16_t time );
int8_t readChar();
IPAddress dataIp; // IP address of client for data
WiFiClient client;
WiFiClient data;
File file;
boolean dataPassiveConn;
uint16_t dataPort;
char buf[ FTP_BUF_SIZE ]; // data buffer for transfers
char cmdLine[ FTP_CMD_SIZE ]; // where to store incoming char from client
char cwdName[ FTP_CWD_SIZE ]; // name of current directory
char command[ 5 ]; // command sent by client
boolean rnfrCmd; // previous command was RNFR
char * parameters; // point to begin of parameters sent by client
uint16_t iCL; // pointer to cmdLine next incoming char
int8_t cmdStatus, // status of ftp command connexion
transferStatus; // status of ftp data transfer
uint32_t millisTimeOut, // disconnect after 5 min of inactivity
millisDelay,
millisEndConnection, //
millisBeginTrans, // store time of beginning of a transaction
bytesTransfered; //
String _FTP_USER;
String _FTP_PASS;
};
#endif // FTP_SERVERESP_H

Wyświetl plik

@ -1,125 +1,125 @@
/*
Copyright (c) 2018 Brian Lough. All right reserved.
UniversalTelegramBot - Library to create your own Telegram Bot using
ESP8266 or ESP32 on Arduino IDE.
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
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,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
#ifndef UniversalTelegramBot_h
#define UniversalTelegramBot_h
#define ARDUINOJSON_DECODE_UNICODE 1
#define ARDUINOJSON_USE_LONG_LONG 1
#include <Arduino.h>
#include <ArduinoJson.h>
#include <Client.h>
#include <core_version.h>
#define HOST "api.telegram.org"
#define SSL_PORT 443
#define HANDLE_MESSAGES 1
//unmark following line to enable debug mode
//#define _debug
typedef bool (*MoreDataAvailable)();
typedef byte (*GetNextByte)();
typedef byte* (*GetNextBuffer)();
typedef int (GetNextBufferLen)();
struct telegramMessage {
String text;
String chat_id;
String chat_title;
String from_id;
String from_name;
String date;
String type;
float longitude;
float latitude;
int update_id;
};
class UniversalTelegramBot {
public:
UniversalTelegramBot(String token, Client &client);
String sendGetToTelegram(String command);
String sendPostToTelegram(String command, JsonObject payload);
String
sendMultipartFormDataToTelegram(String command, String binaryProperyName,
String fileName, String contentType,
String chat_id, int fileSize,
MoreDataAvailable moreDataAvailableCallback,
GetNextByte getNextByteCallback,
GetNextBuffer getNextBufferCallback,
GetNextBufferLen getNextBufferLenCallback);
String
sendMultipartFormDataToTelegramWithCaption(String command, String binaryProperyName,
String fileName, String contentType,
String caption, String chat_id, int fileSize,
MoreDataAvailable moreDataAvailableCallback,
GetNextByte getNextByteCallback,
GetNextBuffer getNextBufferCallback,
GetNextBufferLen getNextBufferLenCallback);
bool getMe();
bool sendSimpleMessage(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,
String parse_mode, String keyboard,
bool resize = false, bool oneTime = false,
bool selective = false);
bool sendMessageWithInlineKeyboard(String chat_id, String text,
String parse_mode, String keyboard);
bool sendChatAction(String chat_id, String text);
bool sendPostMessage(JsonObject payload);
String sendPostPhoto(JsonObject payload);
String sendPhotoByBinary(String chat_id, String contentType, int fileSize,
MoreDataAvailable moreDataAvailableCallback,
GetNextByte getNextByteCallback,
GetNextBuffer getNextBufferCallback,
GetNextBufferLen getNextBufferLenCallback);
String sendPhoto(String chat_id, String photo, String caption = "",
bool disable_notification = false,
int reply_to_message_id = 0, String keyboard = "");
int getUpdates(long offset);
bool checkForOkResponse(String response);
telegramMessage messages[HANDLE_MESSAGES];
long last_message_received;
String name;
String userName;
int longPoll = 0;
int waitForResponse = 5000; //jz = 1500;
int jzdelay = 60; // delay between multipart blocks
int jzblocksize = 2 * 1024; // multipart block size
private:
// JsonObject * parseUpdates(String response);
String _token;
Client *client;
void closeClient();
const int maxMessageLength = 1500; //was 1500
bool processResult(JsonObject result, int messageIndex);
};
#endif
/*
Copyright (c) 2018 Brian Lough. All right reserved.
UniversalTelegramBot - Library to create your own Telegram Bot using
ESP8266 or ESP32 on Arduino IDE.
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
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,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
#ifndef UniversalTelegramBot_h
#define UniversalTelegramBot_h
#define ARDUINOJSON_DECODE_UNICODE 1
#define ARDUINOJSON_USE_LONG_LONG 1
#include <Arduino.h>
#include <ArduinoJson.h>
#include <Client.h>
#include <core_version.h>
#define HOST "api.telegram.org"
#define SSL_PORT 443
#define HANDLE_MESSAGES 1
//unmark following line to enable debug mode
//#define _debug
typedef bool (*MoreDataAvailable)();
typedef byte (*GetNextByte)();
typedef byte* (*GetNextBuffer)();
typedef int (GetNextBufferLen)();
struct telegramMessage {
String text;
String chat_id;
String chat_title;
String from_id;
String from_name;
String date;
String type;
float longitude;
float latitude;
int update_id;
};
class UniversalTelegramBot {
public:
UniversalTelegramBot(String token, Client &client);
String sendGetToTelegram(String command);
String sendPostToTelegram(String command, JsonObject payload);
String
sendMultipartFormDataToTelegram(String command, String binaryProperyName,
String fileName, String contentType,
String chat_id, int fileSize,
MoreDataAvailable moreDataAvailableCallback,
GetNextByte getNextByteCallback,
GetNextBuffer getNextBufferCallback,
GetNextBufferLen getNextBufferLenCallback);
String
sendMultipartFormDataToTelegramWithCaption(String command, String binaryProperyName,
String fileName, String contentType,
String caption, String chat_id, int fileSize,
MoreDataAvailable moreDataAvailableCallback,
GetNextByte getNextByteCallback,
GetNextBuffer getNextBufferCallback,
GetNextBufferLen getNextBufferLenCallback);
bool getMe();
bool sendSimpleMessage(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,
String parse_mode, String keyboard,
bool resize = false, bool oneTime = false,
bool selective = false);
bool sendMessageWithInlineKeyboard(String chat_id, String text,
String parse_mode, String keyboard);
bool sendChatAction(String chat_id, String text);
bool sendPostMessage(JsonObject payload);
String sendPostPhoto(JsonObject payload);
String sendPhotoByBinary(String chat_id, String contentType, int fileSize,
MoreDataAvailable moreDataAvailableCallback,
GetNextByte getNextByteCallback,
GetNextBuffer getNextBufferCallback,
GetNextBufferLen getNextBufferLenCallback);
String sendPhoto(String chat_id, String photo, String caption = "",
bool disable_notification = false,
int reply_to_message_id = 0, String keyboard = "");
int getUpdates(long offset);
bool checkForOkResponse(String response);
telegramMessage messages[HANDLE_MESSAGES];
long last_message_received;
String name;
String userName;
int longPoll = 0;
int waitForResponse = 5000; //jz = 1500;
int jzdelay = 60; // delay between multipart blocks
int jzblocksize = 2 * 1024; // multipart block size
private:
// JsonObject * parseUpdates(String response);
String _token;
Client *client;
void closeClient();
const int maxMessageLength = 1500; //was 1500
bool processResult(JsonObject result, int messageIndex);
};
#endif

Wyświetl plik

@ -1,64 +1,64 @@
// ... 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
// https://github.com/espressif/esp-idf/commit/17bd6e8faba15812780d21e6e3db08fb26dd7033#diff-5e22dcf9fc6087d1585c7b2e434c0932
// 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
// Copyright 2016-2017 Espressif Systems (Shanghai) PTE LTD
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
#pragma once
#include <stdint.h>
#include "esp_err.h"
#include "esp_intr_alloc.h"
#ifdef __cplusplus
extern "C" {
#endif
/**
* @brief Register a handler for specific RTC_CNTL interrupts
*
* Multiple handlers can be registered using this function. Whenever an
* RTC interrupt happens, all handlers with matching rtc_intr_mask values
* will be called.
*
* @param handler handler function to call
* @param handler_arg argument to be passed to the handler
* @param rtc_intr_mask combination of RTC_CNTL_*_INT_ENA bits indicating the
* sources to call the handler for
* @return
* - ESP_OK on success
* - ESP_ERR_NO_MEM not enough memory to allocate handler structure
* - other errors returned by esp_intr_alloc
*/
esp_err_t rtc_isr_register(intr_handler_t handler, void* handler_arg,
uint32_t rtc_intr_mask);
/**
* @brief Deregister the handler previously registered using 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)
* @return
* - ESP_OK on success
* - ESP_ERR_INVALID_STATE if a handler matching both handler and
* handler_arg isn't registered
*/
esp_err_t rtc_isr_deregister(intr_handler_t handler, void* handler_arg);
#ifdef __cplusplus
}
#endif
// ... 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
// https://github.com/espressif/esp-idf/commit/17bd6e8faba15812780d21e6e3db08fb26dd7033#diff-5e22dcf9fc6087d1585c7b2e434c0932
// 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
// Copyright 2016-2017 Espressif Systems (Shanghai) PTE LTD
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
#pragma once
#include <stdint.h>
#include "esp_err.h"
#include "esp_intr_alloc.h"
#ifdef __cplusplus
extern "C" {
#endif
/**
* @brief Register a handler for specific RTC_CNTL interrupts
*
* Multiple handlers can be registered using this function. Whenever an
* RTC interrupt happens, all handlers with matching rtc_intr_mask values
* will be called.
*
* @param handler handler function to call
* @param handler_arg argument to be passed to the handler
* @param rtc_intr_mask combination of RTC_CNTL_*_INT_ENA bits indicating the
* sources to call the handler for
* @return
* - ESP_OK on success
* - ESP_ERR_NO_MEM not enough memory to allocate handler structure
* - other errors returned by esp_intr_alloc
*/
esp_err_t rtc_isr_register(intr_handler_t handler, void* handler_arg,
uint32_t rtc_intr_mask);
/**
* @brief Deregister the handler previously registered using 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)
* @return
* - ESP_OK on success
* - ESP_ERR_INVALID_STATE if a handler matching both handler and
* handler_arg isn't registered
*/
esp_err_t rtc_isr_deregister(intr_handler_t handler, void* handler_arg);
#ifdef __cplusplus
}
#endif

Wyświetl plik

@ -1,57 +1,57 @@
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
#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
// 0 for blink only for skipping frames and SOS if camera or sd is broken
#define BlinkWithWrite 1
// EDIT ssid and password
const char* ssid = "jzjzjz";
const char* password = "jzjzjz";
// reboot startup parameters here
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 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 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 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
// VGA 10 fps for 30 minutes, and repeat, play at real time
int framesize = 6; // 10 UXGA, 7 SVGA, 6 VGA, 5 CIF
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 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 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
// 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 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 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 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
*/
// 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
// 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
// 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
#define BOTtoken "9876543210:qwertyuiopasdfghjklzxcvbnmqwertyuio" // get your own bot and id at telegram.org
#define BOTme "1234567890"
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
#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
// 0 for blink only for skipping frames and SOS if camera or sd is broken
#define BlinkWithWrite 1
// EDIT ssid and password
const char* ssid = "jzjzjz";
const char* password = "jzjzjz";
// reboot startup parameters here
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 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 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 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
// VGA 10 fps for 30 minutes, and repeat, play at real time
int framesize = 6; // 10 UXGA, 7 SVGA, 6 VGA, 5 CIF
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 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 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
// 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 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 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 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
*/
// 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
// 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
// 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
#define BOTtoken "9876543210:qwertyuiopasdfghjklzxcvbnmqwertyuio" // get your own bot and id at telegram.org
#define BOTme "1234567890"

Wyświetl plik

Przed

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

Po

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