commit
239c5cb8f1
4 changed files with 483 additions and 0 deletions
@ -0,0 +1,100 @@
@@ -0,0 +1,100 @@
|
||||
/****************************************************************************************************************************
|
||||
Credentials.h |
||||
For ESP8266 / ESP32 boards |
||||
|
||||
ESP_WiFiManager_Lite (https://github.com/khoih-prog/ESP_WiFiManager_Lite) is a library
|
||||
for the ESP32/ESP8266 boards to enable store Credentials in EEPROM/SPIFFS/LittleFS for easy
|
||||
configuration/reconfiguration and autoconnect/autoreconnect of WiFi and other services without Hardcoding. |
||||
|
||||
Built by Khoi Hoang https://github.com/khoih-prog/ESP_WiFiManager_Lite
|
||||
Licensed under MIT license |
||||
*****************************************************************************************************************************/ |
||||
|
||||
#ifndef Credentials_h |
||||
#define Credentials_h |
||||
|
||||
#include "defines.h" |
||||
|
||||
/// Start Default Config Data //////////////////
|
||||
|
||||
/*
|
||||
#define SSID_MAX_LEN 32 |
||||
//From v1.0.3, WPA2 passwords can be up to 63 characters long.
|
||||
#define PASS_MAX_LEN 64 |
||||
|
||||
typedef struct |
||||
{ |
||||
char wifi_ssid[SSID_MAX_LEN]; |
||||
char wifi_pw [PASS_MAX_LEN]; |
||||
} WiFi_Credentials; |
||||
|
||||
#define NUM_WIFI_CREDENTIALS 2 |
||||
|
||||
// Configurable items besides fixed Header, just add board_name
|
||||
#define NUM_CONFIGURABLE_ITEMS ( ( 2 * NUM_WIFI_CREDENTIALS ) + 1 ) |
||||
////////////////
|
||||
|
||||
typedef struct Configuration |
||||
{ |
||||
char header [16]; |
||||
WiFi_Credentials WiFi_Creds [NUM_WIFI_CREDENTIALS]; |
||||
char board_name [24]; |
||||
int checkSum; |
||||
} ESP_WM_LITE_Configuration; |
||||
*/ |
||||
|
||||
#define TO_LOAD_DEFAULT_CONFIG_DATA false |
||||
|
||||
#if TO_LOAD_DEFAULT_CONFIG_DATA |
||||
|
||||
// This feature is primarily used in development to force a known set of values as Config Data
|
||||
// It will NOT force the Config Portal to activate. Use DRD or erase Config Data with ESP_WiFiManager.clearConfigData()
|
||||
|
||||
// Used mostly for development and debugging. FORCES default values to be loaded each run.
|
||||
// Config Portal data input will be ignored and overridden by DEFAULT_CONFIG_DATA
|
||||
//bool LOAD_DEFAULT_CONFIG_DATA = true;
|
||||
|
||||
// Used mostly once debugged. Assumes good data already saved in device.
|
||||
// Config Portal data input will be override DEFAULT_CONFIG_DATA
|
||||
bool LOAD_DEFAULT_CONFIG_DATA = false; |
||||
|
||||
|
||||
ESP_WM_LITE_Configuration defaultConfig = |
||||
{ |
||||
//char header[16], dummy, not used
|
||||
#if ESP8266 |
||||
"ESP8266", |
||||
#else |
||||
"ESP32", |
||||
#endif |
||||
|
||||
// WiFi_Credentials WiFi_Creds [NUM_WIFI_CREDENTIALS];
|
||||
// WiFi_Credentials.wifi_ssid and WiFi_Credentials.wifi_pw
|
||||
"SSID1", "password1", |
||||
"SSID2", "password2", |
||||
//char board_name [24];
|
||||
|
||||
#if ESP8266 |
||||
"ESP8266-Control", |
||||
#else |
||||
"ESP32-Control", |
||||
#endif |
||||
|
||||
// terminate the list
|
||||
//int checkSum, dummy, not used
|
||||
0 |
||||
/////////// End Default Config Data /////////////
|
||||
}; |
||||
|
||||
#else |
||||
|
||||
bool LOAD_DEFAULT_CONFIG_DATA = false; |
||||
|
||||
ESP_WM_LITE_Configuration defaultConfig; |
||||
|
||||
#endif // TO_LOAD_DEFAULT_CONFIG_DATA
|
||||
|
||||
/////////// End Default Config Data /////////////
|
||||
|
||||
|
||||
#endif //Credentials_h
|
||||
@ -0,0 +1,156 @@
@@ -0,0 +1,156 @@
|
||||
/****************************************************************************************************************************
|
||||
ESP_WiFi.ino |
||||
For ESP8266 / ESP32 boards |
||||
|
||||
ESP_WiFiManager_Lite (https://github.com/khoih-prog/ESP_WiFiManager_Lite) is a library
|
||||
for the ESP32/ESP8266 boards to enable store Credentials in EEPROM/SPIFFS/LittleFS for easy
|
||||
configuration/reconfiguration and autoconnect/autoreconnect of WiFi and other services without Hardcoding. |
||||
|
||||
Built by Khoi Hoang https://github.com/khoih-prog/ESP_WiFiManager_Lite
|
||||
Licensed under MIT license |
||||
*****************************************************************************************************************************/ |
||||
|
||||
#include "defines.h" |
||||
#include "Credentials.h" |
||||
#include "dynamicParams.h" |
||||
|
||||
ESP_WiFiManager_Lite* ESP_WiFiManager; |
||||
|
||||
void heartBeatPrint() |
||||
{ |
||||
static int num = 1; |
||||
|
||||
if (WiFi.status() == WL_CONNECTED) |
||||
Serial.print("H"); // H means connected to WiFi
|
||||
else |
||||
{ |
||||
if (ESP_WiFiManager->isConfigMode()) |
||||
Serial.print("C"); // C means in Config Mode
|
||||
else |
||||
Serial.print("F"); // F means not connected to WiFi
|
||||
} |
||||
|
||||
if (num == 80) |
||||
{ |
||||
Serial.println(); |
||||
num = 1; |
||||
} |
||||
else if (num++ % 10 == 0) |
||||
{ |
||||
Serial.print(F(" ")); |
||||
} |
||||
} |
||||
|
||||
void check_status() |
||||
{ |
||||
static unsigned long checkstatus_timeout = 0; |
||||
|
||||
//KH
|
||||
#define HEARTBEAT_INTERVAL 20000L |
||||
// Print hearbeat every HEARTBEAT_INTERVAL (20) seconds.
|
||||
if ((millis() > checkstatus_timeout) || (checkstatus_timeout == 0)) |
||||
{ |
||||
heartBeatPrint(); |
||||
checkstatus_timeout = millis() + HEARTBEAT_INTERVAL; |
||||
} |
||||
} |
||||
|
||||
#if USING_CUSTOMS_STYLE |
||||
const char NewCustomsStyle[] PROGMEM = "<style>div,input{padding:5px;font-size:1em;}input{width:95%;}body{text-align: center;}"\
|
||||
"button{background-color:blue;color:white;line-height:2.4rem;font-size:1.2rem;width:100%;}fieldset{border-radius:0.3rem;margin:0px;}</style>"; |
||||
#endif |
||||
|
||||
void setup() |
||||
{ |
||||
// Debug console
|
||||
Serial.begin(115200); |
||||
while (!Serial); |
||||
|
||||
delay(200); |
||||
|
||||
Serial.print(F("\nStarting ESP_WiFi using ")); Serial.print(FS_Name); |
||||
Serial.print(F(" on ")); Serial.println(ARDUINO_BOARD); |
||||
Serial.println(ESP_WIFI_MANAGER_LITE_VERSION); |
||||
|
||||
#if USING_MRD |
||||
Serial.println(ESP_MULTI_RESET_DETECTOR_VERSION); |
||||
#else |
||||
Serial.println(ESP_DOUBLE_RESET_DETECTOR_VERSION); |
||||
#endif |
||||
|
||||
ESP_WiFiManager = new ESP_WiFiManager_Lite(); |
||||
|
||||
String AP_SSID = "12345678"; |
||||
String AP_PWD = "12345678"; |
||||
|
||||
// Set customized AP SSID and PWD
|
||||
ESP_WiFiManager->setConfigPortal(AP_SSID, AP_PWD); |
||||
|
||||
// Optional to change default AP IP(192.168.4.1) and channel(10)
|
||||
//ESP_WiFiManager->setConfigPortalIP(IPAddress(192, 168, 120, 1));
|
||||
ESP_WiFiManager->setConfigPortalChannel(0); |
||||
|
||||
#if USING_CUSTOMS_STYLE |
||||
ESP_WiFiManager->setCustomsStyle(NewCustomsStyle); |
||||
#endif |
||||
|
||||
#if USING_CUSTOMS_HEAD_ELEMENT |
||||
ESP_WiFiManager->setCustomsHeadElement(PSTR("<style>html{filter: invert(10%);}</style>")); |
||||
#endif |
||||
|
||||
#if USING_CORS_FEATURE |
||||
ESP_WiFiManager->setCORSHeader(PSTR("Your Access-Control-Allow-Origin")); |
||||
#endif |
||||
|
||||
// Set customized DHCP HostName
|
||||
ESP_WiFiManager->begin(HOST_NAME); |
||||
//Or use default Hostname "ESP32-WIFI-XXXXXX"
|
||||
//ESP_WiFiManager->begin();
|
||||
} |
||||
|
||||
#if USE_DYNAMIC_PARAMETERS |
||||
void displayCredentials() |
||||
{ |
||||
Serial.println(F("\nYour stored Credentials :")); |
||||
|
||||
for (uint16_t i = 0; i < NUM_MENU_ITEMS; i++) |
||||
{ |
||||
Serial.print(myMenuItems[i].displayName); |
||||
Serial.print(F(" = ")); |
||||
Serial.println(myMenuItems[i].pdata); |
||||
} |
||||
} |
||||
|
||||
void displayCredentialsInLoop() |
||||
{ |
||||
static bool displayedCredentials = false; |
||||
|
||||
if (!displayedCredentials) |
||||
{ |
||||
for (int i = 0; i < NUM_MENU_ITEMS; i++) |
||||
{ |
||||
if (!strlen(myMenuItems[i].pdata)) |
||||
{ |
||||
break; |
||||
} |
||||
|
||||
if ( i == (NUM_MENU_ITEMS - 1) ) |
||||
{ |
||||
displayedCredentials = true; |
||||
displayCredentials(); |
||||
} |
||||
} |
||||
} |
||||
} |
||||
|
||||
#endif |
||||
|
||||
void loop() |
||||
{ |
||||
ESP_WiFiManager->run(); |
||||
check_status(); |
||||
|
||||
#if USE_DYNAMIC_PARAMETERS |
||||
displayCredentialsInLoop(); |
||||
#endif |
||||
} |
||||
@ -0,0 +1,153 @@
@@ -0,0 +1,153 @@
|
||||
/****************************************************************************************************************************
|
||||
defines.h |
||||
For ESP8266 / ESP32 boards |
||||
|
||||
ESP_WiFiManager_Lite (https://github.com/khoih-prog/ESP_WiFiManager_Lite) is a library
|
||||
for the ESP32/ESP8266 boards to enable store Credentials in EEPROM/SPIFFS/LittleFS for easy
|
||||
configuration/reconfiguration and autoconnect/autoreconnect of WiFi and other services without Hardcoding. |
||||
|
||||
Built by Khoi Hoang https://github.com/khoih-prog/ESP_WiFiManager_Lite
|
||||
Licensed under MIT license
|
||||
*****************************************************************************************************************************/ |
||||
|
||||
#ifndef defines_h |
||||
#define defines_h |
||||
|
||||
#if !( ESP8266 || ESP32) |
||||
#error This code is intended to run only on the ESP8266/ESP32 boards ! Please check your Tools->Board setting. |
||||
#endif |
||||
|
||||
/* Comment this out to disable prints and save space */ |
||||
#define ESP_WM_LITE_DEBUG_OUTPUT Serial |
||||
|
||||
#define _ESP_WM_LITE_LOGLEVEL_ 2 |
||||
|
||||
// use builtin LED to show configuration mode
|
||||
#define USE_LED_BUILTIN true |
||||
|
||||
#define USING_MRD true |
||||
|
||||
#if USING_MRD |
||||
#define MULTIRESETDETECTOR_DEBUG true |
||||
|
||||
// Number of seconds after reset during which a
|
||||
// subseqent reset will be considered a double reset.
|
||||
#define MRD_TIMEOUT 10 |
||||
|
||||
// RTC Memory Address for the DoubleResetDetector to use
|
||||
#define MRD_ADDRESS 0 |
||||
|
||||
#if (_ESP_WM_LITE_LOGLEVEL_ > 3) |
||||
#warning Using MULTI_RESETDETECTOR |
||||
#endif |
||||
#else |
||||
#define DOUBLERESETDETECTOR_DEBUG true |
||||
|
||||
// Number of seconds after reset during which a
|
||||
// subseqent reset will be considered a double reset.
|
||||
#define DRD_TIMEOUT 10 |
||||
|
||||
// RTC Memory Address for the DoubleResetDetector to use
|
||||
#define DRD_ADDRESS 0 |
||||
|
||||
#if (_ESP_WM_LITE_LOGLEVEL_ > 3) |
||||
#warning Using DOUBLE_RESETDETECTOR |
||||
#endif |
||||
#endif |
||||
|
||||
/////////////////////////////////////////////
|
||||
|
||||
// LittleFS has higher priority than SPIFFS
|
||||
#if ( defined(ESP_ARDUINO_VERSION_MAJOR) && (ESP_ARDUINO_VERSION_MAJOR >= 2) ) |
||||
#define USE_LITTLEFS true |
||||
#define USE_SPIFFS false |
||||
#elif defined(ARDUINO_ESP32C3_DEV) |
||||
// For core v1.0.6-, ESP32-C3 only supporting SPIFFS and EEPROM. To use v2.0.0+ for LittleFS
|
||||
#define USE_LITTLEFS false |
||||
#define USE_SPIFFS true |
||||
#else |
||||
// For ESP8266, and other boards
|
||||
#define USE_LITTLEFS true |
||||
#define USE_SPIFFS false |
||||
#endif |
||||
|
||||
/////////////////////////////////////////////
|
||||
|
||||
// Add customs headers from v1.2.0
|
||||
#define USING_CUSTOMS_STYLE true |
||||
#define USING_CUSTOMS_HEAD_ELEMENT true |
||||
#define USING_CORS_FEATURE true |
||||
|
||||
/////////////////////////////////////////////
|
||||
|
||||
// Force some params
|
||||
#define TIMEOUT_RECONNECT_WIFI 10000L |
||||
|
||||
// Permit running CONFIG_TIMEOUT_RETRYTIMES_BEFORE_RESET times before reset hardware
|
||||
// to permit user another chance to config. Only if Config Data is valid.
|
||||
// If Config Data is invalid, this has no effect as Config Portal will persist
|
||||
#define RESET_IF_CONFIG_TIMEOUT true |
||||
|
||||
// Permitted range of user-defined CONFIG_TIMEOUT_RETRYTIMES_BEFORE_RESET between 2-100
|
||||
#define CONFIG_TIMEOUT_RETRYTIMES_BEFORE_RESET 5 |
||||
|
||||
// Config Timeout 120s (default 60s). Applicable only if Config Data is Valid
|
||||
#define CONFIG_TIMEOUT 120000L |
||||
|
||||
/////////////////////////////////////////////
|
||||
|
||||
// Permit input only one set of WiFi SSID/PWD. The other can be "NULL or "blank"
|
||||
// Default is false (if not defined) => must input 2 sets of SSID/PWD
|
||||
#define REQUIRE_ONE_SET_SSID_PW true //false
|
||||
|
||||
// Max times to try WiFi per loop() iteration. To avoid blocking issue in loop()
|
||||
// Default 1 if not defined, and minimum 1.
|
||||
#define MAX_NUM_WIFI_RECON_TRIES_PER_LOOP 2 |
||||
|
||||
// Default no interval between recon WiFi if lost
|
||||
// Max permitted interval will be 10mins
|
||||
// Uncomment to use. Be careful, WiFi reconnect will be delayed if using this method
|
||||
// Only use whenever urgent tasks in loop() can't be delayed. But if so, it's better you have to rewrite your code, e.g. using higher priority tasks.
|
||||
//#define WIFI_RECON_INTERVAL 30000
|
||||
|
||||
/////////////////////////////////////////////
|
||||
|
||||
// Permit reset hardware if no WiFi to permit user another chance to access Config Portal.
|
||||
#define RESET_IF_NO_WIFI false |
||||
|
||||
/////////////////////////////////////////////
|
||||
|
||||
#define USE_DYNAMIC_PARAMETERS true |
||||
|
||||
/////////////////////////////////////////////
|
||||
|
||||
#define SCAN_WIFI_NETWORKS true |
||||
|
||||
// To be able to manually input SSID, not from a scanned SSID lists
|
||||
#define MANUAL_SSID_INPUT_ALLOWED true |
||||
|
||||
// From 2-15
|
||||
#define MAX_SSID_IN_LIST 8 |
||||
|
||||
/////////////////////////////////////////////
|
||||
|
||||
// Optional, to use Board Name in Menu
|
||||
#define USING_BOARD_NAME true |
||||
|
||||
/////////////////////////////////////////////
|
||||
|
||||
#include <ESP_WiFiManager_Lite.h> |
||||
|
||||
#if ESP8266 |
||||
#define HOST_NAME "ESP8266-Controller" |
||||
#else |
||||
#define HOST_NAME "ESP32-Controller" |
||||
#endif |
||||
|
||||
#ifdef LED_BUILTIN |
||||
#define LED_PIN LED_BUILTIN |
||||
#else |
||||
#define LED_PIN 13 |
||||
#endif |
||||
|
||||
#endif //defines_h
|
||||
@ -0,0 +1,74 @@
@@ -0,0 +1,74 @@
|
||||
/****************************************************************************************************************************
|
||||
dynamicParams.h |
||||
For ESP8266 / ESP32 boards |
||||
|
||||
ESP_WiFiManager_Lite (https://github.com/khoih-prog/ESP_WiFiManager_Lite) is a library
|
||||
for the ESP32/ESP8266 boards to enable store Credentials in EEPROM/SPIFFS/LittleFS for easy
|
||||
configuration/reconfiguration and autoconnect/autoreconnect of WiFi and other services without Hardcoding. |
||||
|
||||
Built by Khoi Hoang https://github.com/khoih-prog/ESP_WiFiManager_Lite
|
||||
Licensed under MIT license |
||||
*****************************************************************************************************************************/ |
||||
|
||||
#ifndef dynamicParams_h |
||||
#define dynamicParams_h |
||||
|
||||
#include "defines.h" |
||||
|
||||
// USE_DYNAMIC_PARAMETERS defined in defined.h
|
||||
|
||||
/////////////// Start dynamic Credentials ///////////////
|
||||
|
||||
//Defined in <ESP_WiFiManager_Lite.h>
|
||||
/**************************************
|
||||
#define MAX_ID_LEN 5 |
||||
#define MAX_DISPLAY_NAME_LEN 16 |
||||
|
||||
typedef struct |
||||
{ |
||||
char id [MAX_ID_LEN + 1]; |
||||
char displayName [MAX_DISPLAY_NAME_LEN + 1]; |
||||
char *pdata; |
||||
uint8_t maxlen; |
||||
} MenuItem; |
||||
**************************************/ |
||||
|
||||
#if USE_DYNAMIC_PARAMETERS |
||||
|
||||
#define MAX_BLYNK_SERVER_LEN 34 |
||||
#define MAX_BLYNK_TOKEN_LEN 34 |
||||
|
||||
char Blynk_Server1 [MAX_BLYNK_SERVER_LEN + 1] = "account.duckdns.org"; |
||||
char Blynk_Token1 [MAX_BLYNK_TOKEN_LEN + 1] = "token1"; |
||||
|
||||
char Blynk_Server2 [MAX_BLYNK_SERVER_LEN + 1] = "account.ddns.net"; |
||||
char Blynk_Token2 [MAX_BLYNK_TOKEN_LEN + 1] = "token2"; |
||||
|
||||
#define MAX_BLYNK_PORT_LEN 6 |
||||
char Blynk_Port [MAX_BLYNK_PORT_LEN + 1] = "8080"; |
||||
|
||||
#define MAX_MQTT_SERVER_LEN 34 |
||||
char MQTT_Server [MAX_MQTT_SERVER_LEN + 1] = "mqtt.duckdns.org"; |
||||
|
||||
MenuItem myMenuItems [] = |
||||
{ |
||||
{ "sv1", "Blynk Server1", Blynk_Server1, MAX_BLYNK_SERVER_LEN }, |
||||
{ "tk1", "Token1", Blynk_Token1, MAX_BLYNK_TOKEN_LEN }, |
||||
{ "sv2", "Blynk Server2", Blynk_Server2, MAX_BLYNK_SERVER_LEN }, |
||||
{ "tk2", "Token2", Blynk_Token2, MAX_BLYNK_TOKEN_LEN }, |
||||
{ "prt", "Port", Blynk_Port, MAX_BLYNK_PORT_LEN }, |
||||
{ "mqt", "MQTT Server", MQTT_Server, MAX_MQTT_SERVER_LEN }, |
||||
}; |
||||
|
||||
uint16_t NUM_MENU_ITEMS = sizeof(myMenuItems) / sizeof(MenuItem); //MenuItemSize;
|
||||
|
||||
#else |
||||
|
||||
MenuItem myMenuItems [] = {}; |
||||
|
||||
uint16_t NUM_MENU_ITEMS = 0; |
||||
|
||||
#endif //USE_DYNAMIC_PARAMETERS
|
||||
|
||||
|
||||
#endif //dynamicParams_h
|
||||
Loading…
Reference in new issue