From b457174c77b574a2ff0bbf0602f9c940d8e030a7 Mon Sep 17 00:00:00 2001 From: Khoi Hoang <57012152+khoih-prog@users.noreply.github.com> Date: Sat, 10 Dec 2022 17:45:43 -0500 Subject: [PATCH] v1.0.0 for `ESP8266 + LwIP W5100 / W5100S` #### Releases v1.0.0 1. Initial coding to port [ESPAsync_WiFiManager](https://github.com/khoih-prog/ESPAsync_WiFiManager) to ESP8266 boards using `LwIP W5100 / W5100S Ethernet`. 2. Use `allman astyle` --- .codespellrc | 7 + CONTRIBUTING.md | 79 + Images/Configuration_AIO_MQTT.png | Bin 0 -> 36319 bytes Images/Configuration_Standard.png | Bin 0 -> 16862 bytes Images/Info.png | Bin 0 -> 62785 bytes Images/Main.png | Bin 0 -> 13218 bytes Images/Saved.png | Bin 0 -> 2478 bytes Images/Wiznet-Ethernet-Hat_RP2040.png | Bin 0 -> 321362 bytes changelog.md | 33 + .../Async_ConfigOnDoubleReset.ino | 694 ++++++++ .../Async_ConfigOnDoubleReset_TZ.ino | 696 ++++++++ .../Async_ConfigOnSwitch.ino | 797 +++++++++ .../Async_ConfigOnSwitchFS.ino | 1021 +++++++++++ .../Async_ConfigPortalParamsOnSwitch.ino | 911 ++++++++++ .../Async_ESP_FSWebServer.ino | 807 +++++++++ examples/Async_ESP_FSWebServer/README.md | 72 + .../data/CanadaFlag_1.png | Bin 0 -> 41214 bytes .../data/CanadaFlag_2.png | Bin 0 -> 8311 bytes .../data/CanadaFlag_3.jpg | Bin 0 -> 11156 bytes .../Async_ESP_FSWebServer/data/edit.htm.gz | Bin 0 -> 4116 bytes .../Async_ESP_FSWebServer/data/favicon.ico | Bin 0 -> 1150 bytes .../Async_ESP_FSWebServer/data/graphs.js.gz | Bin 0 -> 1971 bytes examples/Async_ESP_FSWebServer/data/index.htm | 97 ++ .../pics/async-esp8266fs.local.png | Bin 0 -> 20450 bytes .../pics/async-esp8266fs.local_edit.png | Bin 0 -> 75262 bytes .../Async_ESP_FSWebServer_DRD.ino | 872 ++++++++++ examples/Async_ESP_FSWebServer_DRD/README.md | 72 + .../data/CanadaFlag_1.png | Bin 0 -> 41214 bytes .../data/CanadaFlag_2.png | Bin 0 -> 8311 bytes .../data/CanadaFlag_3.jpg | Bin 0 -> 11156 bytes .../data/edit.htm.gz | Bin 0 -> 4116 bytes .../data/favicon.ico | Bin 0 -> 1150 bytes .../data/graphs.js.gz | Bin 0 -> 1971 bytes .../Async_ESP_FSWebServer_DRD/data/index.htm | 97 ++ .../pics/async-esp8266fs.local.png | Bin 0 -> 20450 bytes .../pics/async-esp8266fs.local_edit.png | Bin 0 -> 75262 bytes .../pics/esp8266fs.local.png | Bin 0 -> 46397 bytes .../pics/esp8266fs.local_edit.png | Bin 0 -> 79213 bytes keywords.txt | 92 + library.json | 50 + library.properties | 12 + platformio/platformio.ini | 98 ++ src/AsyncESP8266_W5100_Manager.h | 33 + src/AsyncESP8266_W5100_Manager.hpp | 728 ++++++++ src/AsyncESP8266_W5100_Manager_Debug.h | 92 + src/AsyncESP8266_W5100_Manager_Impl.h | 1194 +++++++++++++ src/utils/TZ.h | 1526 +++++++++++++++++ travis/common.sh | 51 + utils/astyle_library.conf | 70 + utils/restyle.sh | 6 + 50 files changed, 10207 insertions(+) create mode 100644 .codespellrc create mode 100644 CONTRIBUTING.md create mode 100644 Images/Configuration_AIO_MQTT.png create mode 100644 Images/Configuration_Standard.png create mode 100644 Images/Info.png create mode 100644 Images/Main.png create mode 100644 Images/Saved.png create mode 100644 Images/Wiznet-Ethernet-Hat_RP2040.png create mode 100644 changelog.md create mode 100644 examples/Async_ConfigOnDoubleReset/Async_ConfigOnDoubleReset.ino create mode 100644 examples/Async_ConfigOnDoubleReset_TZ/Async_ConfigOnDoubleReset_TZ.ino create mode 100644 examples/Async_ConfigOnSwitch/Async_ConfigOnSwitch.ino create mode 100644 examples/Async_ConfigOnSwitchFS/Async_ConfigOnSwitchFS.ino create mode 100644 examples/Async_ConfigPortalParamsOnSwitch/Async_ConfigPortalParamsOnSwitch.ino create mode 100644 examples/Async_ESP_FSWebServer/Async_ESP_FSWebServer.ino create mode 100644 examples/Async_ESP_FSWebServer/README.md create mode 100644 examples/Async_ESP_FSWebServer/data/CanadaFlag_1.png create mode 100644 examples/Async_ESP_FSWebServer/data/CanadaFlag_2.png create mode 100644 examples/Async_ESP_FSWebServer/data/CanadaFlag_3.jpg create mode 100644 examples/Async_ESP_FSWebServer/data/edit.htm.gz create mode 100644 examples/Async_ESP_FSWebServer/data/favicon.ico create mode 100644 examples/Async_ESP_FSWebServer/data/graphs.js.gz create mode 100644 examples/Async_ESP_FSWebServer/data/index.htm create mode 100644 examples/Async_ESP_FSWebServer/pics/async-esp8266fs.local.png create mode 100644 examples/Async_ESP_FSWebServer/pics/async-esp8266fs.local_edit.png create mode 100644 examples/Async_ESP_FSWebServer_DRD/Async_ESP_FSWebServer_DRD.ino create mode 100644 examples/Async_ESP_FSWebServer_DRD/README.md create mode 100644 examples/Async_ESP_FSWebServer_DRD/data/CanadaFlag_1.png create mode 100644 examples/Async_ESP_FSWebServer_DRD/data/CanadaFlag_2.png create mode 100644 examples/Async_ESP_FSWebServer_DRD/data/CanadaFlag_3.jpg create mode 100644 examples/Async_ESP_FSWebServer_DRD/data/edit.htm.gz create mode 100644 examples/Async_ESP_FSWebServer_DRD/data/favicon.ico create mode 100644 examples/Async_ESP_FSWebServer_DRD/data/graphs.js.gz create mode 100644 examples/Async_ESP_FSWebServer_DRD/data/index.htm create mode 100644 examples/Async_ESP_FSWebServer_DRD/pics/async-esp8266fs.local.png create mode 100644 examples/Async_ESP_FSWebServer_DRD/pics/async-esp8266fs.local_edit.png create mode 100644 examples/Async_ESP_FSWebServer_DRD/pics/esp8266fs.local.png create mode 100644 examples/Async_ESP_FSWebServer_DRD/pics/esp8266fs.local_edit.png create mode 100644 keywords.txt create mode 100644 library.json create mode 100644 library.properties create mode 100644 platformio/platformio.ini create mode 100644 src/AsyncESP8266_W5100_Manager.h create mode 100644 src/AsyncESP8266_W5100_Manager.hpp create mode 100644 src/AsyncESP8266_W5100_Manager_Debug.h create mode 100644 src/AsyncESP8266_W5100_Manager_Impl.h create mode 100644 src/utils/TZ.h create mode 100644 travis/common.sh create mode 100644 utils/astyle_library.conf create mode 100644 utils/restyle.sh diff --git a/.codespellrc b/.codespellrc new file mode 100644 index 0000000..00fe362 --- /dev/null +++ b/.codespellrc @@ -0,0 +1,7 @@ +# See: https://github.com/codespell-project/codespell#using-a-config-file +[codespell] +# In the event of a false positive, add the problematic word, in all lowercase, to a comma-separated list here: +ignore-words-list = , +check-filenames = +check-hidden = +skip = ./.git,./src,./examples,./Packages_Patches,./LibraryPatches diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..5ef228f --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,79 @@ +## Contributing to AsyncESP8266_W5100_Manager + +### Reporting Bugs + +Please report bugs in AsyncESP8266_W5100_Manager if you find them. + +However, before reporting a bug please check through the following: + +* [Existing Open Issues](https://github.com/khoih-prog/AsyncESP8266_W5100_Manager/issues) - someone might have already encountered this. + +If you don't find anything, please [open a new issue](https://github.com/khoih-prog/AsyncESP8266_W5100_Manager/issues/new). + +### How to submit a bug report + +Please ensure to specify the following: + +* Arduino IDE version (e.g. 1.8.19) or Platform.io version +* Board Core Version (e.g. ESP8266 core v3.0.2) +* Contextual information (e.g. what you were trying to achieve) +* Simplest possible steps to reproduce +* Anything that might be relevant in your opinion, such as: + * Operating system (Windows, Ubuntu, etc.) and the output of `uname -a` + * Network configuration + + +Please be educated, civilized and constructive. Disrespective posts against [GitHub Code of Conduct](https://docs.github.com/en/site-policy/github-terms/github-event-code-of-conduct) will be ignored and deleted. + + +### Example + +``` +Arduino IDE version: 1.8.19 +ESP8266 Core Version v3.0.2 +ESP8266_NODEMCU +OS: Ubuntu 20.04 LTS +Linux xy-Inspiron-3593 5.15.0-56-generic #62~20.04.1-Ubuntu SMP Tue Nov 22 21:24:20 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux + +Context: +I encountered a crash while using this library +Steps to reproduce: +1. ... +2. ... +3. ... +4. ... +``` + +### Additional context + +Add any other context about the problem here. + +--- + +### Sending Feature Requests + +Feel free to post feature requests. It's helpful if you can explain exactly why the feature would be useful. + +There are usually some outstanding feature requests in the [existing issues list](https://github.com/khoih-prog/AsyncESP8266_W5100_Manager/issues?q=is%3Aopen+is%3Aissue+label%3Aenhancement), feel free to add comments to them. + +--- + +### Sending Pull Requests + +Pull Requests with changes and fixes are also welcome! + +Please use the `astyle` to reformat the updated library code as follows (demo for Ubuntu Linux) + +1. Change directory to the library GitHub + +``` +xy@xy-Inspiron-3593:~$ cd Arduino/xy/AsyncESP8266_W5100_Manager_GitHub/ +xy@xy-Inspiron-3593:~/Arduino/xy/AsyncESP8266_W5100_Manager_GitHub$ +``` + +2. Issue astyle command + +``` +xy@xy-Inspiron-3593:~/Arduino/xy/AsyncESP8266_W5100_Manager_GitHub$ bash utils/restyle.sh +``` + diff --git a/Images/Configuration_AIO_MQTT.png b/Images/Configuration_AIO_MQTT.png new file mode 100644 index 0000000000000000000000000000000000000000..75ad6cae61aee038fffedbb4181e0538c6f26ded GIT binary patch literal 36319 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 OAnq+@ZL;yK9gy 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 literal 0 HcmV?d00001 diff --git a/Images/Info.png b/Images/Info.png new file mode 100644 index 0000000000000000000000000000000000000000..c23a91153af4ffa8c931e91bfd3cf09f6d8d720d GIT binary patch literal 62785 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 literal 0 HcmV?d00001 diff --git a/Images/Saved.png b/Images/Saved.png new file mode 100644 index 0000000000000000000000000000000000000000..a4c89cb9d7076c3e3c9a8e06ba0bd14673eaf9b5 GIT binary patch literal 2478 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 Fe*ystmM8!K literal 0 HcmV?d00001 diff --git a/Images/Wiznet-Ethernet-Hat_RP2040.png b/Images/Wiznet-Ethernet-Hat_RP2040.png new file mode 100644 index 0000000000000000000000000000000000000000..b3326c42205f410cd4da8451cc31cd197e496542 GIT binary patch literal 321362 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%0AN0QUpsY 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 u!p#G)ew+HAjuT#I-`VE_Y!x4zQwq^{71d%{3D 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 to my libraries using BuyMeACoffee + + + +--- +--- + +## Table of contents + +* [Changelog](#changelog) + * [Releases v1.0.0](#releases-v100) + + + +--- +--- + +## Changelog + +#### Releases v1.0.0 + +1. Initial coding to port [ESPAsync_WiFiManager](https://github.com/khoih-prog/ESPAsync_WiFiManager) to ESP8266 boards using `LwIP W5100 / W5100S Ethernet`. +2. Use `allman astyle` + + diff --git a/examples/Async_ConfigOnDoubleReset/Async_ConfigOnDoubleReset.ino b/examples/Async_ConfigOnDoubleReset/Async_ConfigOnDoubleReset.ino new file mode 100644 index 0000000..a728b27 --- /dev/null +++ b/examples/Async_ConfigOnDoubleReset/Async_ConfigOnDoubleReset.ino @@ -0,0 +1,694 @@ +/**************************************************************************************************************************** + Async_ConfigOnDoubleReset.ino + For Ethernet shields using ESP8266_W5100 (ESP8266 + LwIP W5100, W5100S) + + WebServer_ESP8266_W5100 is a library for the ESP8266 with Ethernet W5100, W5100S to run WebServer + + Modified from + 1. Tzapu (https://github.com/tzapu/WiFiManager) + 2. Ken Taylor (https://github.com/kentaylor) + 3. Alan Steremberg (https://github.com/alanswx/ESPAsyncWiFiManager) + 4. Khoi Hoang (https://github.com/khoih-prog/ESPAsync_WiFiManager) + + Built by Khoi Hoang https://github.com/khoih-prog/AsyncESP8266_W5100_Manager + Licensed under MIT license + *****************************************************************************************************************************/ +/**************************************************************************************************************************** + This example will open a configuration portal when the reset button is pressed twice. + This method works well on Wemos boards which have a single reset button on board. It avoids using a pin for launching the configuration portal. + + Settings + There are two values to be set in the sketch. + + DRD_TIMEOUT - Number of seconds to wait for the second reset. Set to 10 in the example. + DRD_ADDRESS - The address in ESP8266 RTC RAM to store the flag. This memory must not be used for other purposes in the same sketch. Set to 0 in the example. + + This example, originally relied on the Double Reset Detector library from https://github.com/datacute/DoubleResetDetector + To support ESP32, use ESP_DoubleResetDetector library from //https://github.com/khoih-prog/ESP_DoubleResetDetector + *****************************************************************************************************************************/ + +#if !( defined(ESP8266) ) + #error This code is intended to run on the (ESP8266 + W5100) platform! Please check your Tools->Board setting. +#endif + +// Use from 0 to 4. Higher number, more debugging messages and memory usage. +#define _ESPASYNC_ETH_MGR_LOGLEVEL_ 4 + +// To not display stored SSIDs and PWDs on Config Portal, select false. Default is true +// Even the stored Credentials are not display, just leave them all blank to reconnect and reuse the stored Credentials +//#define DISPLAY_STORED_CREDENTIALS_IN_CP false + +////////////////////////////////////////////////////////////// +// Using GPIO4, GPIO16, or GPIO5 +#define CSPIN 16 + +////////////////////////////////////////////////////////// + +#include + +#include //https://github.com/esp8266/Arduino +//needed for library +#include + +#define USE_LITTLEFS true + +#if USE_LITTLEFS + #include + FS* filesystem = &LittleFS; + #define FileFS LittleFS + #define FS_Name "LittleFS" +#else + FS* filesystem = &SPIFFS; + #define FileFS SPIFFS + #define FS_Name "SPIFFS" +#endif + +////////////////////////////////////////////////////////// + +#define ESP_getChipId() (ESP.getChipId()) + +#define LED_ON LOW +#define LED_OFF HIGH + +////////////////////////////////////////////////////////// + +// These defines must be put before #include +// to select where to store DoubleResetDetector's variable. +// For ESP32, You must select one to be true (EEPROM or SPIFFS) +// For ESP8266, You must select one to be true (RTC, EEPROM, SPIFFS or LITTLEFS) +// Otherwise, library will use default EEPROM storage + +// These defines must be put before #include +// to select where to store DoubleResetDetector's variable. +// For ESP32, You must select one to be true (EEPROM or SPIFFS) +// Otherwise, library will use default EEPROM storage + +// For DRD +// These defines must be put before #include +// to select where to store DoubleResetDetector's variable. +// For ESP8266, You must select one to be true (RTC, EEPROM, SPIFFS or LITTLEFS) +// Otherwise, library will use default EEPROM storage +#if USE_LITTLEFS + #define ESP_DRD_USE_LITTLEFS true + #define ESP_DRD_USE_SPIFFS false +#else + #define ESP_DRD_USE_LITTLEFS false + #define ESP_DRD_USE_SPIFFS true +#endif + +#define ESP_DRD_USE_EEPROM false +#define ESP8266_DRD_USE_RTC false + +#define DOUBLERESETDETECTOR_DEBUG true //false + +#include //https://github.com/khoih-prog/ESP_DoubleResetDetector + +// 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 + +//DoubleResetDetector drd(DRD_TIMEOUT, DRD_ADDRESS); +DoubleResetDetector* drd; + +////////////////////////////////////////////////////////// + +// Onboard LED I/O pin on NodeMCU board +const int PIN_LED = 2; // D4 on NodeMCU and WeMos. GPIO2/ADC12 of ESP32. Controls the onboard LED. + +// You only need to format the filesystem once +//#define FORMAT_FILESYSTEM true +#define FORMAT_FILESYSTEM false + +////////////////////////////////////////////////////////// + +// Assuming max 49 chars +#define TZNAME_MAX_LEN 50 +#define TIMEZONE_MAX_LEN 50 + +typedef struct +{ + char TZ_Name[TZNAME_MAX_LEN]; // "America/Toronto" + char TZ[TIMEZONE_MAX_LEN]; // "EST5EDT,M3.2.0,M11.1.0" + uint16_t checksum; +} EthConfig; + +EthConfig Ethconfig; + +#define CONFIG_FILENAME F("/eth_cred.dat") + +////////////////////////////////////////////////////////// + +// Indicates whether ESP has credentials saved from previous session, or double reset detected +bool initialConfig = false; + +// Use false if you don't like to display Available Pages in Information Page of Config Portal +// Comment out or use true to display Available Pages in Information Page of Config Portal +// Must be placed before #include +#define USE_AVAILABLE_PAGES true //false + +// To permit disable/enable StaticIP configuration in Config Portal from sketch. Valid only if DHCP is used. +// You'll loose the feature of dynamically changing from DHCP to static IP, or vice versa +// You have to explicitly specify false to disable the feature. +//#define USE_STATIC_IP_CONFIG_IN_CP false + +// Use false to disable NTP config. Advisable when using Cellphone, Tablet to access Config Portal. +// See Issue 23: On Android phone ConfigPortal is unresponsive (https://github.com/khoih-prog/ESP_WiFiManager/issues/23) +#define USE_ESP_ETH_MANAGER_NTP false + +// Just use enough to save memory. On ESP8266, can cause blank ConfigPortal screen +// if using too much memory +#define USING_AFRICA false +#define USING_AMERICA true +#define USING_ANTARCTICA false +#define USING_ASIA false +#define USING_ATLANTIC false +#define USING_AUSTRALIA false +#define USING_EUROPE false +#define USING_INDIAN false +#define USING_PACIFIC false +#define USING_ETC_GMT false + +// Use true to enable CloudFlare NTP service. System can hang if you don't have Internet access while accessing CloudFlare +// See Issue #21: CloudFlare link in the default portal (https://github.com/khoih-prog/ESP_WiFiManager/issues/21) +#define USE_CLOUDFLARE_NTP false + +#define USING_CORS_FEATURE true + +//////////////////////////////////////////// + +// Use USE_DHCP_IP == true for dynamic DHCP IP, false to use static IP which you have to change accordingly to your network +#if (defined(USE_STATIC_IP_CONFIG_IN_CP) && !USE_STATIC_IP_CONFIG_IN_CP) + // Force DHCP to be true + #if defined(USE_DHCP_IP) + #undef USE_DHCP_IP + #endif + #define USE_DHCP_IP true +#else + // You can select DHCP or Static IP here + //#define USE_DHCP_IP true + #define USE_DHCP_IP false +#endif + +#if ( USE_DHCP_IP ) + // Use DHCP + + #if (_ESPASYNC_ETH_MGR_LOGLEVEL_ > 3) + #warning Using DHCP IP + #endif + + IPAddress stationIP = IPAddress(0, 0, 0, 0); + IPAddress gatewayIP = IPAddress(192, 168, 2, 1); + IPAddress netMask = IPAddress(255, 255, 255, 0); + +#else + // Use static IP + + #if (_ESPASYNC_ETH_MGR_LOGLEVEL_ > 3) + #warning Using static IP + #endif + + IPAddress stationIP = IPAddress(192, 168, 2, 186); + IPAddress gatewayIP = IPAddress(192, 168, 2, 1); + IPAddress netMask = IPAddress(255, 255, 255, 0); +#endif + +////////////////////////////////////////////////////////// + +#define USE_CONFIGURABLE_DNS true + +IPAddress dns1IP = gatewayIP; +IPAddress dns2IP = IPAddress(8, 8, 8, 8); + +#include //https://github.com/khoih-prog/AsyncESP8266_W5100_Manager + +#define HTTP_PORT 80 + +////////////////////////////////////////////////////////// + +/****************************************** + // Defined in AsyncESP8266_W5100_Manager.hpp + typedef struct + { + IPAddress _sta_static_ip; + IPAddress _sta_static_gw; + IPAddress _sta_static_sn; + #if USE_CONFIGURABLE_DNS + IPAddress _sta_static_dns1; + IPAddress _sta_static_dns2; + #endif + } ETH_STA_IPConfig; +******************************************/ + +ETH_STA_IPConfig EthSTA_IPconfig; + +////////////////////////////////////////////////////////// + +void initSTAIPConfigStruct(ETH_STA_IPConfig &in_EthSTA_IPconfig) +{ + in_EthSTA_IPconfig._sta_static_ip = stationIP; + in_EthSTA_IPconfig._sta_static_gw = gatewayIP; + in_EthSTA_IPconfig._sta_static_sn = netMask; +#if USE_CONFIGURABLE_DNS + in_EthSTA_IPconfig._sta_static_dns1 = dns1IP; + in_EthSTA_IPconfig._sta_static_dns2 = dns2IP; +#endif +} + +////////////////////////////////////////////////////////// + +void displayIPConfigStruct(ETH_STA_IPConfig in_EthSTA_IPconfig) +{ + LOGERROR3(F("stationIP ="), in_EthSTA_IPconfig._sta_static_ip, ", gatewayIP =", in_EthSTA_IPconfig._sta_static_gw); + LOGERROR1(F("netMask ="), in_EthSTA_IPconfig._sta_static_sn); +#if USE_CONFIGURABLE_DNS + LOGERROR3(F("dns1IP ="), in_EthSTA_IPconfig._sta_static_dns1, ", dns2IP =", in_EthSTA_IPconfig._sta_static_dns2); +#endif +} + +////////////////////////////////////////////////////////// + +#if USE_ESP_ETH_MANAGER_NTP +void printLocalTime() +{ + static time_t now; + + now = time(nullptr); + + if ( now > 1451602800 ) + { + Serial.print("Local Date/Time: "); + Serial.print(ctime(&now)); + } +} +#endif + +////////////////////////////////////////////////////////// + +void heartBeatPrint() +{ +#if USE_ESP_ETH_MANAGER_NTP + printLocalTime(); +#else + static int num = 1; + + if (eth.connected()) + Serial.print(F("H")); // H means connected to Ethernet + else + Serial.print(F("F")); // F means not connected to Ethernet + + if (num == 80) + { + Serial.println(); + num = 1; + } + else if (num++ % 10 == 0) + { + Serial.print(F(" ")); + } + +#endif +} + +////////////////////////////////////////////////////////// + +void check_status() +{ + static ulong checkstatus_timeout = 0; + + static ulong current_millis; + +#if USE_ESP_ETH_MANAGER_NTP +#define HEARTBEAT_INTERVAL 60000L +#else +#define HEARTBEAT_INTERVAL 10000L +#endif + + current_millis = millis(); + + // Print hearbeat every HEARTBEAT_INTERVAL (10) seconds. + if ((current_millis > checkstatus_timeout) || (checkstatus_timeout == 0)) + { + heartBeatPrint(); + checkstatus_timeout = current_millis + HEARTBEAT_INTERVAL; + } +} + +////////////////////////////////////////////////////////// + +int calcChecksum(uint8_t* address, uint16_t sizeToCalc) +{ + uint16_t checkSum = 0; + + for (uint16_t index = 0; index < sizeToCalc; index++) + { + checkSum += * ( ( (byte*) address ) + index); + } + + return checkSum; +} + +////////////////////////////////////////////////////////// + +bool loadConfigData() +{ + File file = FileFS.open(CONFIG_FILENAME, "r"); + LOGERROR(F("LoadCfgFile ")); + + memset((void *) &Ethconfig, 0, sizeof(Ethconfig)); + memset((void *) &EthSTA_IPconfig, 0, sizeof(EthSTA_IPconfig)); + + if (file) + { + file.readBytes((char *) &Ethconfig, sizeof(Ethconfig)); + file.readBytes((char *) &EthSTA_IPconfig, sizeof(EthSTA_IPconfig)); + file.close(); + + LOGERROR(F("OK")); + + if ( Ethconfig.checksum != calcChecksum( (uint8_t*) &Ethconfig, sizeof(Ethconfig) - sizeof(Ethconfig.checksum) ) ) + { + LOGERROR(F("Ethconfig checksum wrong")); + + return false; + } + + displayIPConfigStruct(EthSTA_IPconfig); + + return true; + } + else + { + LOGERROR(F("failed")); + + return false; + } +} + +////////////////////////////////////////////////////////// + +void saveConfigData() +{ + File file = FileFS.open(CONFIG_FILENAME, "w"); + LOGERROR(F("SaveCfgFile ")); + + if (file) + { + Ethconfig.checksum = calcChecksum( (uint8_t*) &Ethconfig, sizeof(Ethconfig) - sizeof(Ethconfig.checksum) ); + + file.write((uint8_t*) &Ethconfig, sizeof(Ethconfig)); + + displayIPConfigStruct(EthSTA_IPconfig); + + file.write((uint8_t*) &EthSTA_IPconfig, sizeof(EthSTA_IPconfig)); + file.close(); + + LOGERROR(F("OK")); + } + else + { + LOGERROR(F("failed")); + } +} + +////////////////////////////////////////////////////////// + +void initEthernet() +{ + SPI.begin(); + SPI.setClockDivider(SPI_CLOCK_DIV4); + SPI.setBitOrder(MSBFIRST); + SPI.setDataMode(SPI_MODE0); + + LOGWARN(F("Default SPI pinout:")); + LOGWARN1(F("MOSI:"), MOSI); + LOGWARN1(F("MISO:"), MISO); + LOGWARN1(F("SCK:"), SCK); + LOGWARN1(F("CS:"), CSPIN); + LOGWARN(F("=========================")); + +#if !USING_DHCP + //eth.config(localIP, gateway, netMask, gateway); + eth.config(EthSTA_IPconfig._sta_static_ip, EthSTA_IPconfig._sta_static_gw, EthSTA_IPconfig._sta_static_sn, + EthSTA_IPconfig._sta_static_dns1); +#endif + + eth.setDefault(); + + if (!eth.begin()) + { + Serial.println("No Ethernet hardware ... Stop here"); + + while (true) + { + delay(1000); + } + } + else + { + Serial.print("Connecting to network : "); + + while (!eth.connected()) + { + Serial.print("."); + delay(1000); + } + } + + Serial.println(); + +#if USING_DHCP + Serial.print("Ethernet DHCP IP address: "); +#else + Serial.print("Ethernet Static IP address: "); +#endif + + Serial.println(eth.localIP()); +} + +////////////////////////////////////////////////////////// + +void setup() +{ + // put your setup code here, to run once: + // initialize the LED digital pin as an output. + pinMode(PIN_LED, OUTPUT); + + Serial.begin(115200); + + while (!Serial && millis() < 5000); + + delay(200); + + Serial.print(F("\nStarting Async_ConfigOnDoubleReset using ")); + Serial.print(FS_Name); + Serial.print(F(" on ")); + Serial.print(ARDUINO_BOARD); + Serial.print(F(" with ")); + Serial.println(SHIELD_TYPE); + Serial.println(ASYNC_ESP8266_W5100_MANAGER_VERSION); + Serial.println(ESP_DOUBLE_RESET_DETECTOR_VERSION); + + Serial.setDebugOutput(false); + +#if FORMAT_FILESYSTEM + Serial.println(F("Forced Formatting.")); + FileFS.format(); +#endif + + // Format FileFS if not yet + if (!FileFS.begin()) + { + FileFS.format(); + + Serial.println(F("SPIFFS/LittleFS failed! Already tried formatting.")); + + if (!FileFS.begin()) + { + // prevents debug info from the library to hide err message. + delay(100); + +#if USE_LITTLEFS + Serial.println(F("LittleFS failed!. Please use SPIFFS or EEPROM. Stay forever")); +#else + Serial.println(F("SPIFFS failed!. Please use LittleFS or EEPROM. Stay forever")); +#endif + + while (true) + { + delay(1); + } + } + } + + drd = new DoubleResetDetector(DRD_TIMEOUT, DRD_ADDRESS); + + unsigned long startedAt = millis(); + + initSTAIPConfigStruct(EthSTA_IPconfig); + + //Local intialization. Once its business is done, there is no need to keep it around + // Use this to default DHCP hostname to ESP8266-XXXXXX + //AsyncESP8266_W5100_Manager AsyncESP8266_W5100_manager(&webServer, &dnsServer); + // Use this to personalize DHCP hostname (RFC952 conformed) + AsyncWebServer webServer(HTTP_PORT); + + AsyncDNSServer dnsServer; + + AsyncESP8266_W5100_Manager AsyncESP8266_W5100_manager(&webServer, &dnsServer, "AsyncConfigOnDoubleReset"); + +#if !USE_DHCP_IP + // Set (static IP, Gateway, Subnetmask, DNS1 and DNS2) or (IP, Gateway, Subnetmask) + AsyncESP8266_W5100_manager.setSTAStaticIPConfig(EthSTA_IPconfig); +#endif + +#if USING_CORS_FEATURE + AsyncESP8266_W5100_manager.setCORSHeader("Your Access-Control-Allow-Origin"); +#endif + + bool configDataLoaded = false; + + if (loadConfigData()) + { + configDataLoaded = true; + + //If no access point name has been previously entered disable timeout + AsyncESP8266_W5100_manager.setConfigPortalTimeout(120); + + Serial.println(F("Got stored Credentials. Timeout 120s for Config Portal")); + +#if USE_ESP_ETH_MANAGER_NTP + + if ( strlen(Ethconfig.TZ_Name) > 0 ) + { + LOGERROR3(F("Current TZ_Name ="), Ethconfig.TZ_Name, F(", TZ = "), Ethconfig.TZ); + + configTime(Ethconfig.TZ, "pool.ntp.org"); + } + else + { + Serial.println(F("Current Timezone is not set. Enter Config Portal to set.")); + } + +#endif + } + else + { + // Enter CP only if no stored Credentials on flash and file + Serial.println(F("Open Config Portal without Timeout: No stored Credentials.")); + initialConfig = true; + } + + ////////////////////////////////// + + // Connect ETH now if using STA + initEthernet(); + + ////////////////////////////////// + + if (drd->detectDoubleReset()) + { + // DRD, disable timeout. + AsyncESP8266_W5100_manager.setConfigPortalTimeout(0); + + Serial.println(F("Open Config Portal without Timeout: Double Reset Detected")); + initialConfig = true; + } + + if (initialConfig) + { + Serial.print(F("Starting configuration portal @ ")); + Serial.println(eth.localIP()); + + digitalWrite(PIN_LED, LED_ON); // turn the LED on by making the voltage LOW to tell us we are in configuration mode. + + //sets timeout in seconds until configuration portal gets turned off. + //If not specified device will remain in configuration mode until + //switched off via webserver or device is restarted. + //AsyncESP8266_W5100_manager.setConfigPortalTimeout(600); + + // Starts an access point + if (!AsyncESP8266_W5100_manager.startConfigPortal()) + Serial.println(F("Not connected to ETH network but continuing anyway.")); + else + { + Serial.println(F("ETH network connected...yeey :)")); + } + +#if USE_ESP_ETH_MANAGER_NTP + String tempTZ = AsyncESP8266_W5100_manager.getTimezoneName(); + + if (strlen(tempTZ.c_str()) < sizeof(Ethconfig.TZ_Name) - 1) + strcpy(Ethconfig.TZ_Name, tempTZ.c_str()); + else + strncpy(Ethconfig.TZ_Name, tempTZ.c_str(), sizeof(Ethconfig.TZ_Name) - 1); + + const char * TZ_Result = AsyncESP8266_W5100_manager.getTZ(Ethconfig.TZ_Name); + + if (strlen(TZ_Result) < sizeof(Ethconfig.TZ) - 1) + strcpy(Ethconfig.TZ, TZ_Result); + else + strncpy(Ethconfig.TZ, TZ_Result, sizeof(Ethconfig.TZ_Name) - 1); + + if ( strlen(Ethconfig.TZ_Name) > 0 ) + { + LOGERROR3(F("Saving current TZ_Name ="), Ethconfig.TZ_Name, F(", TZ = "), Ethconfig.TZ); + + configTime(Ethconfig.TZ, "pool.ntp.org"); + } + else + { + LOGERROR(F("Current Timezone Name is not set. Enter Config Portal to set.")); + } + +#endif + + AsyncESP8266_W5100_manager.getSTAStaticIPConfig(EthSTA_IPconfig); + + saveConfigData(); + +#if !USE_DHCP_IP + + // Reset to use new Static IP, if different from current eth.localIP() + if (eth.localIP() != EthSTA_IPconfig._sta_static_ip) + { + Serial.print(F("Current IP = ")); + Serial.print(eth.localIP()); + Serial.print(F(". Reset to take new IP = ")); + Serial.println(EthSTA_IPconfig._sta_static_ip); + + ESP.reset(); + delay(2000); + } + +#endif + } + + digitalWrite(PIN_LED, LED_OFF); // Turn led off as we are not in configuration mode. + + startedAt = millis(); + + Serial.print(F("After waiting ")); + Serial.print((float) (millis() - startedAt) / 1000); + Serial.print(F(" secs more in setup(), connection result is ")); + + if (eth.connected()) + { + Serial.print(F("connected. Local IP: ")); + Serial.println(eth.localIP()); + } +} + +void loop() +{ + // Call the double reset detector loop method every so often, + // so that it can recognise when the timeout expires. + // You can also call drd.stop() when you wish to no longer + // consider the next reset as a double reset. + drd->loop(); + + // put your main code here, to run repeatedly + check_status(); +} diff --git a/examples/Async_ConfigOnDoubleReset_TZ/Async_ConfigOnDoubleReset_TZ.ino b/examples/Async_ConfigOnDoubleReset_TZ/Async_ConfigOnDoubleReset_TZ.ino new file mode 100644 index 0000000..807e9a9 --- /dev/null +++ b/examples/Async_ConfigOnDoubleReset_TZ/Async_ConfigOnDoubleReset_TZ.ino @@ -0,0 +1,696 @@ +/**************************************************************************************************************************** + Async_ConfigOnDoubleReset_TZ.ino + For Ethernet shields using ESP8266_W5100 (ESP8266 + LwIP W5100, W5100S) + + WebServer_ESP8266_W5100 is a library for the ESP8266 with Ethernet W5100, W5100S to run WebServer + + Modified from + 1. Tzapu (https://github.com/tzapu/WiFiManager) + 2. Ken Taylor (https://github.com/kentaylor) + 3. Alan Steremberg (https://github.com/alanswx/ESPAsyncWiFiManager) + 4. Khoi Hoang (https://github.com/khoih-prog/ESPAsync_WiFiManager) + + Built by Khoi Hoang https://github.com/khoih-prog/AsyncESP8266_W5100_Manager + Licensed under MIT license + *****************************************************************************************************************************/ +/**************************************************************************************************************************** + This example will open a configuration portal when the reset button is pressed twice. + This method works well on Wemos boards which have a single reset button on board. It avoids using a pin for launching the configuration portal. + + Settings + There are two values to be set in the sketch. + + DRD_TIMEOUT - Number of seconds to wait for the second reset. Set to 10 in the example. + DRD_ADDRESS - The address in ESP8266 RTC RAM to store the flag. This memory must not be used for other purposes in the same sketch. Set to 0 in the example. + + This example, originally relied on the Double Reset Detector library from https://github.com/datacute/DoubleResetDetector + To support ESP32, use ESP_DoubleResetDetector library from //https://github.com/khoih-prog/ESP_DoubleResetDetector + *****************************************************************************************************************************/ + +#if !( defined(ESP8266) ) + #error This code is intended to run on the (ESP8266 + W5100) platform! Please check your Tools->Board setting. +#endif + +// Use from 0 to 4. Higher number, more debugging messages and memory usage. +#define _ESPASYNC_ETH_MGR_LOGLEVEL_ 4 + +// To not display stored SSIDs and PWDs on Config Portal, select false. Default is true +// Even the stored Credentials are not display, just leave them all blank to reconnect and reuse the stored Credentials +//#define DISPLAY_STORED_CREDENTIALS_IN_CP false + +////////////////////////////////////////////////////////////// +// Using GPIO4, GPIO16, or GPIO5 +#define CSPIN 16 + +////////////////////////////////////////////////////////// + +#include + +#include //https://github.com/esp8266/Arduino +//needed for library +#include + +#define USE_LITTLEFS true + +#if USE_LITTLEFS + #include + FS* filesystem = &LittleFS; + #define FileFS LittleFS + #define FS_Name "LittleFS" +#else + FS* filesystem = &SPIFFS; + #define FileFS SPIFFS + #define FS_Name "SPIFFS" +#endif + +////////////////////////////////////////////////////////// + +#define ESP_getChipId() (ESP.getChipId()) + +#define LED_ON LOW +#define LED_OFF HIGH + +////////////////////////////////////////////////////////// + +// These defines must be put before #include +// to select where to store DoubleResetDetector's variable. +// For ESP32, You must select one to be true (EEPROM or SPIFFS) +// For ESP8266, You must select one to be true (RTC, EEPROM, SPIFFS or LITTLEFS) +// Otherwise, library will use default EEPROM storage + +// These defines must be put before #include +// to select where to store DoubleResetDetector's variable. +// For ESP32, You must select one to be true (EEPROM or SPIFFS) +// Otherwise, library will use default EEPROM storage + +// For DRD +// These defines must be put before #include +// to select where to store DoubleResetDetector's variable. +// For ESP8266, You must select one to be true (RTC, EEPROM, SPIFFS or LITTLEFS) +// Otherwise, library will use default EEPROM storage +#if USE_LITTLEFS + #define ESP_DRD_USE_LITTLEFS true + #define ESP_DRD_USE_SPIFFS false +#else + #define ESP_DRD_USE_LITTLEFS false + #define ESP_DRD_USE_SPIFFS true +#endif + +#define ESP_DRD_USE_EEPROM false +#define ESP8266_DRD_USE_RTC false + +#define DOUBLERESETDETECTOR_DEBUG true //false + +#include //https://github.com/khoih-prog/ESP_DoubleResetDetector + +// 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 + +//DoubleResetDetector drd(DRD_TIMEOUT, DRD_ADDRESS); +DoubleResetDetector* drd; + +////////////////////////////////////////////////////////// + +// Onboard LED I/O pin on NodeMCU board +//const int LED_BUILTIN = 2; // D4 on NodeMCU and WeMos. GPIO2/ADC12 of ESP32. Controls the onboard LED. + +// You only need to format the filesystem once +//#define FORMAT_FILESYSTEM true +#define FORMAT_FILESYSTEM false + +////////////////////////////////////////////////////////// + +// Assuming max 49 chars +#define TZNAME_MAX_LEN 50 +#define TIMEZONE_MAX_LEN 50 + +typedef struct +{ + char TZ_Name[TZNAME_MAX_LEN]; // "America/Toronto" + char TZ[TIMEZONE_MAX_LEN]; // "EST5EDT,M3.2.0,M11.1.0" + uint16_t checksum; +} EthConfig; + +EthConfig Ethconfig; + +#define CONFIG_FILENAME F("/eth_cred.dat") + +////////////////////////////////////////////////////////// + +// Indicates whether ESP has credentials saved from previous session, or double reset detected +bool initialConfig = false; + +// Use false if you don't like to display Available Pages in Information Page of Config Portal +// Comment out or use true to display Available Pages in Information Page of Config Portal +// Must be placed before #include +#define USE_AVAILABLE_PAGES true //false + +// To permit disable/enable StaticIP configuration in Config Portal from sketch. Valid only if DHCP is used. +// You'll loose the feature of dynamically changing from DHCP to static IP, or vice versa +// You have to explicitly specify false to disable the feature. +//#define USE_STATIC_IP_CONFIG_IN_CP false + +// Use false to disable NTP config. Advisable when using Cellphone, Tablet to access Config Portal. +// See Issue 23: On Android phone ConfigPortal is unresponsive (https://github.com/khoih-prog/ESP_WiFiManager/issues/23) +#define USE_ESP_ETH_MANAGER_NTP true //false + +// Just use enough to save memory. On ESP8266, can cause blank ConfigPortal screen +// if using too much memory +#define USING_AFRICA false +#define USING_AMERICA true +#define USING_ANTARCTICA false +#define USING_ASIA false +#define USING_ATLANTIC false +#define USING_AUSTRALIA false +#define USING_EUROPE false +#define USING_INDIAN false +#define USING_PACIFIC false +#define USING_ETC_GMT false + +// Use true to enable CloudFlare NTP service. System can hang if you don't have Internet access while accessing CloudFlare +// See Issue #21: CloudFlare link in the default portal (https://github.com/khoih-prog/ESP_WiFiManager/issues/21) +#define USE_CLOUDFLARE_NTP false + +#define USING_CORS_FEATURE true + +//////////////////////////////////////////// + +// Use USE_DHCP_IP == true for dynamic DHCP IP, false to use static IP which you have to change accordingly to your network +#if (defined(USE_STATIC_IP_CONFIG_IN_CP) && !USE_STATIC_IP_CONFIG_IN_CP) + // Force DHCP to be true + #if defined(USE_DHCP_IP) + #undef USE_DHCP_IP + #endif + #define USE_DHCP_IP true +#else + // You can select DHCP or Static IP here + //#define USE_DHCP_IP true + #define USE_DHCP_IP false +#endif + +#if ( USE_DHCP_IP ) + // Use DHCP + + #if (_ESPASYNC_ETH_MGR_LOGLEVEL_ > 3) + #warning Using DHCP IP + #endif + + IPAddress stationIP = IPAddress(0, 0, 0, 0); + IPAddress gatewayIP = IPAddress(192, 168, 2, 1); + IPAddress netMask = IPAddress(255, 255, 255, 0); + +#else + // Use static IP + + #if (_ESPASYNC_ETH_MGR_LOGLEVEL_ > 3) + #warning Using static IP + #endif + + IPAddress stationIP = IPAddress(192, 168, 2, 186); + IPAddress gatewayIP = IPAddress(192, 168, 2, 1); + IPAddress netMask = IPAddress(255, 255, 255, 0); +#endif + +//////////////////////////////////////////// + +#define USE_CONFIGURABLE_DNS true + +IPAddress dns1IP = gatewayIP; +IPAddress dns2IP = IPAddress(8, 8, 8, 8); + +#include //https://github.com/khoih-prog/AsyncESP8266_W5100_Manager + +#define HTTP_PORT 80 + +////////////////////////////////////////////////////////////// + +/****************************************** + // Defined in AsyncESP8266_W5100_Manager.hpp + typedef struct + { + IPAddress _sta_static_ip; + IPAddress _sta_static_gw; + IPAddress _sta_static_sn; + #if USE_CONFIGURABLE_DNS + IPAddress _sta_static_dns1; + IPAddress _sta_static_dns2; + #endif + } ETH_STA_IPConfig; +******************************************/ + +ETH_STA_IPConfig EthSTA_IPconfig; + +////////////////////////////////////////////////////////////// + +void initSTAIPConfigStruct(ETH_STA_IPConfig &in_EthSTA_IPconfig) +{ + in_EthSTA_IPconfig._sta_static_ip = stationIP; + in_EthSTA_IPconfig._sta_static_gw = gatewayIP; + in_EthSTA_IPconfig._sta_static_sn = netMask; +#if USE_CONFIGURABLE_DNS + in_EthSTA_IPconfig._sta_static_dns1 = dns1IP; + in_EthSTA_IPconfig._sta_static_dns2 = dns2IP; +#endif +} + +////////////////////////////////////////////////////////////// + +void displayIPConfigStruct(ETH_STA_IPConfig in_EthSTA_IPconfig) +{ + LOGERROR3(F("stationIP ="), in_EthSTA_IPconfig._sta_static_ip, ", gatewayIP =", in_EthSTA_IPconfig._sta_static_gw); + LOGERROR1(F("netMask ="), in_EthSTA_IPconfig._sta_static_sn); +#if USE_CONFIGURABLE_DNS + LOGERROR3(F("dns1IP ="), in_EthSTA_IPconfig._sta_static_dns1, ", dns2IP =", in_EthSTA_IPconfig._sta_static_dns2); +#endif +} + +////////////////////////////////////////////////////////////// + +#if USE_ESP_ETH_MANAGER_NTP +void printLocalTime() +{ + static time_t now; + + now = time(nullptr); + + if ( now > 1451602800 ) + { + Serial.print("Local Date/Time: "); + Serial.print(ctime(&now)); + } +} +#endif + +////////////////////////////////////////////////////////// + +void heartBeatPrint() +{ +#if USE_ESP_ETH_MANAGER_NTP + printLocalTime(); +#else + static int num = 1; + + if (eth.connected()) + Serial.print(F("H")); // H means connected to Ethernet + else + Serial.print(F("F")); // F means not connected to Ethernet + + if (num == 80) + { + Serial.println(); + num = 1; + } + else if (num++ % 10 == 0) + { + Serial.print(F(" ")); + } + +#endif +} + +////////////////////////////////////////////////////////////// + +void check_status() +{ + static ulong checkstatus_timeout = 0; + + static ulong current_millis; + +#if USE_ESP_ETH_MANAGER_NTP +#define HEARTBEAT_INTERVAL 60000L +#else +#define HEARTBEAT_INTERVAL 10000L +#endif + + current_millis = millis(); + + // Print hearbeat every HEARTBEAT_INTERVAL (10) seconds. + if ((current_millis > checkstatus_timeout) || (checkstatus_timeout == 0)) + { + heartBeatPrint(); + checkstatus_timeout = current_millis + HEARTBEAT_INTERVAL; + } +} + +////////////////////////////////////////////////////////////// + +int calcChecksum(uint8_t* address, uint16_t sizeToCalc) +{ + uint16_t checkSum = 0; + + for (uint16_t index = 0; index < sizeToCalc; index++) + { + checkSum += * ( ( (byte*) address ) + index); + } + + return checkSum; +} + +////////////////////////////////////////////////////////////// + +bool loadConfigData() +{ + File file = FileFS.open(CONFIG_FILENAME, "r"); + LOGERROR(F("LoadCfgFile ")); + + memset((void *) &Ethconfig, 0, sizeof(Ethconfig)); + memset((void *) &EthSTA_IPconfig, 0, sizeof(EthSTA_IPconfig)); + + if (file) + { + file.readBytes((char *) &Ethconfig, sizeof(Ethconfig)); + file.readBytes((char *) &EthSTA_IPconfig, sizeof(EthSTA_IPconfig)); + file.close(); + + LOGERROR(F("OK")); + + if ( Ethconfig.checksum != calcChecksum( (uint8_t*) &Ethconfig, sizeof(Ethconfig) - sizeof(Ethconfig.checksum) ) ) + { + LOGERROR(F("Ethconfig checksum wrong")); + + return false; + } + + displayIPConfigStruct(EthSTA_IPconfig); + + return true; + } + else + { + LOGERROR(F("failed")); + + return false; + } +} + +////////////////////////////////////////////////////////////// + +void saveConfigData() +{ + File file = FileFS.open(CONFIG_FILENAME, "w"); + LOGERROR(F("SaveCfgFile ")); + + if (file) + { + Ethconfig.checksum = calcChecksum( (uint8_t*) &Ethconfig, sizeof(Ethconfig) - sizeof(Ethconfig.checksum) ); + + file.write((uint8_t*) &Ethconfig, sizeof(Ethconfig)); + + displayIPConfigStruct(EthSTA_IPconfig); + + file.write((uint8_t*) &EthSTA_IPconfig, sizeof(EthSTA_IPconfig)); + file.close(); + + LOGERROR(F("OK")); + } + else + { + LOGERROR(F("failed")); + } +} + +////////////////////////////////////////////////////////////// + +void initEthernet() +{ + SPI.begin(); + SPI.setClockDivider(SPI_CLOCK_DIV4); + SPI.setBitOrder(MSBFIRST); + SPI.setDataMode(SPI_MODE0); + + LOGWARN(F("Default SPI pinout:")); + LOGWARN1(F("MOSI:"), MOSI); + LOGWARN1(F("MISO:"), MISO); + LOGWARN1(F("SCK:"), SCK); + LOGWARN1(F("CS:"), CSPIN); + LOGWARN(F("=========================")); + +#if !USING_DHCP + //eth.config(localIP, gateway, netMask, gateway); + eth.config(EthSTA_IPconfig._sta_static_ip, EthSTA_IPconfig._sta_static_gw, EthSTA_IPconfig._sta_static_sn, + EthSTA_IPconfig._sta_static_dns1); +#endif + + eth.setDefault(); + + if (!eth.begin()) + { + Serial.println("No Ethernet hardware ... Stop here"); + + while (true) + { + delay(1000); + } + } + else + { + Serial.print("Connecting to network : "); + + while (!eth.connected()) + { + Serial.print("."); + delay(1000); + } + } + + Serial.println(); + +#if USING_DHCP + Serial.print("Ethernet DHCP IP address: "); +#else + Serial.print("Ethernet Static IP address: "); +#endif + + Serial.println(eth.localIP()); +} + +////////////////////////////////////////////////////////////// + +void setup() +{ + // put your setup code here, to run once: + // initialize the LED digital pin as an output. + pinMode(LED_BUILTIN, OUTPUT); + + Serial.begin(115200); + + while (!Serial && millis() < 5000); + + delay(200); + + Serial.print(F("\nStarting Async_ConfigOnDoubleReset_TZ using ")); + Serial.print(FS_Name); + Serial.print(F(" on ")); + Serial.print(ARDUINO_BOARD); + Serial.print(F(" with ")); + Serial.println(SHIELD_TYPE); + Serial.println(ASYNC_ESP8266_W5100_MANAGER_VERSION); + Serial.println(ESP_DOUBLE_RESET_DETECTOR_VERSION); + + Serial.setDebugOutput(false); + +#if FORMAT_FILESYSTEM + Serial.println(F("Forced Formatting.")); + FileFS.format(); +#endif + + // Format FileFS if not yet + if (!FileFS.begin()) + { + FileFS.format(); + + Serial.println(F("SPIFFS/LittleFS failed! Already tried formatting.")); + + if (!FileFS.begin()) + { + // prevents debug info from the library to hide err message. + delay(100); + +#if USE_LITTLEFS + Serial.println(F("LittleFS failed!. Please use SPIFFS or EEPROM. Stay forever")); +#else + Serial.println(F("SPIFFS failed!. Please use LittleFS or EEPROM. Stay forever")); +#endif + + while (true) + { + delay(1); + } + } + } + + drd = new DoubleResetDetector(DRD_TIMEOUT, DRD_ADDRESS); + + unsigned long startedAt = millis(); + + initSTAIPConfigStruct(EthSTA_IPconfig); + + //Local intialization. Once its business is done, there is no need to keep it around + // Use this to default DHCP hostname to ESP8266-XXXXXX + //AsyncESP8266_W5100_Manager AsyncESP8266_W5100_manager(&webServer, &dnsServer); + // Use this to personalize DHCP hostname (RFC952 conformed) + AsyncWebServer webServer(HTTP_PORT); + + AsyncDNSServer dnsServer; + + AsyncESP8266_W5100_Manager AsyncESP8266_W5100_manager(&webServer, &dnsServer, "AsyncConfigOnDoubleReset"); + +#if !USE_DHCP_IP + // Set (static IP, Gateway, Subnetmask, DNS1 and DNS2) or (IP, Gateway, Subnetmask) + AsyncESP8266_W5100_manager.setSTAStaticIPConfig(EthSTA_IPconfig); +#endif + +#if USING_CORS_FEATURE + AsyncESP8266_W5100_manager.setCORSHeader("Your Access-Control-Allow-Origin"); +#endif + + bool configDataLoaded = false; + + if (loadConfigData()) + { + configDataLoaded = true; + + //If no access point name has been previously entered disable timeout + AsyncESP8266_W5100_manager.setConfigPortalTimeout(120); + + Serial.println(F("Got stored Credentials. Timeout 120s for Config Portal")); + +#if USE_ESP_ETH_MANAGER_NTP + + if ( strlen(Ethconfig.TZ_Name) > 0 ) + { + LOGERROR3(F("Current TZ_Name ="), Ethconfig.TZ_Name, F(", TZ = "), Ethconfig.TZ); + + configTime(Ethconfig.TZ, "pool.ntp.org"); + } + else + { + Serial.println(F("Current Timezone is not set. Enter Config Portal to set.")); + } + +#endif + } + else + { + // Enter CP only if no stored Credentials on flash and file + Serial.println(F("Open Config Portal without Timeout: No stored Credentials.")); + initialConfig = true; + } + + ////////////////////////////////// + + // Connect ETH now if using STA + initEthernet(); + + ////////////////////////////////// + + if (drd->detectDoubleReset()) + { + // DRD, disable timeout. + AsyncESP8266_W5100_manager.setConfigPortalTimeout(0); + + Serial.println(F("Open Config Portal without Timeout: Double Reset Detected")); + initialConfig = true; + } + + if (initialConfig) + { + Serial.print(F("Starting configuration portal @ ")); + Serial.println(eth.localIP()); + + digitalWrite(LED_BUILTIN, LED_ON); // Turn led on as we are in configuration mode. + + //sets timeout in seconds until configuration portal gets turned off. + //If not specified device will remain in configuration mode until + //switched off via webserver or device is restarted. + //AsyncESP8266_W5100_manager.setConfigPortalTimeout(600); + + // Starts an access point + if (!AsyncESP8266_W5100_manager.startConfigPortal()) + Serial.println(F("Not connected to ETH network but continuing anyway.")); + else + { + Serial.println(F("ETH network connected...yeey :)")); + } + +#if USE_ESP_ETH_MANAGER_NTP + String tempTZ = AsyncESP8266_W5100_manager.getTimezoneName(); + + if (strlen(tempTZ.c_str()) < sizeof(Ethconfig.TZ_Name) - 1) + strcpy(Ethconfig.TZ_Name, tempTZ.c_str()); + else + strncpy(Ethconfig.TZ_Name, tempTZ.c_str(), sizeof(Ethconfig.TZ_Name) - 1); + + const char * TZ_Result = AsyncESP8266_W5100_manager.getTZ(Ethconfig.TZ_Name); + + if (strlen(TZ_Result) < sizeof(Ethconfig.TZ) - 1) + strcpy(Ethconfig.TZ, TZ_Result); + else + strncpy(Ethconfig.TZ, TZ_Result, sizeof(Ethconfig.TZ_Name) - 1); + + if ( strlen(Ethconfig.TZ_Name) > 0 ) + { + LOGERROR3(F("Saving current TZ_Name ="), Ethconfig.TZ_Name, F(", TZ = "), Ethconfig.TZ); + + configTime(Ethconfig.TZ, "pool.ntp.org"); + } + else + { + LOGERROR(F("Current Timezone Name is not set. Enter Config Portal to set.")); + } + +#endif + + AsyncESP8266_W5100_manager.getSTAStaticIPConfig(EthSTA_IPconfig); + + saveConfigData(); + +#if !USE_DHCP_IP + + // Reset to use new Static IP, if different from current eth.localIP() + if (eth.localIP() != EthSTA_IPconfig._sta_static_ip) + { + Serial.print(F("Current IP = ")); + Serial.print(eth.localIP()); + Serial.print(F(". Reset to take new IP = ")); + Serial.println(EthSTA_IPconfig._sta_static_ip); + + ESP.reset(); + delay(2000); + } + +#endif + } + + digitalWrite(LED_BUILTIN, LED_OFF); // Turn led off as we are not in configuration mode. + + startedAt = millis(); + + Serial.print(F("After waiting ")); + Serial.print((float) (millis() - startedAt) / 1000); + Serial.print(F(" secs more in setup(), connection result is ")); + + if (eth.connected()) + { + Serial.print(F("connected. Local IP: ")); + Serial.println(eth.localIP()); + } +} + +////////////////////////////////////////////////////////////// + +void loop() +{ + // Call the double reset detector loop method every so often, + // so that it can recognise when the timeout expires. + // You can also call drd.stop() when you wish to no longer + // consider the next reset as a double reset. + drd->loop(); + + // put your main code here, to run repeatedly + check_status(); +} diff --git a/examples/Async_ConfigOnSwitch/Async_ConfigOnSwitch.ino b/examples/Async_ConfigOnSwitch/Async_ConfigOnSwitch.ino new file mode 100644 index 0000000..dd90501 --- /dev/null +++ b/examples/Async_ConfigOnSwitch/Async_ConfigOnSwitch.ino @@ -0,0 +1,797 @@ +/**************************************************************************************************************************** + Async_ConfigOnSwitch.ino + For Ethernet shields using ESP8266_W5100 (ESP8266 + LwIP W5100, W5100S) + + WebServer_ESP8266_W5100 is a library for the ESP8266 with Ethernet W5100, W5100S to run WebServer + + Modified from + 1. Tzapu (https://github.com/tzapu/WiFiManager) + 2. Ken Taylor (https://github.com/kentaylor) + 3. Alan Steremberg (https://github.com/alanswx/ESPAsyncWiFiManager) + 4. Khoi Hoang (https://github.com/khoih-prog/ESPAsync_WiFiManager) + + Built by Khoi Hoang https://github.com/khoih-prog/AsyncESP8266_W5100_Manager + Licensed under MIT license + *****************************************************************************************************************************/ +/**************************************************************************************************************************** + This example will open a configuration portal when no configuration has been previously entered or when a button is pushed. + It is the easiest scenario for configuration but requires a pin and a button on the ESP8266 device. + The Flash button is convenient for this on NodeMCU devices. + + Also in this example a password is required to connect to the configuration portal + network. This is inconvenient but means that only those who know the password or those + already connected to the target network can access the configuration portal and + the network credentials will be sent from the browser over an encrypted connection and + can not be read by observers. + *****************************************************************************************************************************/ + +#if !( defined(ESP8266) ) + #error This code is intended to run on the (ESP8266 + W5100) platform! Please check your Tools->Board setting. +#endif + +////////////////////////////////////////////////////////////// + +// Use from 0 to 4. Higher number, more debugging messages and memory usage. +#define _ESPASYNC_ETH_MGR_LOGLEVEL_ 4 + +// To not display stored SSIDs and PWDs on Config Portal, select false. Default is true +// Even the stored Credentials are not display, just leave them all blank to reconnect and reuse the stored Credentials +//#define DISPLAY_STORED_CREDENTIALS_IN_CP false + +////////////////////////////////////////////////////////////// +// Using GPIO4, GPIO16, or GPIO5 +#define CSPIN 16 + +////////////////////////////////////////////////////////// + +#include + +#include //https://github.com/esp8266/Arduino +//needed for library +#include + +#define USE_LITTLEFS true + +#if USE_LITTLEFS + #include + FS* filesystem = &LittleFS; + #define FileFS LittleFS + #define FS_Name "LittleFS" +#else + FS* filesystem = &SPIFFS; + #define FileFS SPIFFS + #define FS_Name "SPIFFS" +#endif + +////////////////////////////////////////////////////////// + +#define ESP_getChipId() (ESP.getChipId()) + +#define LED_ON LOW +#define LED_OFF HIGH + +////////////////////////////////////////////////////////// + +// Onboard LED I/O pin on NodeMCU board +#define LED_BUILTIN 2 // Pin D4 mapped to pin GPIO2/TXD1 of ESP8266, NodeMCU and WeMoS, control on-board LED + +//PIN_D0 can't be used for PWM/I2C +#define PIN_D0 16 // Pin D0 mapped to pin GPIO16/USER/WAKE of ESP8266. This pin is also used for Onboard-Blue LED. PIN_D0 = 0 => LED ON +#define PIN_D1 5 // Pin D1 mapped to pin GPIO5 of ESP8266 +#define PIN_D2 4 // Pin D2 mapped to pin GPIO4 of ESP8266 +#define PIN_D3 0 // Pin D3 mapped to pin GPIO0/FLASH of ESP8266 +#define PIN_D4 2 // Pin D4 mapped to pin GPIO2/TXD1 of ESP8266 +#define PIN_D5 14 // Pin D5 mapped to pin GPIO14/HSCLK of ESP8266 +#define PIN_D6 12 // Pin D6 mapped to pin GPIO12/HMISO of ESP8266 +#define PIN_D7 13 // Pin D7 mapped to pin GPIO13/RXD2/HMOSI of ESP8266 +#define PIN_D8 15 // Pin D8 mapped to pin GPIO15/TXD2/HCS of ESP8266 + +//Don't use pins GPIO6 to GPIO11 as already connected to flash, etc. Use them can crash the program +//GPIO9(D11/SD2) and GPIO11 can be used only if flash in DIO mode ( not the default QIO mode) +#define PIN_D11 9 // Pin D11/SD2 mapped to pin GPIO9/SDD2 of ESP8266 +#define PIN_D12 10 // Pin D12/SD3 mapped to pin GPIO10/SDD3 of ESP8266 +#define PIN_SD2 9 // Pin SD2 mapped to pin GPIO9/SDD2 of ESP8266 +#define PIN_SD3 10 // Pin SD3 mapped to pin GPIO10/SDD3 of ESP8266 + +#define PIN_D9 3 // Pin D9 /RX mapped to pin GPIO3/RXD0 of ESP8266 +#define PIN_D10 1 // Pin D10/TX mapped to pin GPIO1/TXD0 of ESP8266 +#define PIN_RX 3 // Pin RX mapped to pin GPIO3/RXD0 of ESP8266 +#define PIN_TX 1 // Pin RX mapped to pin GPIO1/TXD0 of ESP8266 + +#define LED_PIN 16 // Pin D0 mapped to pin GPIO16 of ESP8266. This pin is also used for Onboard-Blue LED. PIN_D0 = 0 => LED ON + +/* Trigger for inititating config mode is Pin D1 and also flash button on NodeMCU + Flash button is convenient to use but if it is pressed it will stuff up the serial port device driver + until the computer is rebooted on windows machines. +*/ +const int TRIGGER_PIN = PIN_D1; // D1 on NodeMCU and WeMos. +/* + Alternative trigger pin. Needs to be connected to a button to use this pin. It must be a momentary connection + not connected permanently to ground. Either trigger pin will work. +*/ +const int TRIGGER_PIN2 = PIN_D2; // D2 on NodeMCU and WeMos. + +////////////////////////////////////////////////////////// + +// You only need to format the filesystem once +//#define FORMAT_FILESYSTEM true +#define FORMAT_FILESYSTEM false + +////////////////////////////////////////////////////////// + +// Assuming max 49 chars +#define TZNAME_MAX_LEN 50 +#define TIMEZONE_MAX_LEN 50 + +typedef struct +{ + char TZ_Name[TZNAME_MAX_LEN]; // "America/Toronto" + char TZ[TIMEZONE_MAX_LEN]; // "EST5EDT,M3.2.0,M11.1.0" + uint16_t checksum; +} EthConfig; + +EthConfig Ethconfig; + +#define CONFIG_FILENAME F("/eth_cred.dat") + +////////////////////////////////////////////////////////// + +// Indicates whether ESP has credentials saved from previous session, or double reset detected +bool initialConfig = false; + +// Use false if you don't like to display Available Pages in Information Page of Config Portal +// Comment out or use true to display Available Pages in Information Page of Config Portal +// Must be placed before #include +#define USE_AVAILABLE_PAGES true //false + +// To permit disable/enable StaticIP configuration in Config Portal from sketch. Valid only if DHCP is used. +// You'll loose the feature of dynamically changing from DHCP to static IP, or vice versa +// You have to explicitly specify false to disable the feature. +//#define USE_STATIC_IP_CONFIG_IN_CP false + +// Use false to disable NTP config. Advisable when using Cellphone, Tablet to access Config Portal. +// See Issue 23: On Android phone ConfigPortal is unresponsive (https://github.com/khoih-prog/ESP_WiFiManager/issues/23) +#define USE_ESP_ETH_MANAGER_NTP true //false + +// Just use enough to save memory. On ESP8266, can cause blank ConfigPortal screen +// if using too much memory +#define USING_AFRICA false +#define USING_AMERICA true +#define USING_ANTARCTICA false +#define USING_ASIA false +#define USING_ATLANTIC false +#define USING_AUSTRALIA false +#define USING_EUROPE false +#define USING_INDIAN false +#define USING_PACIFIC false +#define USING_ETC_GMT false + +// Use true to enable CloudFlare NTP service. System can hang if you don't have Internet access while accessing CloudFlare +// See Issue #21: CloudFlare link in the default portal (https://github.com/khoih-prog/ESP_WiFiManager/issues/21) +#define USE_CLOUDFLARE_NTP false + +#define USING_CORS_FEATURE true + +////////////////////////////////////////////////////////// + +// Use USE_DHCP_IP == true for dynamic DHCP IP, false to use static IP which you have to change accordingly to your network +#if (defined(USE_STATIC_IP_CONFIG_IN_CP) && !USE_STATIC_IP_CONFIG_IN_CP) + // Force DHCP to be true + #if defined(USE_DHCP_IP) + #undef USE_DHCP_IP + #endif + #define USE_DHCP_IP true +#else + // You can select DHCP or Static IP here + //#define USE_DHCP_IP true + #define USE_DHCP_IP false +#endif + +#if ( USE_DHCP_IP ) + // Use DHCP + + #if (_ESPASYNC_ETH_MGR_LOGLEVEL_ > 3) + #warning Using DHCP IP + #endif + + IPAddress stationIP = IPAddress(0, 0, 0, 0); + IPAddress gatewayIP = IPAddress(192, 168, 2, 1); + IPAddress netMask = IPAddress(255, 255, 255, 0); + +#else + // Use static IP + + #if (_ESPASYNC_ETH_MGR_LOGLEVEL_ > 3) + #warning Using static IP + #endif + + IPAddress stationIP = IPAddress(192, 168, 2, 186); + IPAddress gatewayIP = IPAddress(192, 168, 2, 1); + IPAddress netMask = IPAddress(255, 255, 255, 0); +#endif + +////////////////////////////////////////////////////////// + +#define USE_CONFIGURABLE_DNS true + +IPAddress dns1IP = gatewayIP; +IPAddress dns2IP = IPAddress(8, 8, 8, 8); + +#include //https://github.com/khoih-prog/AsyncESP8266_W5100_Manager + +#define HTTP_PORT 80 + +////////////////////////////////////////////////////////////// + +/****************************************** + // Defined in AsyncESP8266_W5100_Manager.hpp + typedef struct + { + IPAddress _sta_static_ip; + IPAddress _sta_static_gw; + IPAddress _sta_static_sn; + #if USE_CONFIGURABLE_DNS + IPAddress _sta_static_dns1; + IPAddress _sta_static_dns2; + #endif + } ETH_STA_IPConfig; +******************************************/ + +ETH_STA_IPConfig EthSTA_IPconfig; + +////////////////////////////////////////////////////////////// + +void initSTAIPConfigStruct(ETH_STA_IPConfig &in_EthSTA_IPconfig) +{ + in_EthSTA_IPconfig._sta_static_ip = stationIP; + in_EthSTA_IPconfig._sta_static_gw = gatewayIP; + in_EthSTA_IPconfig._sta_static_sn = netMask; +#if USE_CONFIGURABLE_DNS + in_EthSTA_IPconfig._sta_static_dns1 = dns1IP; + in_EthSTA_IPconfig._sta_static_dns2 = dns2IP; +#endif +} + +////////////////////////////////////////////////////////////// + +void displayIPConfigStruct(ETH_STA_IPConfig in_EthSTA_IPconfig) +{ + LOGERROR3(F("stationIP ="), in_EthSTA_IPconfig._sta_static_ip, ", gatewayIP =", in_EthSTA_IPconfig._sta_static_gw); + LOGERROR1(F("netMask ="), in_EthSTA_IPconfig._sta_static_sn); +#if USE_CONFIGURABLE_DNS + LOGERROR3(F("dns1IP ="), in_EthSTA_IPconfig._sta_static_dns1, ", dns2IP =", in_EthSTA_IPconfig._sta_static_dns2); +#endif +} + +////////////////////////////////////////////////////////////// + +void toggleLED() +{ + //toggle state + digitalWrite(LED_BUILTIN, !digitalRead(LED_BUILTIN)); +} + +////////////////////////////////////////////////////////////// + +#if USE_ESP_ETH_MANAGER_NTP +void printLocalTime() +{ + static time_t now; + + now = time(nullptr); + + if ( now > 1451602800 ) + { + Serial.print("Local Date/Time: "); + Serial.print(ctime(&now)); + } +} +#endif + +void heartBeatPrint() +{ +#if USE_ESP_ETH_MANAGER_NTP + printLocalTime(); +#else + static int num = 1; + + if (eth.connected()) + Serial.print(F("H")); // H means connected to Ethernet + else + Serial.print(F("F")); // F means not connected to Ethernet + + if (num == 80) + { + Serial.println(); + num = 1; + } + else if (num++ % 10 == 0) + { + Serial.print(F(" ")); + } + +#endif +} + +////////////////////////////////////////////////////////////// + +void check_status() +{ + static ulong checkstatus_timeout = 0; + static ulong LEDstatus_timeout = 0; + + static ulong current_millis; + +#if USE_ESP_ETH_MANAGER_NTP +#define HEARTBEAT_INTERVAL 60000L +#else +#define HEARTBEAT_INTERVAL 10000L +#endif + +#define LED_INTERVAL 2000L + + current_millis = millis(); + + if ((current_millis > LEDstatus_timeout) || (LEDstatus_timeout == 0)) + { + // Toggle LED at LED_INTERVAL = 2s + toggleLED(); + LEDstatus_timeout = current_millis + LED_INTERVAL; + } + + // Print hearbeat every HEARTBEAT_INTERVAL (10) seconds. + if ((current_millis > checkstatus_timeout) || (checkstatus_timeout == 0)) + { + heartBeatPrint(); + checkstatus_timeout = current_millis + HEARTBEAT_INTERVAL; + } +} + +////////////////////////////////////////////////////////////// + +int calcChecksum(uint8_t* address, uint16_t sizeToCalc) +{ + uint16_t checkSum = 0; + + for (uint16_t index = 0; index < sizeToCalc; index++) + { + checkSum += * ( ( (byte*) address ) + index); + } + + return checkSum; +} + +////////////////////////////////////////////////////////////// + +bool loadConfigData() +{ + File file = FileFS.open(CONFIG_FILENAME, "r"); + LOGERROR(F("LoadCfgFile ")); + + memset((void *) &Ethconfig, 0, sizeof(Ethconfig)); + memset((void *) &EthSTA_IPconfig, 0, sizeof(EthSTA_IPconfig)); + + if (file) + { + file.readBytes((char *) &Ethconfig, sizeof(Ethconfig)); + file.readBytes((char *) &EthSTA_IPconfig, sizeof(EthSTA_IPconfig)); + file.close(); + + LOGERROR(F("OK")); + + if ( Ethconfig.checksum != calcChecksum( (uint8_t*) &Ethconfig, sizeof(Ethconfig) - sizeof(Ethconfig.checksum) ) ) + { + LOGERROR(F("Ethconfig checksum wrong")); + + return false; + } + + displayIPConfigStruct(EthSTA_IPconfig); + + return true; + } + else + { + LOGERROR(F("failed")); + + return false; + } +} + +////////////////////////////////////////////////////////////// + +void saveConfigData() +{ + File file = FileFS.open(CONFIG_FILENAME, "w"); + LOGERROR(F("SaveCfgFile ")); + + if (file) + { + Ethconfig.checksum = calcChecksum( (uint8_t*) &Ethconfig, sizeof(Ethconfig) - sizeof(Ethconfig.checksum) ); + + file.write((uint8_t*) &Ethconfig, sizeof(Ethconfig)); + + displayIPConfigStruct(EthSTA_IPconfig); + + file.write((uint8_t*) &EthSTA_IPconfig, sizeof(EthSTA_IPconfig)); + file.close(); + + LOGERROR(F("OK")); + } + else + { + LOGERROR(F("failed")); + } +} + +////////////////////////////////////////////////////////////// + +void initEthernet() +{ + SPI.begin(); + SPI.setClockDivider(SPI_CLOCK_DIV4); + SPI.setBitOrder(MSBFIRST); + SPI.setDataMode(SPI_MODE0); + + LOGWARN(F("Default SPI pinout:")); + LOGWARN1(F("MOSI:"), MOSI); + LOGWARN1(F("MISO:"), MISO); + LOGWARN1(F("SCK:"), SCK); + LOGWARN1(F("CS:"), CSPIN); + LOGWARN(F("=========================")); + +#if !USING_DHCP + //eth.config(localIP, gateway, netMask, gateway); + eth.config(EthSTA_IPconfig._sta_static_ip, EthSTA_IPconfig._sta_static_gw, EthSTA_IPconfig._sta_static_sn, + EthSTA_IPconfig._sta_static_dns1); +#endif + + eth.setDefault(); + + if (!eth.begin()) + { + Serial.println("No Ethernet hardware ... Stop here"); + + while (true) + { + delay(1000); + } + } + else + { + Serial.print("Connecting to network : "); + + while (!eth.connected()) + { + Serial.print("."); + delay(1000); + } + } + + Serial.println(); + +#if USING_DHCP + Serial.print("Ethernet DHCP IP address: "); +#else + Serial.print("Ethernet Static IP address: "); +#endif + + Serial.println(eth.localIP()); +} + +////////////////////////////////////////////////////////////// + +void setup() +{ + //set led pin as output + pinMode(LED_BUILTIN, OUTPUT); + + pinMode(TRIGGER_PIN, INPUT_PULLUP); + pinMode(TRIGGER_PIN2, INPUT_PULLUP); + + Serial.begin(115200); + + while (!Serial && millis() < 5000); + + delay(200); + + Serial.print(F("\nStarting Async_ConfigOnSwitch using ")); + Serial.print(FS_Name); + Serial.print(F(" on ")); + Serial.print(ARDUINO_BOARD); + Serial.print(F(" with ")); + Serial.println(SHIELD_TYPE); + Serial.println(ASYNC_ESP8266_W5100_MANAGER_VERSION); + + Serial.setDebugOutput(false); + +#if FORMAT_FILESYSTEM + Serial.println(F("Forced Formatting.")); + FileFS.format(); +#endif + + // Format FileFS if not yet + if (!FileFS.begin()) + { + FileFS.format(); + + Serial.println(F("SPIFFS/LittleFS failed! Already tried formatting.")); + + if (!FileFS.begin()) + { + // prevents debug info from the library to hide err message. + delay(100); + +#if USE_LITTLEFS + Serial.println(F("LittleFS failed!. Please use SPIFFS or EEPROM. Stay forever")); +#else + Serial.println(F("SPIFFS failed!. Please use LittleFS or EEPROM. Stay forever")); +#endif + + while (true) + { + delay(1); + } + } + } + + unsigned long startedAt = millis(); + + initSTAIPConfigStruct(EthSTA_IPconfig); + + digitalWrite(LED_BUILTIN, LED_ON); // turn the LED on by making the voltage LOW to tell us we are in configuration mode. + + //Local intialization. Once its business is done, there is no need to keep it around + // Use this to default DHCP hostname to ESP32-XXXXXX + //AsyncESP8266_W5100_Manager AsyncESP8266_W5100_manager(&webServer, &dnsServer); + // Use this to personalize DHCP hostname (RFC952 conformed) + AsyncWebServer webServer(HTTP_PORT); + +#if ( USING_ESP32_S2 || USING_ESP32_C3 ) + AsyncESP8266_W5100_Manager AsyncESP8266_W5100_manager(&webServer, NULL, "AsyncConfigOnSwitch"); +#else + AsyncDNSServer dnsServer; + + AsyncESP8266_W5100_Manager AsyncESP8266_W5100_manager(&webServer, &dnsServer, "AsyncConfigOnSwitch"); +#endif + + AsyncESP8266_W5100_manager.setDebugOutput(true); + +#if !USE_DHCP_IP + // Set (static IP, Gateway, Subnetmask, DNS1 and DNS2) or (IP, Gateway, Subnetmask) + AsyncESP8266_W5100_manager.setSTAStaticIPConfig(EthSTA_IPconfig); +#endif + +#if USING_CORS_FEATURE + AsyncESP8266_W5100_manager.setCORSHeader("Your Access-Control-Allow-Origin"); +#endif + + bool configDataLoaded = false; + + if (loadConfigData()) + { + configDataLoaded = true; + + //If no access point name has been previously entered disable timeout + AsyncESP8266_W5100_manager.setConfigPortalTimeout(120); + + Serial.println(F("Got stored Credentials. Timeout 120s for Config Portal")); + +#if USE_ESP_ETH_MANAGER_NTP + + if ( strlen(Ethconfig.TZ_Name) > 0 ) + { + LOGERROR3(F("Current TZ_Name ="), Ethconfig.TZ_Name, F(", TZ = "), Ethconfig.TZ); + + configTime(Ethconfig.TZ, "pool.ntp.org"); + } + else + { + Serial.println(F("Current Timezone is not set. Enter Config Portal to set.")); + } + +#endif + } + else + { + // Enter CP only if no stored SSID on flash and file + Serial.println(F("Open Config Portal without Timeout: No stored Credentials.")); + initialConfig = true; + } + + ////////////////////////////////// + + // Connect ETH now if using STA + initEthernet(); + + ////////////////////////////////// + + if (initialConfig) + { + Serial.print(F("Starting configuration portal @ ")); + Serial.println(eth.localIP()); + + digitalWrite(LED_BUILTIN, LED_ON); // Turn led on as we are in configuration mode. + + //sets timeout in seconds until configuration portal gets turned off. + //If not specified device will remain in configuration mode until + //switched off via webserver or device is restarted. + //AsyncESP8266_W5100_manager.setConfigPortalTimeout(600); + + // Starts an access point + if (!AsyncESP8266_W5100_manager.startConfigPortal()) + Serial.println(F("Not connected to ETH network but continuing anyway.")); + else + { + Serial.println(F("ETH network connected...yeey :)")); + } + +#if USE_ESP_ETH_MANAGER_NTP + String tempTZ = AsyncESP8266_W5100_manager.getTimezoneName(); + + if (strlen(tempTZ.c_str()) < sizeof(Ethconfig.TZ_Name) - 1) + strcpy(Ethconfig.TZ_Name, tempTZ.c_str()); + else + strncpy(Ethconfig.TZ_Name, tempTZ.c_str(), sizeof(Ethconfig.TZ_Name) - 1); + + const char * TZ_Result = AsyncESP8266_W5100_manager.getTZ(Ethconfig.TZ_Name); + + if (strlen(TZ_Result) < sizeof(Ethconfig.TZ) - 1) + strcpy(Ethconfig.TZ, TZ_Result); + else + strncpy(Ethconfig.TZ, TZ_Result, sizeof(Ethconfig.TZ_Name) - 1); + + if ( strlen(Ethconfig.TZ_Name) > 0 ) + { + LOGERROR3(F("Saving current TZ_Name ="), Ethconfig.TZ_Name, F(", TZ = "), Ethconfig.TZ); + + configTime(Ethconfig.TZ, "pool.ntp.org"); + } + else + { + LOGERROR(F("Current Timezone Name is not set. Enter Config Portal to set.")); + } + +#endif + + AsyncESP8266_W5100_manager.getSTAStaticIPConfig(EthSTA_IPconfig); + + saveConfigData(); + } + + digitalWrite(LED_BUILTIN, LED_OFF); // Turn led off as we are not in configuration mode. + + startedAt = millis(); + + Serial.print(F("After waiting ")); + Serial.print((float) (millis() - startedAt) / 1000); + Serial.print(F(" secs more in setup(), connection result is ")); + + if (eth.connected()) + { + Serial.print(F("connected. Local IP: ")); + Serial.println(eth.localIP()); + } +} + +////////////////////////////////////////////////////////////// + +void loop() +{ + // is configuration portal requested? + if ((digitalRead(TRIGGER_PIN) == LOW) || (digitalRead(TRIGGER_PIN2) == LOW)) + { + Serial.println(F("\nConfiguration portal requested.")); + digitalWrite(LED_BUILTIN, LED_ON); // turn the LED on by making the voltage LOW to tell us we are in configuration mode. + + //Local intialization. Once its business is done, there is no need to keep it around + // Use this to default DHCP hostname to ESP32-XXXXXX + //AsyncESP8266_W5100_Manager AsyncESP8266_W5100_manager(&webServer, &dnsServer); + // Use this to personalize DHCP hostname (RFC952 conformed) + AsyncWebServer webServer(HTTP_PORT); + +#if ( USING_ESP32_S2 || USING_ESP32_C3 ) + AsyncESP8266_W5100_Manager AsyncESP8266_W5100_manager(&webServer, NULL, "ConfigOnSwitch"); +#else + AsyncDNSServer dnsServer; + + AsyncESP8266_W5100_Manager AsyncESP8266_W5100_manager(&webServer, &dnsServer, "ConfigOnSwitch"); +#endif + +#if !USE_DHCP_IP +#if USE_CONFIGURABLE_DNS + // Set static IP, Gateway, Subnetmask, DNS1 and DNS2 + AsyncESP8266_W5100_manager.setSTAStaticIPConfig(stationIP, gatewayIP, netMask, dns1IP, dns2IP); +#else + // Set static IP, Gateway, Subnetmask, Use auto DNS1 and DNS2. + AsyncESP8266_W5100_manager.setSTAStaticIPConfig(stationIP, gatewayIP, netMask); +#endif +#endif + +#if USING_CORS_FEATURE + AsyncESP8266_W5100_manager.setCORSHeader("Your Access-Control-Allow-Origin"); +#endif + + //Check if there is stored credentials. + //If not found, device will remain in configuration mode until switched off via webserver. + Serial.println(F("Opening configuration portal. ")); + + if (loadConfigData()) + { + AsyncESP8266_W5100_manager.setConfigPortalTimeout( + 120); //If no access point name has been previously entered disable timeout. + Serial.println(F("Got stored Credentials. Timeout 120s for Config Portal")); + } + else + { + // Enter CP only if no stored SSID on flash and file + AsyncESP8266_W5100_manager.setConfigPortalTimeout(0); + Serial.println(F("Open Config Portal without Timeout: No stored Credentials.")); + initialConfig = true; + } + + //Starts an access point + //and goes into a blocking loop awaiting configuration + if (!AsyncESP8266_W5100_manager.startConfigPortal()) + Serial.println(F("Not connected to ETH network but continuing anyway.")); + else + { + Serial.println(F("ETH network connected...yeey :)")); + Serial.print(F("Local IP: ")); + Serial.println(eth.localIP()); + } + +#if USE_ESP_ETH_MANAGER_NTP + String tempTZ = AsyncESP8266_W5100_manager.getTimezoneName(); + + if (strlen(tempTZ.c_str()) < sizeof(Ethconfig.TZ_Name) - 1) + strcpy(Ethconfig.TZ_Name, tempTZ.c_str()); + else + strncpy(Ethconfig.TZ_Name, tempTZ.c_str(), sizeof(Ethconfig.TZ_Name) - 1); + + const char * TZ_Result = AsyncESP8266_W5100_manager.getTZ(Ethconfig.TZ_Name); + + if (strlen(TZ_Result) < sizeof(Ethconfig.TZ) - 1) + strcpy(Ethconfig.TZ, TZ_Result); + else + strncpy(Ethconfig.TZ, TZ_Result, sizeof(Ethconfig.TZ_Name) - 1); + + if ( strlen(Ethconfig.TZ_Name) > 0 ) + { + LOGERROR3(F("Saving current TZ_Name ="), Ethconfig.TZ_Name, F(", TZ = "), Ethconfig.TZ); + + configTime(Ethconfig.TZ, "pool.ntp.org"); + } + else + { + LOGERROR(F("Current Timezone Name is not set. Enter Config Portal to set.")); + } + +#endif + + AsyncESP8266_W5100_manager.getSTAStaticIPConfig(EthSTA_IPconfig); + + saveConfigData(); + +#if !USE_DHCP_IP + + // Reset to use new Static IP, if different from current eth.localIP() + if (eth.localIP() != EthSTA_IPconfig._sta_static_ip) + { + Serial.print(F("Current IP = ")); + Serial.print(eth.localIP()); + Serial.print(F(". Reset to take new IP = ")); + Serial.println(EthSTA_IPconfig._sta_static_ip); + + ESP.reset(); + delay(2000); + } + +#endif + + digitalWrite(LED_BUILTIN, LED_OFF); // Turn led off as we are not in configuration mode. + } + + // put your main code here, to run repeatedly + check_status(); +} diff --git a/examples/Async_ConfigOnSwitchFS/Async_ConfigOnSwitchFS.ino b/examples/Async_ConfigOnSwitchFS/Async_ConfigOnSwitchFS.ino new file mode 100644 index 0000000..ac07e0c --- /dev/null +++ b/examples/Async_ConfigOnSwitchFS/Async_ConfigOnSwitchFS.ino @@ -0,0 +1,1021 @@ +/**************************************************************************************************************************** + Async_ConfigOnSwitchFS.ino + For Ethernet shields using ESP8266_W5100 (ESP8266 + LwIP W5100, W5100S) + + WebServer_ESP8266_W5100 is a library for the ESP8266 with Ethernet W5100, W5100S to run WebServer + + Modified from + 1. Tzapu (https://github.com/tzapu/WiFiManager) + 2. Ken Taylor (https://github.com/kentaylor) + 3. Alan Steremberg (https://github.com/alanswx/ESPAsyncWiFiManager) + 4. Khoi Hoang (https://github.com/khoih-prog/ESPAsync_WiFiManager) + + Built by Khoi Hoang https://github.com/khoih-prog/AsyncESP8266_W5100_Manager + Licensed under MIT license + *****************************************************************************************************************************/ +/**************************************************************************************************************************** + This example will open a configuration portal when the reset button is pressed twice. + This method works well on Wemos boards which have a single reset button on board. It avoids using a pin for launching the configuration portal. + + Settings + There are two values to be set in the sketch. + + DRD_TIMEOUT - Number of seconds to wait for the second reset. Set to 10 in the example. + DRD_ADDRESS - The address in ESP8266 RTC RAM to store the flag. This memory must not be used for other purposes in the same sketch. Set to 0 in the example. + + This example, originally relied on the Double Reset Detector library from https://github.com/datacute/DoubleResetDetector + To support ESP32, use ESP_DoubleResetDetector library from //https://github.com/khoih-prog/ESP_DoubleResetDetector + *****************************************************************************************************************************/ +/**************************************************************************************************************************** + This example will open a configuration portal when no configuration has been previously entered or when a button is pushed. + It is the easiest scenario for configuration but requires a pin and a button on the ESP8266 device. + The Flash button is convenient for this on NodeMCU devices. + + Also in this example a password is required to connect to the configuration portal + network. This is inconvenient but means that only those who know the password or those + already connected to the target network can access the configuration portal and + the network credentials will be sent from the browser over an encrypted connection and + can not be read by observers. + *****************************************************************************************************************************/ + +#if !( defined(ESP8266) ) + #error This code is intended to run on the (ESP8266 + W5100) platform! Please check your Tools->Board setting. +#endif + +////////////////////////////////////////////////////////////// + +// Use from 0 to 4. Higher number, more debugging messages and memory usage. +#define _ESPASYNC_ETH_MGR_LOGLEVEL_ 4 + +// To not display stored SSIDs and PWDs on Config Portal, select false. Default is true +// Even the stored Credentials are not display, just leave them all blank to reconnect and reuse the stored Credentials +//#define DISPLAY_STORED_CREDENTIALS_IN_CP false + +////////////////////////////////////////////////////////////// +// Using GPIO4, GPIO16, or GPIO5 +#define CSPIN 16 + +////////////////////////////////////////////////////////// + +#include + +// Now support ArduinoJson 6.0.0+ ( tested with v6.19.4 ) +#include // get it from https://arduinojson.org/ or install via Arduino library manager + +#include //https://github.com/esp8266/Arduino +//needed for library +#include + +#define USE_LITTLEFS true + +#if USE_LITTLEFS + #include + FS* filesystem = &LittleFS; + #define FileFS LittleFS + #define FS_Name "LittleFS" +#else + FS* filesystem = &SPIFFS; + #define FileFS SPIFFS + #define FS_Name "SPIFFS" +#endif + +////////////////////////////////////////////////////////// + +#define ESP_getChipId() (ESP.getChipId()) + +#define LED_ON LOW +#define LED_OFF HIGH + +////////////////////////////////////////////////////////// + +// Onboard LED I/O pin on NodeMCU board +#define LED_BUILTIN 2 // Pin D4 mapped to pin GPIO2/TXD1 of ESP8266, NodeMCU and WeMoS, control on-board LED + +//PIN_D0 can't be used for PWM/I2C +#define PIN_D0 16 // Pin D0 mapped to pin GPIO16/USER/WAKE of ESP8266. This pin is also used for Onboard-Blue LED. PIN_D0 = 0 => LED ON +#define PIN_D1 5 // Pin D1 mapped to pin GPIO5 of ESP8266 +#define PIN_D2 4 // Pin D2 mapped to pin GPIO4 of ESP8266 +#define PIN_D3 0 // Pin D3 mapped to pin GPIO0/FLASH of ESP8266 +#define PIN_D4 2 // Pin D4 mapped to pin GPIO2/TXD1 of ESP8266 +#define PIN_D5 14 // Pin D5 mapped to pin GPIO14/HSCLK of ESP8266 +#define PIN_D6 12 // Pin D6 mapped to pin GPIO12/HMISO of ESP8266 +#define PIN_D7 13 // Pin D7 mapped to pin GPIO13/RXD2/HMOSI of ESP8266 +#define PIN_D8 15 // Pin D8 mapped to pin GPIO15/TXD2/HCS of ESP8266 + +//Don't use pins GPIO6 to GPIO11 as already connected to flash, etc. Use them can crash the program +//GPIO9(D11/SD2) and GPIO11 can be used only if flash in DIO mode ( not the default QIO mode) +#define PIN_D11 9 // Pin D11/SD2 mapped to pin GPIO9/SDD2 of ESP8266 +#define PIN_D12 10 // Pin D12/SD3 mapped to pin GPIO10/SDD3 of ESP8266 +#define PIN_SD2 9 // Pin SD2 mapped to pin GPIO9/SDD2 of ESP8266 +#define PIN_SD3 10 // Pin SD3 mapped to pin GPIO10/SDD3 of ESP8266 + +#define PIN_D9 3 // Pin D9 /RX mapped to pin GPIO3/RXD0 of ESP8266 +#define PIN_D10 1 // Pin D10/TX mapped to pin GPIO1/TXD0 of ESP8266 +#define PIN_RX 3 // Pin RX mapped to pin GPIO3/RXD0 of ESP8266 +#define PIN_TX 1 // Pin RX mapped to pin GPIO1/TXD0 of ESP8266 + +////////////////////////////////////////////////////////////// + +/* Trigger for inititating config mode is Pin D1 and also flash button on NodeMCU + Flash button is convenient to use but if it is pressed it will stuff up the serial port device driver + until the computer is rebooted on windows machines. +*/ +const int TRIGGER_PIN = PIN_D1; // D1 on NodeMCU and WeMos. +/* + Alternative trigger pin. Needs to be connected to a button to use this pin. It must be a momentary connection + not connected permanently to ground. Either trigger pin will work. +*/ +const int TRIGGER_PIN2 = PIN_D2; // D2 on NodeMCU and WeMos. + +int pinSda = PIN_D2; // Pin D2 mapped to pin GPIO4 of ESP8266 +int pinScl = PIN_D1; // Pin D1 mapped to pin GPIO5 of ESP8266 + +////////////////////////////////////////////////////////////// + +const char* JSON_CONFIG_FILE = "/ConfigSW.json"; + +////////////////////////////////////////////////////////////// + +// Variables + +// Default configuration values +char thingspeakApiKey[17] = ""; +bool sensorDht22 = true; + +#define ThingSpeakAPI_Label "thingspeakApiKey" +#define SensorDht22_Label "SensorDHT22" +#define PinSDA_Label "PinSda" +#define PinSCL_Label "PinScl" + +////////////////////////////////////////////////////////////// + +// Function Prototypes + +bool readConfigFile(); +bool writeConfigFile(); + +////////////////////////////////////////////////////////////// + +// You only need to format the filesystem once +//#define FORMAT_FILESYSTEM true +#define FORMAT_FILESYSTEM false + +////////////////////////////////////////////////////////////// + +// Assuming max 49 chars +#define TZNAME_MAX_LEN 50 +#define TIMEZONE_MAX_LEN 50 + +typedef struct +{ + char TZ_Name[TZNAME_MAX_LEN]; // "America/Toronto" + char TZ[TIMEZONE_MAX_LEN]; // "EST5EDT,M3.2.0,M11.1.0" + uint16_t checksum; +} EthConfig; + +EthConfig Ethconfig; + +#define CONFIG_FILENAME F("/eth_cred.dat") + +////////////////////////////////////////////////////////////// + +// Indicates whether ESP has credentials saved from previous session +bool initialConfig = false; + +// Use false if you don't like to display Available Pages in Information Page of Config Portal +// Comment out or use true to display Available Pages in Information Page of Config Portal +// Must be placed before #include +#define USE_AVAILABLE_PAGES true + +// From v1.0.10 to permit disable/enable StaticIP configuration in Config Portal from sketch. Valid only if DHCP is used. +// You'll loose the feature of dynamically changing from DHCP to static IP, or vice versa +// You have to explicitly specify false to disable the feature. +//#define USE_STATIC_IP_CONFIG_IN_CP false + +// Use false to disable NTP config. Advisable when using Cellphone, Tablet to access Config Portal. +// See Issue 23: On Android phone ConfigPortal is unresponsive (https://github.com/khoih-prog/ESP_WiFiManager/issues/23) +#define USE_ESP_ETH_MANAGER_NTP true + +// Just use enough to save memory. On ESP8266, can cause blank ConfigPortal screen +// if using too much memory +#define USING_AFRICA false +#define USING_AMERICA true +#define USING_ANTARCTICA false +#define USING_ASIA false +#define USING_ATLANTIC false +#define USING_AUSTRALIA false +#define USING_EUROPE false +#define USING_INDIAN false +#define USING_PACIFIC false +#define USING_ETC_GMT false + +// Use true to enable CloudFlare NTP service. System can hang if you don't have Internet access while accessing CloudFlare +// See Issue #21: CloudFlare link in the default portal (https://github.com/khoih-prog/ESP_WiFiManager/issues/21) +#define USE_CLOUDFLARE_NTP false + +// New in v1.0.11 +#define USING_CORS_FEATURE true + +////////////////////////////////////////////////////////////// + +// Use USE_DHCP_IP == true for dynamic DHCP IP, false to use static IP which you have to change accordingly to your network +#if (defined(USE_STATIC_IP_CONFIG_IN_CP) && !USE_STATIC_IP_CONFIG_IN_CP) + // Force DHCP to be true + #if defined(USE_DHCP_IP) + #undef USE_DHCP_IP + #endif + #define USE_DHCP_IP true +#else + // You can select DHCP or Static IP here + //#define USE_DHCP_IP true + #define USE_DHCP_IP false +#endif + +#if ( USE_DHCP_IP ) + // Use DHCP + + #if (_ESPASYNC_ETH_MGR_LOGLEVEL_ > 3) + #warning Using DHCP IP + #endif + + IPAddress stationIP = IPAddress(0, 0, 0, 0); + IPAddress gatewayIP = IPAddress(192, 168, 2, 1); + IPAddress netMask = IPAddress(255, 255, 255, 0); + +#else + // Use static IP + + #if (_ESPASYNC_ETH_MGR_LOGLEVEL_ > 3) + #warning Using static IP + #endif + + IPAddress stationIP = IPAddress(192, 168, 2, 232); + IPAddress gatewayIP = IPAddress(192, 168, 2, 1); + IPAddress netMask = IPAddress(255, 255, 255, 0); +#endif + +////////////////////////////////////////////////////////////// + +#define USE_CONFIGURABLE_DNS true + +IPAddress dns1IP = gatewayIP; +IPAddress dns2IP = IPAddress(8, 8, 8, 8); + +#include //https://github.com/khoih-prog/AsyncESP8266_W5100_Manager + +#define HTTP_PORT 80 + +////////////////////////////////////////////////////////////// + +/****************************************** + // Defined in AsyncESP8266_W5100_Manager.hpp + typedef struct + { + IPAddress _sta_static_ip; + IPAddress _sta_static_gw; + IPAddress _sta_static_sn; + #if USE_CONFIGURABLE_DNS + IPAddress _sta_static_dns1; + IPAddress _sta_static_dns2; + #endif + } ETH_STA_IPConfig; +******************************************/ + +ETH_STA_IPConfig EthSTA_IPconfig; + +////////////////////////////////////////////////////////////// + +void initSTAIPConfigStruct(ETH_STA_IPConfig &in_EthSTA_IPconfig) +{ + in_EthSTA_IPconfig._sta_static_ip = stationIP; + in_EthSTA_IPconfig._sta_static_gw = gatewayIP; + in_EthSTA_IPconfig._sta_static_sn = netMask; +#if USE_CONFIGURABLE_DNS + in_EthSTA_IPconfig._sta_static_dns1 = dns1IP; + in_EthSTA_IPconfig._sta_static_dns2 = dns2IP; +#endif +} + +////////////////////////////////////////////////////////////// + +void displayIPConfigStruct(ETH_STA_IPConfig in_EthSTA_IPconfig) +{ + LOGERROR3(F("stationIP ="), in_EthSTA_IPconfig._sta_static_ip, ", gatewayIP =", in_EthSTA_IPconfig._sta_static_gw); + LOGERROR1(F("netMask ="), in_EthSTA_IPconfig._sta_static_sn); +#if USE_CONFIGURABLE_DNS + LOGERROR3(F("dns1IP ="), in_EthSTA_IPconfig._sta_static_dns1, ", dns2IP =", in_EthSTA_IPconfig._sta_static_dns2); +#endif +} + +////////////////////////////////////////////////////////////// + +void toggleLED() +{ + //toggle state + digitalWrite(LED_BUILTIN, !digitalRead(LED_BUILTIN)); +} + +////////////////////////////////////////////////////////////// + +#if USE_ESP_ETH_MANAGER_NTP +void printLocalTime() +{ + static time_t now; + + now = time(nullptr); + + if ( now > 1451602800 ) + { + Serial.print("Local Date/Time: "); + Serial.print(ctime(&now)); + } +} +#endif + +void heartBeatPrint() +{ +#if USE_ESP_ETH_MANAGER_NTP + printLocalTime(); +#else + static int num = 1; + + if (eth.connected()) + Serial.print(F("H")); // H means connected to Ethernet + else + Serial.print(F("F")); // F means not connected to Ethernet + + if (num == 80) + { + Serial.println(); + num = 1; + } + else if (num++ % 10 == 0) + { + Serial.print(F(" ")); + } + +#endif +} + +////////////////////////////////////////////////////////////// + +void check_status() +{ + static ulong checkstatus_timeout = 0; + static ulong LEDstatus_timeout = 0; + + static ulong current_millis; + +#if USE_ESP_ETH_MANAGER_NTP +#define HEARTBEAT_INTERVAL 60000L +#else +#define HEARTBEAT_INTERVAL 10000L +#endif + +#define LED_INTERVAL 2000L + + current_millis = millis(); + + if ((current_millis > LEDstatus_timeout) || (LEDstatus_timeout == 0)) + { + // Toggle LED at LED_INTERVAL = 2s + toggleLED(); + LEDstatus_timeout = current_millis + LED_INTERVAL; + } + + // Print hearbeat every HEARTBEAT_INTERVAL (10) seconds. + if ((current_millis > checkstatus_timeout) || (checkstatus_timeout == 0)) + { + heartBeatPrint(); + checkstatus_timeout = current_millis + HEARTBEAT_INTERVAL; + } +} + +////////////////////////////////////////////////////////////// + +int calcChecksum(uint8_t* address, uint16_t sizeToCalc) +{ + uint16_t checkSum = 0; + + for (uint16_t index = 0; index < sizeToCalc; index++) + { + checkSum += * ( ( (byte*) address ) + index); + } + + return checkSum; +} + +////////////////////////////////////////////////////////////// + +bool loadConfigData() +{ + File file = FileFS.open(CONFIG_FILENAME, "r"); + LOGERROR(F("LoadCfgFile ")); + + memset((void *) &Ethconfig, 0, sizeof(Ethconfig)); + memset((void *) &EthSTA_IPconfig, 0, sizeof(EthSTA_IPconfig)); + + if (file) + { + file.readBytes((char *) &Ethconfig, sizeof(Ethconfig)); + file.readBytes((char *) &EthSTA_IPconfig, sizeof(EthSTA_IPconfig)); + file.close(); + + LOGERROR(F("OK")); + + if ( Ethconfig.checksum != calcChecksum( (uint8_t*) &Ethconfig, sizeof(Ethconfig) - sizeof(Ethconfig.checksum) ) ) + { + LOGERROR(F("Ethconfig checksum wrong")); + + return false; + } + + displayIPConfigStruct(EthSTA_IPconfig); + + return true; + } + else + { + LOGERROR(F("failed")); + + return false; + } +} + +////////////////////////////////////////////////////////////// + +void saveConfigData() +{ + File file = FileFS.open(CONFIG_FILENAME, "w"); + LOGERROR(F("SaveCfgFile ")); + + if (file) + { + Ethconfig.checksum = calcChecksum( (uint8_t*) &Ethconfig, sizeof(Ethconfig) - sizeof(Ethconfig.checksum) ); + + file.write((uint8_t*) &Ethconfig, sizeof(Ethconfig)); + + displayIPConfigStruct(EthSTA_IPconfig); + + file.write((uint8_t*) &EthSTA_IPconfig, sizeof(EthSTA_IPconfig)); + file.close(); + + LOGERROR(F("OK")); + } + else + { + LOGERROR(F("failed")); + } +} + +////////////////////////////////////////////////////////////// + +bool readConfigFile() +{ + // this opens the config file in read-mode + File f = FileFS.open(JSON_CONFIG_FILE, "r"); + + if (!f) + { + Serial.println(F("Configuration file not found")); + + return false; + } + else + { + // we could open the file + size_t size = f.size(); + // Allocate a buffer to store contents of the file. + std::unique_ptr buf(new char[size + 1]); + + // Read and store file contents in buf + f.readBytes(buf.get(), size); + // Closing file + f.close(); + // Using dynamic JSON buffer which is not the recommended memory model, but anyway + // See https://github.com/bblanchon/ArduinoJson/wiki/Memory%20model + +#if (ARDUINOJSON_VERSION_MAJOR >= 6) + DynamicJsonDocument json(1024); + auto deserializeError = deserializeJson(json, buf.get()); + + if ( deserializeError ) + { + Serial.println(F("JSON parseObject() failed")); + + return false; + } + + serializeJson(json, Serial); +#else + DynamicJsonBuffer jsonBuffer; + // Parse JSON string + JsonObject& json = jsonBuffer.parseObject(buf.get()); + + // Test if parsing succeeds. + if (!json.success()) + { + Serial.println(F("JSON parseObject() failed")); + return false; + } + + json.printTo(Serial); +#endif + + // Parse all config file parameters, override + // local config variables with parsed values + if (json.containsKey(ThingSpeakAPI_Label)) + { + strcpy(thingspeakApiKey, json[ThingSpeakAPI_Label]); + } + + if (json.containsKey(SensorDht22_Label)) + { + sensorDht22 = json[SensorDht22_Label]; + } + + if (json.containsKey(PinSDA_Label)) + { + pinSda = json[PinSDA_Label]; + } + + if (json.containsKey(PinSCL_Label)) + { + pinScl = json[PinSCL_Label]; + } + } + + Serial.println(F("\nConfig file was successfully parsed")); + + return true; +} + +////////////////////////////////////////////////////////////// + +bool writeConfigFile() +{ + Serial.println(F("Saving config file")); + +#if (ARDUINOJSON_VERSION_MAJOR >= 6) + DynamicJsonDocument json(1024); +#else + DynamicJsonBuffer jsonBuffer; + JsonObject& json = jsonBuffer.createObject(); +#endif + + // JSONify local configuration parameters + json[ThingSpeakAPI_Label] = thingspeakApiKey; + json[SensorDht22_Label] = sensorDht22; + json[PinSDA_Label] = pinSda; + json[PinSCL_Label] = pinScl; + + // Open file for writing + File f = FileFS.open(JSON_CONFIG_FILE, "w"); + + if (!f) + { + Serial.println(F("Failed to open config file for writing")); + + return false; + } + +#if (ARDUINOJSON_VERSION_MAJOR >= 6) + serializeJsonPretty(json, Serial); + // Write data to file and close it + serializeJson(json, f); +#else + json.prettyPrintTo(Serial); + // Write data to file and close it + json.printTo(f); +#endif + + f.close(); + + Serial.println(F("\nConfig file was successfully saved")); + + return true; +} + +////////////////////////////////////////////////////////////// + +void initEthernet() +{ + SPI.begin(); + SPI.setClockDivider(SPI_CLOCK_DIV4); + SPI.setBitOrder(MSBFIRST); + SPI.setDataMode(SPI_MODE0); + + LOGWARN(F("Default SPI pinout:")); + LOGWARN1(F("MOSI:"), MOSI); + LOGWARN1(F("MISO:"), MISO); + LOGWARN1(F("SCK:"), SCK); + LOGWARN1(F("CS:"), CSPIN); + LOGWARN(F("=========================")); + +#if !USING_DHCP + //eth.config(localIP, gateway, netMask, gateway); + eth.config(EthSTA_IPconfig._sta_static_ip, EthSTA_IPconfig._sta_static_gw, EthSTA_IPconfig._sta_static_sn, + EthSTA_IPconfig._sta_static_dns1); +#endif + + eth.setDefault(); + + if (!eth.begin()) + { + Serial.println("No Ethernet hardware ... Stop here"); + + while (true) + { + delay(1000); + } + } + else + { + Serial.print("Connecting to network : "); + + while (!eth.connected()) + { + Serial.print("."); + delay(1000); + } + } + + Serial.println(); + +#if USING_DHCP + Serial.print("Ethernet DHCP IP address: "); +#else + Serial.print("Ethernet Static IP address: "); +#endif + + Serial.println(eth.localIP()); +} + +////////////////////////////////////////////////////////////// + +void setup() +{ + //set led pin as output + pinMode(LED_BUILTIN, OUTPUT); + + // Put your setup code here, to run once + Serial.begin(115200); + + while (!Serial && millis() < 5000); + + delay(200); + + Serial.print(F("\nStarting Async_ConfigOnSwichFS using ")); + Serial.print(FS_Name); + Serial.print(F(" on ")); + Serial.print(ARDUINO_BOARD); + Serial.print(F(" with ")); + Serial.println(SHIELD_TYPE); + Serial.println(ASYNC_ESP8266_W5100_MANAGER_VERSION); + + // Initialize the LED digital pin as an output. + // Initialize trigger pins + pinMode(TRIGGER_PIN, INPUT_PULLUP); + pinMode(TRIGGER_PIN2, INPUT_PULLUP); + +#if FORMAT_FILESYSTEM + Serial.println(F("Forced Formatting.")); + FileFS.format(); +#endif + + // Format FileFS if not yet + if (!FileFS.begin()) + { + FileFS.format(); + + Serial.println(F("SPIFFS/LittleFS failed! Already tried formatting.")); + + if (!FileFS.begin()) + { + // prevents debug info from the library to hide err message. + delay(100); + +#if USE_LITTLEFS + Serial.println(F("LittleFS failed!. Please use SPIFFS or EEPROM. Stay forever")); +#else + Serial.println(F("SPIFFS failed!. Please use LittleFS or EEPROM. Stay forever")); +#endif + + while (true) + { + delay(1); + } + } + } + + initSTAIPConfigStruct(EthSTA_IPconfig); + + if (!readConfigFile()) + { + Serial.println(F("Failed to read ConfigFile, using default values")); + } + + unsigned long startedAt = millis(); + + //Local intialization. Once its business is done, there is no need to keep it around + // Use this to default DHCP hostname to ESP32-XXXXXX + //AsyncESP8266_W5100_Manager AsyncESP8266_W5100_manager(&webServer, &dnsServer); + // Use this to personalize DHCP hostname (RFC952 conformed) + AsyncWebServer webServer(HTTP_PORT); + +#if ( USING_ESP32_S2 || USING_ESP32_C3 ) + AsyncESP8266_W5100_Manager AsyncESP8266_W5100_manager(&webServer, NULL, "ConfigOnSwitchFS"); +#else + AsyncDNSServer dnsServer; + + AsyncESP8266_W5100_Manager AsyncESP8266_W5100_manager(&webServer, &dnsServer, "ConfigOnSwitchFS"); +#endif + + AsyncESP8266_W5100_manager.setDebugOutput(true); + +#if !USE_DHCP_IP + // Set (static IP, Gateway, Subnetmask, DNS1 and DNS2) or (IP, Gateway, Subnetmask) + AsyncESP8266_W5100_manager.setSTAStaticIPConfig(EthSTA_IPconfig); +#endif + +#if USING_CORS_FEATURE + AsyncESP8266_W5100_manager.setCORSHeader("Your Access-Control-Allow-Origin"); +#endif + + bool configDataLoaded = false; + + if (loadConfigData()) + { + configDataLoaded = true; + + //If no access point name has been previously entered disable timeout + AsyncESP8266_W5100_manager.setConfigPortalTimeout(120); + + Serial.println(F("Got stored Credentials. Timeout 120s for Config Portal")); + +#if USE_ESP_ETH_MANAGER_NTP + + if ( strlen(Ethconfig.TZ_Name) > 0 ) + { + LOGERROR3(F("Current TZ_Name ="), Ethconfig.TZ_Name, F(", TZ = "), Ethconfig.TZ); + + configTime(Ethconfig.TZ, "pool.ntp.org"); + } + else + { + Serial.println(F("Current Timezone is not set. Enter Config Portal to set.")); + } + +#endif + } + else + { + // Enter CP only if no stored Credentials on flash and file + Serial.println(F("Open Config Portal without Timeout: No stored Credentials.")); + initialConfig = true; + } + + ////////////////////////////////// + + // Connect ETH now if using STA + initEthernet(); + + ////////////////////////////////// + + if (initialConfig) + { + Serial.print(F("Starting configuration portal @ ")); + Serial.println(eth.localIP()); + + digitalWrite(LED_BUILTIN, LED_ON); // Turn led on as we are in configuration mode. + + //sets timeout in seconds until configuration portal gets turned off. + //If not specified device will remain in configuration mode until + //switched off via webserver or device is restarted. + //AsyncESP8266_W5100_manager.setConfigPortalTimeout(600); + + // Starts an access point + if (!AsyncESP8266_W5100_manager.startConfigPortal()) + Serial.println(F("Not connected to ETH network but continuing anyway.")); + else + { + Serial.println(F("ETH network connected...yeey :)")); + } + +#if USE_ESP_ETH_MANAGER_NTP + String tempTZ = AsyncESP8266_W5100_manager.getTimezoneName(); + + if (strlen(tempTZ.c_str()) < sizeof(Ethconfig.TZ_Name) - 1) + strcpy(Ethconfig.TZ_Name, tempTZ.c_str()); + else + strncpy(Ethconfig.TZ_Name, tempTZ.c_str(), sizeof(Ethconfig.TZ_Name) - 1); + + const char * TZ_Result = AsyncESP8266_W5100_manager.getTZ(Ethconfig.TZ_Name); + + if (strlen(TZ_Result) < sizeof(Ethconfig.TZ) - 1) + strcpy(Ethconfig.TZ, TZ_Result); + else + strncpy(Ethconfig.TZ, TZ_Result, sizeof(Ethconfig.TZ_Name) - 1); + + if ( strlen(Ethconfig.TZ_Name) > 0 ) + { + LOGERROR3(F("Saving current TZ_Name ="), Ethconfig.TZ_Name, F(", TZ = "), Ethconfig.TZ); + + configTime(Ethconfig.TZ, "pool.ntp.org"); + } + else + { + LOGERROR(F("Current Timezone Name is not set. Enter Config Portal to set.")); + } + +#endif + + AsyncESP8266_W5100_manager.getSTAStaticIPConfig(EthSTA_IPconfig); + + saveConfigData(); + } + + digitalWrite(LED_BUILTIN, LED_OFF); // Turn led off as we are not in configuration mode. + + startedAt = millis(); + + Serial.print(F("After waiting ")); + Serial.print((float) (millis() - startedAt) / 1000); + Serial.print(F(" secs more in setup(), connection result is ")); + + if (eth.connected()) + { + Serial.print(F("connected. Local IP: ")); + Serial.println(eth.localIP()); + } +} + +////////////////////////////////////////////////////////////// + +void loop() +{ + // is configuration portal requested? + if ((digitalRead(TRIGGER_PIN) == LOW) || (digitalRead(TRIGGER_PIN2) == LOW)) + { + Serial.println(F("\nConfiguration portal requested.")); + digitalWrite(LED_BUILTIN, LED_ON); // turn the LED on by making the voltage LOW to tell us we are in configuration mode. + + //Local intialization. Once its business is done, there is no need to keep it around + // Use this to default DHCP hostname to ESP32-XXXXXX + //AsyncESP8266_W5100_Manager AsyncESP8266_W5100_manager(&webServer, &dnsServer); + // Use this to personalize DHCP hostname (RFC952 conformed) + AsyncWebServer webServer(HTTP_PORT); + AsyncDNSServer dnsServer; + + AsyncESP8266_W5100_Manager AsyncESP8266_W5100_manager(&webServer, &dnsServer, "ConfigOnSwitchFS"); + + //Check if there is stored credentials. + //If not found, device will remain in configuration mode until switched off via webserver. + Serial.println(F("Opening configuration portal. ")); + + if (loadConfigData()) + { + AsyncESP8266_W5100_manager.setConfigPortalTimeout( + 120); //If no access point name has been previously entered disable timeout. + Serial.println(F("Got stored Credentials. Timeout 120s for Config Portal")); + } + else + { + // Enter CP only if no stored SSID on flash and file + Serial.println(F("Open Config Portal without Timeout: No stored Credentials.")); + initialConfig = true; + } + + // Extra parameters to be configured + // After connecting, parameter.getValue() will get you the configured value + // Format:

+ +

+ +Select `Information` to enter the Info page where the board info will be shown (long page) + +

+ +

+ + +Select `Configuration` to enter this page where you can select an AP and specify its WiFi Credentials + +

+ +

+ +Enter your credentials, then click `Save`. + +--- + +## How to use this Async_ESP_FSWebServer example? + +This shows you how to use this example in Ubuntu (but you can use similar commands in other OSes) + +### Download Data files + +1. For example, you already downloaded data files from [Async_ESP_FSWebServer data](https://github.com/khoih-prog/AsyncESP8266_W5500_Manager/tree/main/examples/Async_ESP_FSWebServer/data) to a local folder, for example: + +``` +~/Arduino/libraries/AsyncESP8266_W5500_Manager-main/examples/Async_ESP_FSWebServer/data +``` + +### HOWTO Upload files to ESP8266 (LittleFS or SPIFFS) + +Use one of these methods (preferable first) + +1. Go to http://async-esp8266fs.local/edit.htm, then "Choose file" -> "Upload" +2. or Upload the contents of the data folder with MkSPIFFS Tool ("ESP8266 Sketch Data Upload" in Tools menu in Arduino IDE) +3. or upload the contents of a folder by running the following commands: + +``` +Ubuntu$ cd ~/Arduino/libraries/AsyncESP8266_W5500_Manager-main/examples/Async_ESP_FSWebServer/data +Ubuntu$ for file in \`\ls -A1\`; do curl -F "file=@$PWD/$file" http://async-esp8266fs.local/edit; done +``` + +--- + +### Demonstrating pictures + +

+ +

+ +4. Edit / Delete / Download any file in the the folder by going to http://async-esp8266fs.local/edit.htm + +

+ +

+ + diff --git a/examples/Async_ESP_FSWebServer/data/CanadaFlag_1.png b/examples/Async_ESP_FSWebServer/data/CanadaFlag_1.png new file mode 100644 index 0000000000000000000000000000000000000000..e3089877a83b0445506ccc764caed7922820b79c GIT binary patch literal 41214 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∾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 Sn()s7@S}?`(kh4F4F4adf8J^U literal 0 HcmV?d00001 diff --git a/examples/Async_ESP_FSWebServer/data/CanadaFlag_2.png b/examples/Async_ESP_FSWebServer/data/CanadaFlag_2.png new file mode 100644 index 0000000000000000000000000000000000000000..d51d229c29ce5c89f4e56ae44d06c6af925deca3 GIT binary patch literal 8311 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 Dvn_B_ literal 0 HcmV?d00001 diff --git a/examples/Async_ESP_FSWebServer/data/edit.htm.gz b/examples/Async_ESP_FSWebServer/data/edit.htm.gz new file mode 100644 index 0000000000000000000000000000000000000000..69ce414f47f4b25a70160fc4985b2bd320c9b90a GIT binary patch literal 4116 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 literal 0 HcmV?d00001 diff --git a/examples/Async_ESP_FSWebServer/data/graphs.js.gz b/examples/Async_ESP_FSWebServer/data/graphs.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..72435445a7ef86e00fe6c66b3b71c47fdbd53a93 GIT binary patch literal 1971 zcmV;k2Tb@MiwFo@s$5k717~t!aAw-*8%!ep`yEM!aI@XpTRzN;M>CH`Bk93rb1y+*nfgVXr6{*O z+qWk+vpIfdbmRB&GiOD~!8-BI8jWLya*xm0`?Ns*u7@$U5b~-2FAtyY?VsHiJWiul z$g}Ci$m17Tz>sgbNBG!p6`3AIdmW5d-8e)$jYf;JJn?*ncK^L=>v4>q7o#|V#AXxo zd(ilSPVW5&A*9`%(ECk!Y+arKfe)*P?pEpRp~jzoF096?>r=Aoz97T=5)|h&-xQIu zg>l28ew8E08a6CBp`}c_5jC)_GP?DY`3f}-jd!TP&)0@aTI6>ySBJ(C^6Vjg_FCi? z4W)y8K|{N+7xu_b?5Q2tp*_aW9rTMaq?DSsrVu+rd~J}hE1ki{8Q_4DpSuf+7N=y0 z&lbmI*d0+cIw7C&8TouX>b8vuC7%rP5n-@XYJN3AXB2Qkjq~PBh|f&&!8{IOB&X(2 zH9yyb7aQ|uSdryo%OvNrl!(4VCh<(%jlKg>o+p(VLEZu+SU49}D`X?;9hV2J6#b@5xoQzr_H2o5@^1L}hMUELzT^@ZjjKOo0;;PSc-R=y16 zZ?GMY#vgK8*szEP4+cZTEn{%f2k_E z27Gde+C~f)Fg^jqZfsd{i2;6w@jVpRk!@);Z(!Q^0V_`j7DaAW9TdZ@cIt4a4szZaa^^aU29qDr;ABm46G?-=na2}Ferp=!isDL5 zZsRR-8*h`__!TcbYL6zj@e8?){|UK0{(#)d@5!y&&_(q^Zq+tjEH`wq+|b2RliLz5 zFqaQCU2wY8dG2R6eWA(3ua&TB6J>0#%pV>3Z zdyofc0!I`ut`SP$kiJ3WHi#-0<433_` z)YOv0bAAFn?dFnNRNv(ebZf$J9m~5X4;HB}|KgQLUj9wtTU0ot`o1rAx!kOPE}Fw8 zS~Q^pvJt_F1Mf4=n%)ASw`5Ik|GTcX!Dzk1YQ^WUvs*ob65M#*8Pl}n#sj~2z;Kp3 z#wt>!wBemdQe1%Fa@<6G*Tw3BO6(?)=)j$C-mo1S$t$oENe=yhLb-k<8_;yI4OzB} zRnJ39Vd(ZadQJ$E_Fo6+T+OyM?w0=_W4@|s1;9o}-pE(zujhQpQ&}rb!wtIwq}*=X z4FSKo$AySPF)Nk{6YIBX;rZfke?Eikq=c+ENp6^52>r$^5|&2ANW^K%_#LYXv7c8e z=vGa#hyxfcmO0B{UVkpiG+<$zvOo;WqJY`6)K6l6B8Kp~K2ezpCd|@8%tl_2EiSSo zFA^|v1uq>WUSe{a+%Cnisy&!<^nU5?i#QLL2@C+6O z9mvZ6hkhC(4R=nr5iF#GH6&3&)`F6DcbF}Sh6I^7IhzV|9hOnAbbP~0)_aTc?G-T zUOp0`CmZu63}>tmJ`@(Gu)SWMGnfEAsi4IU)bR<5*jr~_#!;-Z^EjQ<&VItC4B8MT z8B`^L%rDim_gH$+=1MruU~n)H8CPxfm(bCv7eR<84hDk()HUc0oPGxaFZ!1Rx^{U0 z&VK*U?e~RBheyXbhhXsb4|_d`A?>3*L0l+t&uz4z32}iM0zT**`+0@&e*in8G#?BP F000|7$0Ps% literal 0 HcmV?d00001 diff --git a/examples/Async_ESP_FSWebServer/data/index.htm b/examples/Async_ESP_FSWebServer/data/index.htm new file mode 100644 index 0000000..4e1dc7d --- /dev/null +++ b/examples/Async_ESP_FSWebServer/data/index.htm @@ -0,0 +1,97 @@ + + + + + + ESP Monitor + + + + +
+ + + + +
+
+
+
+ + \ No newline at end of file diff --git a/examples/Async_ESP_FSWebServer/pics/async-esp8266fs.local.png b/examples/Async_ESP_FSWebServer/pics/async-esp8266fs.local.png new file mode 100644 index 0000000000000000000000000000000000000000..57eb9afc94ba73a9fa04e31384ecf3e9fa845e89 GIT binary patch literal 20450 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 literal 0 HcmV?d00001 diff --git a/examples/Async_ESP_FSWebServer_DRD/Async_ESP_FSWebServer_DRD.ino b/examples/Async_ESP_FSWebServer_DRD/Async_ESP_FSWebServer_DRD.ino new file mode 100644 index 0000000..c706662 --- /dev/null +++ b/examples/Async_ESP_FSWebServer_DRD/Async_ESP_FSWebServer_DRD.ino @@ -0,0 +1,872 @@ +/**************************************************************************************************************************** + Async_ESP_FSWebServer_DRD - Example WebServer with SPIFFS backend for esp8266 + For Ethernet shields using ESP8266_W5100 (ESP8266 + LwIP W5100, W5100S) + + WebServer_ESP8266_W5100 is a library for the ESP8266 with Ethernet W5100, W5100S to run WebServer + + Modified from + 1. Tzapu (https://github.com/tzapu/WiFiManager) + 2. Ken Taylor (https://github.com/kentaylor) + 3. Alan Steremberg (https://github.com/alanswx/ESPAsyncWiFiManager) + 4. Khoi Hoang (https://github.com/khoih-prog/ESPAsync_WiFiManager) + + Built by Khoi Hoang https://github.com/khoih-prog/AsyncESP8266_W5100_Manager + Licensed under MIT license + *****************************************************************************************************************************/ +/***************************************************************************************************************************** + Compare this efficient Async_ESP_FSWebServer example with the so complicated twin ESP32_FSWebServer + in (https://github.com/khoih-prog/ESP_WiFiManager) to appreciate the powerful AsynWebServer. + + How To Upload Files: + 1) Go to http://async-esp8266fs.local/edit, then "Choose file" -> "Upload" + 2) or Upload the contents of the data folder with MkSPIFFS Tool ("ESP8266 Sketch Data Upload" in Tools menu in Arduino IDE) + 3) or you can upload the contents of a folder if you CD in that folder and run the following command: + for file in `\ls -A1`; do curl -F "file=@$PWD/$file" async-esp8266fs.local/edit; done + + How To Use: + 1) access the sample web page at http://async-esp8266fs.local + 2) edit the page by going to http://async-esp8266fs.local/edit + 3) Use configurable user/password to login. Default is admin/admin +*****************************************************************************************************************************/ + +#if !( defined(ESP8266) ) + #error This code is intended to run on the (ESP8266 + W5100) platform! Please check your Tools->Board setting. +#endif + +////////////////////////////////////////////////////////////// + +// Use from 0 to 4. Higher number, more debugging messages and memory usage. +#define _ESPASYNC_ETH_MGR_LOGLEVEL_ 4 + +// To not display stored SSIDs and PWDs on Config Portal, select false. Default is true +// Even the stored Credentials are not display, just leave them all blank to reconnect and reuse the stored Credentials +//#define DISPLAY_STORED_CREDENTIALS_IN_CP false + +////////////////////////////////////////////////////////////// +// Using GPIO4, GPIO16, or GPIO5 +#define CSPIN 16 + +////////////////////////////////////////////////////////// + +#include + +// Now support ArduinoJson 6.0.0+ ( tested with v6.19.4 ) +#include // get it from https://arduinojson.org/ or install via Arduino library manager + +#include //https://github.com/esp8266/Arduino +//needed for library +#include +#include + +#define USE_LITTLEFS true + +#if USE_LITTLEFS + #include + FS* filesystem = &LittleFS; + #define FileFS LittleFS + #define FS_Name "LittleFS" +#else + FS* filesystem = &SPIFFS; + #define FileFS SPIFFS + #define FS_Name "SPIFFS" +#endif + +////////////////////////////////////////////////////////// + +#define ESP_getChipId() (ESP.getChipId()) + +#define LED_ON LOW +#define LED_OFF HIGH + +////////////////////////////////////////////////////////// + +// These defines must be put before #include +// to select where to store DoubleResetDetector's variable. +// For ESP32, You must select one to be true (EEPROM or SPIFFS) +// For ESP8266, You must select one to be true (RTC, EEPROM, SPIFFS or LITTLEFS) +// Otherwise, library will use default EEPROM storage + +// These defines must be put before #include +// to select where to store DoubleResetDetector's variable. +// For ESP32, You must select one to be true (EEPROM or SPIFFS) +// Otherwise, library will use default EEPROM storage + +// For DRD +// These defines must be put before #include +// to select where to store DoubleResetDetector's variable. +// For ESP8266, You must select one to be true (RTC, EEPROM, SPIFFS or LITTLEFS) +// Otherwise, library will use default EEPROM storage +#if USE_LITTLEFS + #define ESP_DRD_USE_LITTLEFS true + #define ESP_DRD_USE_SPIFFS false +#else + #define ESP_DRD_USE_LITTLEFS false + #define ESP_DRD_USE_SPIFFS true +#endif + +#define ESP_DRD_USE_EEPROM false +#define ESP8266_DRD_USE_RTC false + +#define DOUBLERESETDETECTOR_DEBUG true //false + +#include //https://github.com/khoih-prog/ESP_DoubleResetDetector + +// 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 + +//DoubleResetDetector drd(DRD_TIMEOUT, DRD_ADDRESS); +DoubleResetDetector* drd; + +////////////////////////////////////////////////////////// + +// Assuming max 49 chars +#define TZNAME_MAX_LEN 50 +#define TIMEZONE_MAX_LEN 50 + +typedef struct +{ + char TZ_Name[TZNAME_MAX_LEN]; // "America/Toronto" + char TZ[TIMEZONE_MAX_LEN]; // "EST5EDT,M3.2.0,M11.1.0" + uint16_t checksum; +} EthConfig; + +EthConfig Ethconfig; + +#define CONFIG_FILENAME F("/eth_cred.dat") + +////////////////////////////////////////////////////////// + +// Indicates whether ESP has credentials saved from previous session, or double reset detected +bool initialConfig = false; + +// Use false if you don't like to display Available Pages in Information Page of Config Portal +// Comment out or use true to display Available Pages in Information Page of Config Portal +// Must be placed before #include +#define USE_AVAILABLE_PAGES true //false + +// To permit disable/enable StaticIP configuration in Config Portal from sketch. Valid only if DHCP is used. +// You'll loose the feature of dynamically changing from DHCP to static IP, or vice versa +// You have to explicitly specify false to disable the feature. +//#define USE_STATIC_IP_CONFIG_IN_CP false + +// Use false to disable NTP config. Advisable when using Cellphone, Tablet to access Config Portal. +// See Issue 23: On Android phone ConfigPortal is unresponsive (https://github.com/khoih-prog/ESP_WiFiManager/issues/23) +#define USE_ESP_ETH_MANAGER_NTP true //false + +// Just use enough to save memory. On ESP8266, can cause blank ConfigPortal screen +// if using too much memory +#define USING_AFRICA false +#define USING_AMERICA true +#define USING_ANTARCTICA false +#define USING_ASIA false +#define USING_ATLANTIC false +#define USING_AUSTRALIA false +#define USING_EUROPE false +#define USING_INDIAN false +#define USING_PACIFIC false +#define USING_ETC_GMT false + +// Use true to enable CloudFlare NTP service. System can hang if you don't have Internet access while accessing CloudFlare +// See Issue #21: CloudFlare link in the default portal (https://github.com/khoih-prog/ESP_WiFiManager/issues/21) +#define USE_CLOUDFLARE_NTP false + +#define USING_CORS_FEATURE true + +//////////////////////////////////////////// + +// Use USE_DHCP_IP == true for dynamic DHCP IP, false to use static IP which you have to change accordingly to your network +#if (defined(USE_STATIC_IP_CONFIG_IN_CP) && !USE_STATIC_IP_CONFIG_IN_CP) + // Force DHCP to be true + #if defined(USE_DHCP_IP) + #undef USE_DHCP_IP + #endif + #define USE_DHCP_IP true +#else + // You can select DHCP or Static IP here + //#define USE_DHCP_IP true + #define USE_DHCP_IP false +#endif + +#if ( USE_DHCP_IP ) + // Use DHCP + + #if (_ESPASYNC_ETH_MGR_LOGLEVEL_ > 3) + #warning Using DHCP IP + #endif + + IPAddress stationIP = IPAddress(0, 0, 0, 0); + IPAddress gatewayIP = IPAddress(192, 168, 2, 1); + IPAddress netMask = IPAddress(255, 255, 255, 0); + +#else + // Use static IP + + #if (_ESPASYNC_ETH_MGR_LOGLEVEL_ > 3) + #warning Using static IP + #endif + + IPAddress stationIP = IPAddress(192, 168, 2, 186); + IPAddress gatewayIP = IPAddress(192, 168, 2, 1); + IPAddress netMask = IPAddress(255, 255, 255, 0); +#endif + +//////////////////////////////////////////// + +#define USE_CONFIGURABLE_DNS true + +IPAddress dns1IP = gatewayIP; +IPAddress dns2IP = IPAddress(8, 8, 8, 8); + +#include //https://github.com/khoih-prog/AsyncESP8266_W5100_Manager + +String host = "async-esp8266fs"; + +#define HTTP_PORT 80 + +AsyncWebServer server(HTTP_PORT); +AsyncDNSServer dnsServer; + +AsyncEventSource events("/events"); + +String http_username = "admin"; +String http_password = "admin"; + +String separatorLine = "==============================================================="; + +////////////////////////////////////////////////////////////// + +/****************************************** + // Defined in AsyncESP8266_W5100_Manager.hpp + typedef struct + { + IPAddress _sta_static_ip; + IPAddress _sta_static_gw; + IPAddress _sta_static_sn; + #if USE_CONFIGURABLE_DNS + IPAddress _sta_static_dns1; + IPAddress _sta_static_dns2; + #endif + } ETH_STA_IPConfig; +******************************************/ + +ETH_STA_IPConfig EthSTA_IPconfig; + +////////////////////////////////////////////////////////////// + +void initSTAIPConfigStruct(ETH_STA_IPConfig &in_EthSTA_IPconfig) +{ + in_EthSTA_IPconfig._sta_static_ip = stationIP; + in_EthSTA_IPconfig._sta_static_gw = gatewayIP; + in_EthSTA_IPconfig._sta_static_sn = netMask; +#if USE_CONFIGURABLE_DNS + in_EthSTA_IPconfig._sta_static_dns1 = dns1IP; + in_EthSTA_IPconfig._sta_static_dns2 = dns2IP; +#endif +} + +////////////////////////////////////////////////////////////// + +void displayIPConfigStruct(ETH_STA_IPConfig in_EthSTA_IPconfig) +{ + LOGERROR3(F("stationIP ="), in_EthSTA_IPconfig._sta_static_ip, ", gatewayIP =", in_EthSTA_IPconfig._sta_static_gw); + LOGERROR1(F("netMask ="), in_EthSTA_IPconfig._sta_static_sn); +#if USE_CONFIGURABLE_DNS + LOGERROR3(F("dns1IP ="), in_EthSTA_IPconfig._sta_static_dns1, ", dns2IP =", in_EthSTA_IPconfig._sta_static_dns2); +#endif +} + +////////////////////////////////////////////////////////////// + +//format bytes +String formatBytes(size_t bytes) +{ + if (bytes < 1024) + { + return String(bytes) + "B"; + } + else if (bytes < (1024 * 1024)) + { + return String(bytes / 1024.0) + "KB"; + } + else if (bytes < (1024 * 1024 * 1024)) + { + return String(bytes / 1024.0 / 1024.0) + "MB"; + } + else + { + return String(bytes / 1024.0 / 1024.0 / 1024.0) + "GB"; + } +} + +////////////////////////////////////////////////////////////// + +void toggleLED() +{ + //toggle state + digitalWrite(LED_BUILTIN, !digitalRead(LED_BUILTIN)); +} + +////////////////////////////////////////////////////////////// + +#if USE_ESP_ETH_MANAGER_NTP +void printLocalTime() +{ + static time_t now; + + now = time(nullptr); + + if ( now > 1451602800 ) + { + Serial.print("Local Date/Time: "); + Serial.print(ctime(&now)); + } +} +#endif + +////////////////////////////////////////////////////////// + +void heartBeatPrint() +{ +#if USE_ESP_ETH_MANAGER_NTP + printLocalTime(); +#else + static int num = 1; + + if (eth.connected()) + Serial.print(F("H")); // H means connected to Ethernet + else + Serial.print(F("F")); // F means not connected to Ethernet + + if (num == 80) + { + Serial.println(); + num = 1; + } + else if (num++ % 10 == 0) + { + Serial.print(F(" ")); + } + +#endif +} + +////////////////////////////////////////////////////////////// + +void check_status() +{ + static ulong checkstatus_timeout = 0; + + static ulong current_millis; + +#if USE_ESP_ETH_MANAGER_NTP +#define HEARTBEAT_INTERVAL 60000L +#else +#define HEARTBEAT_INTERVAL 10000L +#endif + + current_millis = millis(); + + // Print hearbeat every HEARTBEAT_INTERVAL (10) seconds. + if ((current_millis > checkstatus_timeout) || (checkstatus_timeout == 0)) + { + heartBeatPrint(); + checkstatus_timeout = current_millis + HEARTBEAT_INTERVAL; + } +} + +////////////////////////////////////////////////////////////// + +int calcChecksum(uint8_t* address, uint16_t sizeToCalc) +{ + uint16_t checkSum = 0; + + for (uint16_t index = 0; index < sizeToCalc; index++) + { + checkSum += * ( ( (byte*) address ) + index); + } + + return checkSum; +} + +////////////////////////////////////////////////////////////// + +bool loadConfigData() +{ + File file = FileFS.open(CONFIG_FILENAME, "r"); + LOGERROR(F("LoadCfgFile ")); + + memset((void *) &Ethconfig, 0, sizeof(Ethconfig)); + memset((void *) &EthSTA_IPconfig, 0, sizeof(EthSTA_IPconfig)); + + if (file) + { + file.readBytes((char *) &Ethconfig, sizeof(Ethconfig)); + file.readBytes((char *) &EthSTA_IPconfig, sizeof(EthSTA_IPconfig)); + file.close(); + + LOGERROR(F("OK")); + + if ( Ethconfig.checksum != calcChecksum( (uint8_t*) &Ethconfig, sizeof(Ethconfig) - sizeof(Ethconfig.checksum) ) ) + { + LOGERROR(F("Ethconfig checksum wrong")); + + return false; + } + + displayIPConfigStruct(EthSTA_IPconfig); + + return true; + } + else + { + LOGERROR(F("failed")); + + return false; + } +} + +////////////////////////////////////////////////////////////// + +void saveConfigData() +{ + File file = FileFS.open(CONFIG_FILENAME, "w"); + LOGERROR(F("SaveCfgFile ")); + + if (file) + { + Ethconfig.checksum = calcChecksum( (uint8_t*) &Ethconfig, sizeof(Ethconfig) - sizeof(Ethconfig.checksum) ); + + file.write((uint8_t*) &Ethconfig, sizeof(Ethconfig)); + + displayIPConfigStruct(EthSTA_IPconfig); + + file.write((uint8_t*) &EthSTA_IPconfig, sizeof(EthSTA_IPconfig)); + file.close(); + + LOGERROR(F("OK")); + } + else + { + LOGERROR(F("failed")); + } +} + +////////////////////////////////////////////////////////////// + +void initEthernet() +{ + SPI.begin(); + SPI.setClockDivider(SPI_CLOCK_DIV4); + SPI.setBitOrder(MSBFIRST); + SPI.setDataMode(SPI_MODE0); + + LOGWARN(F("Default SPI pinout:")); + LOGWARN1(F("MOSI:"), MOSI); + LOGWARN1(F("MISO:"), MISO); + LOGWARN1(F("SCK:"), SCK); + LOGWARN1(F("CS:"), CSPIN); + LOGWARN(F("=========================")); + +#if !USING_DHCP + //eth.config(localIP, gateway, netMask, gateway); + eth.config(EthSTA_IPconfig._sta_static_ip, EthSTA_IPconfig._sta_static_gw, EthSTA_IPconfig._sta_static_sn, + EthSTA_IPconfig._sta_static_dns1); +#endif + + eth.setDefault(); + + if (!eth.begin()) + { + Serial.println("No Ethernet hardware ... Stop here"); + + while (true) + { + delay(1000); + } + } + else + { + Serial.print("Connecting to network : "); + + while (!eth.connected()) + { + Serial.print("."); + delay(1000); + } + } + + Serial.println(); + +#if USING_DHCP + Serial.print("Ethernet DHCP IP address: "); +#else + Serial.print("Ethernet Static IP address: "); +#endif + + Serial.println(eth.localIP()); +} + +////////////////////////////////////////////////////////////// + +void setup() +{ + //set led pin as output + pinMode(LED_BUILTIN, OUTPUT); + + Serial.begin(115200); + + while (!Serial); + + delay(200); + + Serial.print(F("\nStarting Async_ESP_FSWebServer_DRD using ")); + Serial.print(FS_Name); + Serial.print(F(" on ")); + Serial.print(ARDUINO_BOARD); + Serial.print(F(" with ")); + Serial.println(SHIELD_TYPE); + Serial.println(ASYNC_ESP8266_W5100_MANAGER_VERSION); + Serial.println(ESP_DOUBLE_RESET_DETECTOR_VERSION); + + Serial.setDebugOutput(false); + + // Uncomment to force FS format. Remember to uncomment after done +#if FORMAT_FILESYSTEM + Serial.println(F("Forced Formatting.")); + FileFS.format(); +#endif + + // Format FileFS if not yet + if (!FileFS.begin()) + { + FileFS.format(); + + Serial.println(F("SPIFFS/LittleFS failed! Already tried formatting.")); + + if (!FileFS.begin()) + { + // prevents debug info from the library to hide err message. + delay(100); + +#if USE_LITTLEFS + Serial.println(F("LittleFS failed!. Please use SPIFFS or EEPROM. Stay forever")); +#else + Serial.println(F("SPIFFS failed!. Please use LittleFS or EEPROM. Stay forever")); +#endif + + while (true) + { + delay(1); + } + } + } + + Dir dir = FileFS.openDir("/"); + Serial.println(F("Opening / directory")); + + while (dir.next()) + { + String fileName = dir.fileName(); + size_t fileSize = dir.fileSize(); + + Serial.println("FS File: " + fileName + ", size: " + formatBytes(fileSize)); + } + + Serial.println(); + + drd = new DoubleResetDetector(DRD_TIMEOUT, DRD_ADDRESS); + + if (!drd) + Serial.println(F("Can't instantiate. Disable DRD feature")); + + unsigned long startedAt = millis(); + + initSTAIPConfigStruct(EthSTA_IPconfig); + + digitalWrite(LED_BUILTIN, LED_ON); + + //Local intialization. Once its business is done, there is no need to keep it around + // Use this to default DHCP hostname to ESP8266-XXXXXX or ESP32-XXXXXX + //AsyncESP8266_W5100_Manager AsyncESP8266_W5100_manager(&webServer, &dnsServer); + // Use this to personalize DHCP hostname (RFC952 conformed) + AsyncESP8266_W5100_Manager AsyncESP8266_W5100_manager(&server, &dnsServer, "AsyncESP-FSWebServer"); + +#if !USE_DHCP_IP + // Set (static IP, Gateway, Subnetmask, DNS1 and DNS2) or (IP, Gateway, Subnetmask) + AsyncESP8266_W5100_manager.setSTAStaticIPConfig(EthSTA_IPconfig); +#endif + +#if USING_CORS_FEATURE + AsyncESP8266_W5100_manager.setCORSHeader("Your Access-Control-Allow-Origin"); +#endif + + bool configDataLoaded = loadConfigData(); + + if (configDataLoaded) + { +#if USE_ESP_WIFIMANAGER_NTP + + if ( strlen(Ethconfig.TZ_Name) > 0 ) + { + LOGERROR3(F("Saving current TZ_Name ="), Ethconfig.TZ_Name, F(", TZ = "), Ethconfig.TZ); + + configTime(Ethconfig.TZ, "pool.ntp.org"); + } + else + { + Serial.println(F("Current Timezone is not set. Enter Config Portal to set.")); + } + +#endif + } + else + { + // Enter CP only if no stored Credentials on flash and file + Serial.println(F("Open Config Portal without Timeout: No stored Credentials.")); + initialConfig = true; + } + + ////////////////////////////////// + + // Connect ETH now if using STA + initEthernet(); + + ////////////////////////////////// + + if (drd->detectDoubleReset()) + { + // DRD, disable timeout. + AsyncESP8266_W5100_manager.setConfigPortalTimeout(0); + + Serial.println(F("Open Config Portal without Timeout: Double Reset Detected")); + initialConfig = true; + } + + if (initialConfig) + { + Serial.print(F("Starting configuration portal @ ")); + Serial.println(eth.localIP()); + + digitalWrite(LED_BUILTIN, LED_ON); // Turn led on as we are in configuration mode. + + //sets timeout in seconds until configuration portal gets turned off. + //If not specified device will remain in configuration mode until + //switched off via webserver or device is restarted. + //AsyncESP8266_W5100_manager.setConfigPortalTimeout(600); + + // Starts an access point + if (!AsyncESP8266_W5100_manager.startConfigPortal()) + Serial.println(F("Not connected to ETH network but continuing anyway.")); + else + { + Serial.println(F("ETH network connected...yeey :)")); + } + +#if USE_ESP_ETH_MANAGER_NTP + String tempTZ = AsyncESP8266_W5100_manager.getTimezoneName(); + + if (strlen(tempTZ.c_str()) < sizeof(Ethconfig.TZ_Name) - 1) + strcpy(Ethconfig.TZ_Name, tempTZ.c_str()); + else + strncpy(Ethconfig.TZ_Name, tempTZ.c_str(), sizeof(Ethconfig.TZ_Name) - 1); + + const char * TZ_Result = AsyncESP8266_W5100_manager.getTZ(Ethconfig.TZ_Name); + + if (strlen(TZ_Result) < sizeof(Ethconfig.TZ) - 1) + strcpy(Ethconfig.TZ, TZ_Result); + else + strncpy(Ethconfig.TZ, TZ_Result, sizeof(Ethconfig.TZ_Name) - 1); + + if ( strlen(Ethconfig.TZ_Name) > 0 ) + { + LOGERROR3(F("Saving current TZ_Name ="), Ethconfig.TZ_Name, F(", TZ = "), Ethconfig.TZ); + + configTime(Ethconfig.TZ, "pool.ntp.org"); + } + else + { + LOGERROR(F("Current Timezone Name is not set. Enter Config Portal to set.")); + } + +#endif + + AsyncESP8266_W5100_manager.getSTAStaticIPConfig(EthSTA_IPconfig); + + saveConfigData(); + +#if !USE_DHCP_IP + + // Reset to use new Static IP, if different from current eth.localIP() + if (eth.localIP() != EthSTA_IPconfig._sta_static_ip) + { + Serial.print(F("Current IP = ")); + Serial.print(eth.localIP()); + Serial.print(F(". Reset to take new IP = ")); + Serial.println(EthSTA_IPconfig._sta_static_ip); + + ESP.reset(); + delay(2000); + } + +#endif + } + + digitalWrite(LED_BUILTIN, LED_OFF); // Turn led off as we are not in configuration mode. + + startedAt = millis(); + + Serial.print(F("After waiting ")); + Serial.print((float) (millis() - startedAt) / 1000); + Serial.print(F(" secs more in setup(), connection result is ")); + + if (eth.connected()) + { + Serial.print(F("connected. Local IP: ")); + Serial.println(eth.localIP()); + } + + MDNS.begin(host); + + // Add service to MDNS-SD + MDNS.addService("http", "tcp", HTTP_PORT); + + //SERVER INIT + events.onConnect([](AsyncEventSourceClient * client) + { + client->send("hello!", NULL, millis(), 1000); + }); + + server.addHandler(&events); + + server.on("/heap", HTTP_GET, [](AsyncWebServerRequest * request) + { + request->send(200, "text/plain", String(ESP.getFreeHeap())); + }); + +#if !USE_LITTLEFS + // SPIFFSEditor won't compile when using LittleFS + server.addHandler(new SPIFFSEditor(http_username, http_password, FileFS)); +#endif + + server.serveStatic("/", FileFS, "/").setDefaultFile("index.htm"); + + server.onNotFound([](AsyncWebServerRequest * request) + { + Serial.print(F("NOT_FOUND: ")); + + if (request->method() == HTTP_GET) + Serial.print(F("GET")); + else if (request->method() == HTTP_POST) + Serial.print(F("POST")); + else if (request->method() == HTTP_DELETE) + Serial.print(F("DELETE")); + else if (request->method() == HTTP_PUT) + Serial.print(F("PUT")); + else if (request->method() == HTTP_PATCH) + Serial.print(F("PATCH")); + else if (request->method() == HTTP_HEAD) + Serial.print(F("HEAD")); + else if (request->method() == HTTP_OPTIONS) + Serial.print(F("OPTIONS")); + else + Serial.print(F("UNKNOWN")); + + Serial.println(" http://" + request->host() + request->url()); + + if (request->contentLength()) + { + Serial.println("_CONTENT_TYPE: " + request->contentType()); + Serial.println("_CONTENT_LENGTH: " + request->contentLength()); + } + + int headers = request->headers(); + int i; + + for (i = 0; i < headers; i++) + { + AsyncWebHeader* h = request->getHeader(i); + Serial.println("_HEADER[" + h->name() + "]: " + h->value()); + } + + int params = request->params(); + + for (i = 0; i < params; i++) + { + AsyncWebParameter* p = request->getParam(i); + + if (p->isFile()) + { + Serial.println("_FILE[" + p->name() + "]: " + p->value() + ", size: " + p->size()); + } + else if (p->isPost()) + { + Serial.println("_POST[" + p->name() + "]: " + p->value()); + } + else + { + Serial.println("_GET[" + p->name() + "]: " + p->value()); + } + } + + request->send(404); + }); + + server.onFileUpload([](AsyncWebServerRequest * request, const String & filename, size_t index, uint8_t *data, + size_t len, bool final) + { + (void) request; + + if (!index) + Serial.println("UploadStart: " + filename); + + Serial.print((const char*)data); + + if (final) + Serial.println("UploadEnd: " + filename + "(" + String(index + len) + ")" ); + }); + + server.onRequestBody([](AsyncWebServerRequest * request, uint8_t *data, size_t len, size_t index, size_t total) + { + (void) request; + + if (!index) + Serial.println("BodyStart: " + total); + + Serial.print((const char*)data); + + if (index + len == total) + Serial.println("BodyEnd: " + total); + }); + + server.begin(); + + Serial.print(F("HTTP server started @ ")); + Serial.println(eth.localIP()); + + Serial.println(separatorLine); + Serial.print("Open http://"); + Serial.print(eth.localIP()); + Serial.println("/edit.htm to see the file browser"); + Serial.println("Using username = " + http_username + " and password = " + http_password); + Serial.println(separatorLine); + + digitalWrite(LED_BUILTIN, LED_OFF); +} + +void loop() +{ + // Call the double reset detector loop method every so often, + // so that it can recognise when the timeout expires. + // You can also call drd.stop() when you wish to no longer + // consider the next reset as a double reset. + if (drd) + drd->loop(); + + MDNS.update(); + + check_status(); +} diff --git a/examples/Async_ESP_FSWebServer_DRD/README.md b/examples/Async_ESP_FSWebServer_DRD/README.md new file mode 100644 index 0000000..f3ad9bf --- /dev/null +++ b/examples/Async_ESP_FSWebServer_DRD/README.md @@ -0,0 +1,72 @@ +# Async_ESP_FSWebServer_DRD Example + +Compare this efficient Async_ESP_FSWebServer example with the so complicated twin [ESP_FSWebServer_DRD](https://github.com/khoih-prog/ESP_WiFiManager/tree/master/examples/ESP_FSWebServer_DRD) to appreciate the powerful AsynWebServer this [AsyncESP8266_W5500_Manager Library](https://github.com/khoih-prog/AsyncESP8266_W5500_Manager) is relying on. + +## First, how Config Portal works? + +Connect to Config Portal @ the localIP address, e.g. `192.168.2.186` + + +You'll see this `Main` page: + +

+ +

+ +Select `Information` to enter the Info page where the board info will be shown (long page) + +

+ +

+ + +Select `Configuration` to enter this page where you can select an AP and specify its WiFi Credentials + +

+ +

+ +Enter your credentials, then click `Save`. + +--- + +## How to use this Async_ESP_FSWebServer example? + +This shows you how to use this example in Ubuntu (but you can use similar commands in other OSes) + +### Download Data files + +1. For example, you already downloaded data files from [Async_ESP_FSWebServer data](https://github.com/khoih-prog/AsyncESP8266_W5500_Manager/tree/main/examples/Async_ESP_FSWebServer/data) to a local folder, for example: + +``` +~/Arduino/libraries/AsyncESP8266_W5500_Manager-main/examples/Async_ESP_FSWebServer_DRD/data +``` + +### HOWTO Upload files to ESP8266 (LittleFS or SPIFFS) + +Use one of these methods (preferable first) + +1. Go to http://async-esp8266fs.local/edit.htm, then "Choose file" -> "Upload" +2. or Upload the contents of the data folder with MkSPIFFS Tool ("ESP8266 Sketch Data Upload" in Tools menu in Arduino IDE) +3. or upload the contents of a folder by running the following commands: + +``` +Ubuntu$ cd ~/Arduino/libraries/AsyncESP8266_W5500_Manager-main/examples/Async_ESP_FSWebServer/data +Ubuntu$ for file in \`\ls -A1\`; do curl -F "file=@$PWD/$file" http://async-esp8266fs.local/edit; done +``` + +--- + +### Demonstrating pictures + +

+ +

+ +4. Edit / Delete / Download any file in the the folder by going to http://async-esp8266fs.local/edit.htm + +

+ +

+ + diff --git a/examples/Async_ESP_FSWebServer_DRD/data/CanadaFlag_1.png b/examples/Async_ESP_FSWebServer_DRD/data/CanadaFlag_1.png new file mode 100644 index 0000000000000000000000000000000000000000..e3089877a83b0445506ccc764caed7922820b79c GIT binary patch literal 41214 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∾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 Sn()s7@S}?`(kh4F4F4adf8J^U literal 0 HcmV?d00001 diff --git a/examples/Async_ESP_FSWebServer_DRD/data/CanadaFlag_2.png b/examples/Async_ESP_FSWebServer_DRD/data/CanadaFlag_2.png new file mode 100644 index 0000000000000000000000000000000000000000..d51d229c29ce5c89f4e56ae44d06c6af925deca3 GIT binary patch literal 8311 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 Dvn_B_ literal 0 HcmV?d00001 diff --git a/examples/Async_ESP_FSWebServer_DRD/data/edit.htm.gz b/examples/Async_ESP_FSWebServer_DRD/data/edit.htm.gz new file mode 100644 index 0000000000000000000000000000000000000000..69ce414f47f4b25a70160fc4985b2bd320c9b90a GIT binary patch literal 4116 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 literal 0 HcmV?d00001 diff --git a/examples/Async_ESP_FSWebServer_DRD/data/graphs.js.gz b/examples/Async_ESP_FSWebServer_DRD/data/graphs.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..72435445a7ef86e00fe6c66b3b71c47fdbd53a93 GIT binary patch literal 1971 zcmV;k2Tb@MiwFo@s$5k717~t!aAw-*8%!ep`yEM!aI@XpTRzN;M>CH`Bk93rb1y+*nfgVXr6{*O z+qWk+vpIfdbmRB&GiOD~!8-BI8jWLya*xm0`?Ns*u7@$U5b~-2FAtyY?VsHiJWiul z$g}Ci$m17Tz>sgbNBG!p6`3AIdmW5d-8e)$jYf;JJn?*ncK^L=>v4>q7o#|V#AXxo zd(ilSPVW5&A*9`%(ECk!Y+arKfe)*P?pEpRp~jzoF096?>r=Aoz97T=5)|h&-xQIu zg>l28ew8E08a6CBp`}c_5jC)_GP?DY`3f}-jd!TP&)0@aTI6>ySBJ(C^6Vjg_FCi? z4W)y8K|{N+7xu_b?5Q2tp*_aW9rTMaq?DSsrVu+rd~J}hE1ki{8Q_4DpSuf+7N=y0 z&lbmI*d0+cIw7C&8TouX>b8vuC7%rP5n-@XYJN3AXB2Qkjq~PBh|f&&!8{IOB&X(2 zH9yyb7aQ|uSdryo%OvNrl!(4VCh<(%jlKg>o+p(VLEZu+SU49}D`X?;9hV2J6#b@5xoQzr_H2o5@^1L}hMUELzT^@ZjjKOo0;;PSc-R=y16 zZ?GMY#vgK8*szEP4+cZTEn{%f2k_E z27Gde+C~f)Fg^jqZfsd{i2;6w@jVpRk!@);Z(!Q^0V_`j7DaAW9TdZ@cIt4a4szZaa^^aU29qDr;ABm46G?-=na2}Ferp=!isDL5 zZsRR-8*h`__!TcbYL6zj@e8?){|UK0{(#)d@5!y&&_(q^Zq+tjEH`wq+|b2RliLz5 zFqaQCU2wY8dG2R6eWA(3ua&TB6J>0#%pV>3Z zdyofc0!I`ut`SP$kiJ3WHi#-0<433_` z)YOv0bAAFn?dFnNRNv(ebZf$J9m~5X4;HB}|KgQLUj9wtTU0ot`o1rAx!kOPE}Fw8 zS~Q^pvJt_F1Mf4=n%)ASw`5Ik|GTcX!Dzk1YQ^WUvs*ob65M#*8Pl}n#sj~2z;Kp3 z#wt>!wBemdQe1%Fa@<6G*Tw3BO6(?)=)j$C-mo1S$t$oENe=yhLb-k<8_;yI4OzB} zRnJ39Vd(ZadQJ$E_Fo6+T+OyM?w0=_W4@|s1;9o}-pE(zujhQpQ&}rb!wtIwq}*=X z4FSKo$AySPF)Nk{6YIBX;rZfke?Eikq=c+ENp6^52>r$^5|&2ANW^K%_#LYXv7c8e z=vGa#hyxfcmO0B{UVkpiG+<$zvOo;WqJY`6)K6l6B8Kp~K2ezpCd|@8%tl_2EiSSo zFA^|v1uq>WUSe{a+%Cnisy&!<^nU5?i#QLL2@C+6O z9mvZ6hkhC(4R=nr5iF#GH6&3&)`F6DcbF}Sh6I^7IhzV|9hOnAbbP~0)_aTc?G-T zUOp0`CmZu63}>tmJ`@(Gu)SWMGnfEAsi4IU)bR<5*jr~_#!;-Z^EjQ<&VItC4B8MT z8B`^L%rDim_gH$+=1MruU~n)H8CPxfm(bCv7eR<84hDk()HUc0oPGxaFZ!1Rx^{U0 z&VK*U?e~RBheyXbhhXsb4|_d`A?>3*L0l+t&uz4z32}iM0zT**`+0@&e*in8G#?BP F000|7$0Ps% literal 0 HcmV?d00001 diff --git a/examples/Async_ESP_FSWebServer_DRD/data/index.htm b/examples/Async_ESP_FSWebServer_DRD/data/index.htm new file mode 100644 index 0000000..4e1dc7d --- /dev/null +++ b/examples/Async_ESP_FSWebServer_DRD/data/index.htm @@ -0,0 +1,97 @@ + + + + + + ESP Monitor + + + + +
+ + + + +
+
+
+
+ + \ No newline at end of file diff --git a/examples/Async_ESP_FSWebServer_DRD/pics/async-esp8266fs.local.png b/examples/Async_ESP_FSWebServer_DRD/pics/async-esp8266fs.local.png new file mode 100644 index 0000000000000000000000000000000000000000..57eb9afc94ba73a9fa04e31384ecf3e9fa845e89 GIT binary patch literal 20450 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 literal 0 HcmV?d00001 diff --git a/examples/Async_ESP_FSWebServer_DRD/pics/esp8266fs.local.png b/examples/Async_ESP_FSWebServer_DRD/pics/esp8266fs.local.png new file mode 100644 index 0000000000000000000000000000000000000000..1dd9e5cbe2e3435c3ef195bc27f66807b2354180 GIT binary patch literal 46397 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 HdC30)K?-Ml literal 0 HcmV?d00001 diff --git a/examples/Async_ESP_FSWebServer_DRD/pics/esp8266fs.local_edit.png b/examples/Async_ESP_FSWebServer_DRD/pics/esp8266fs.local_edit.png new file mode 100644 index 0000000000000000000000000000000000000000..8ee9a41307e77c2f212644a0d0d6fe93e4197a35 GIT binary patch literal 79213 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 literal 0 HcmV?d00001 diff --git a/keywords.txt b/keywords.txt new file mode 100644 index 0000000..f7961b1 --- /dev/null +++ b/keywords.txt @@ -0,0 +1,92 @@ +########################################## +# Syntax Coloring Map For ESP_WifiManager +########################################## + +####################################### +# Datatypes (KEYWORD1) +####################################### + +AsyncESP8266_W5100_Manager KEYWORD1 +ESPAsync_EMParameter KEYWORD1 + +ETH_STA_IPConfig KEYWORD1 + +####################################### +# Methods and Functions (KEYWORD2) +####################################### + +getID KEYWORD2 +getValue KEYWORD2 +getPlaceholder KEYWORD2 +getValueLength KEYWORD2 +getLabelPlacement KEYWORD2 +getCustomHTML KEYWORD2 +startConfigPortal KEYWORD2 +setConfigPortalTimeout KEYWORD2 +setTimeout KEYWORD2 +setConnectTimeout KEYWORD2 +setDebugOutput KEYWORD2 +setSTAStaticIPConfig KEYWORD2 +getSTAStaticIPConfig KEYWORD2 +setSaveConfigCallback KEYWORD2 +addParameter KEYWORD2 +setBreakAfterConfig KEYWORD2 +setCustomHeadElement KEYWORD2 +setCORSHeader KEYWORD2 +getCORSHeader KEYWORD2 +getParameters KEYWORD2 +setHostname KEYWORD2 +getTimezoneName KEYWORD2 +setTimezoneName KEYWORD2 +getTZ KEYWORD2 + +####################################### + +getChipID KEYWORD2 +getChipOUI KEYWORD2 + +ESP_getChipId KEYWORD2 +ESP_getChipOUI KEYWORD2 + +####################################### +# Constants (LITERAL1) +####################################### + +# LITERAL1 + +ASYNC_ESP8266_W5100_MANAGER_VERSION LITERAL1 +ASYNC_ESP8266_W5100_MANAGER_VERSION_MAJOR LITERAL1 +ASYNC_ESP8266_W5100_MANAGER_VERSION_MINOR LITERAL1 +ASYNC_ESP8266_W5100_MANAGER_VERSION_PATCH LITERAL1 +ASYNC_ESP8266_W5100_MANAGER_VERSION_INT LITERAL1 + +EM_HTTP_200 LITERAL1 +EM_HTTP_HEAD_START LITERAL1 +EM_HTTP_STYLE LITERAL1 +EM_HTTP_SCRIPT LITERAL1 +EM_HTTP_SCRIPT_NTP_MSG LITERAL1 +EM_HTTP_SCRIPT_NTP_HIDDEN LITERAL1 +EM_HTTP_SCRIPT_NTP LITERAL1 +EM_HTTP_HEAD_END LITERAL1 +EM_FLDSET_START LITERAL1 +EM_FLDSET_END LITERAL1 +EM_HTTP_PORTAL_OPTIONS LITERAL1 +EM_HTTP_ITEM LITERAL1 +JSON_ITEM LITERAL1 +EM_HTTP_FORM_LABEL_BEFORE LITERAL1 +EM_HTTP_FORM_LABEL_AFTER LITERAL1 +EM_HTTP_FORM_LABEL LITERAL1 +EM_HTTP_FORM_PARAM LITERAL1 +EM_HTTP_FORM_END LITERAL1 +EM_HTTP_SAVED LITERAL1 +EM_HTTP_END LITERAL1 +EM_HTTP_HEAD_CL LITERAL1 +EM_HTTP_HEAD_CT LITERAL1 +EM_HTTP_HEAD_CT2 LITERAL1 +EM_HTTP_CACHE_CONTROL LITERAL1 +EM_HTTP_PRAGMA LITERAL1 +EM_HTTP_NO_CACHE LITERAL1 +EM_HTTP_EXPIRES LITERAL1 +EM_HTTP_CORS LITERAL1 +EM_HTTP_CORS_ALLOW_ALL LITERAL1 +EM_HTTP_AVAILABLE_PAGES LITERAL1 diff --git a/library.json b/library.json new file mode 100644 index 0000000..a7d0319 --- /dev/null +++ b/library.json @@ -0,0 +1,50 @@ +{ + "name": "AsyncESP8266_W5100_Manager", + "version": "1.0.0", + "keywords": "ethernet, Credentials-Manager, esp8266, node-mcu, esp12e, esp8266-nodemcu-esp12e, AsyncWebServer, Async-Manager, Async, Communication, Credentials, Config-Portal, DoubleReset, MultiReset, littlefs, spiffs, dns-server, iot, eeprom", + "description": "(ESP8266 + LwIP W5100 / W5100S) Connection and Credentials Manager using AsyncWebServer, with enhanced GUI and fallback Web ConfigPortal. This Library is used for configuring (ESP8266 + LwIP W5100 / W5100S) Credentials Manager at runtime. You can also specify static DNS servers, personalized HostName, static or DHCP IP. With configurable CORS Header and auto-Timezone features. Using AsyncDNSServer instead of DNSServer now", + "authors": + { + "name": "Khoi Hoang", + "url": "https://github.com/khoih-prog", + "maintainer": true + }, + "repository": + { + "type": "git", + "url": "https://github.com/khoih-prog/AsyncESP8266_W5100_Manager" + }, + "homepage": "https://github.com/khoih-prog/AsyncESP8266_W5100_Manager", + "export": { + "exclude": [ + "linux", + "extras", + "tests" + ] + }, + "dependencies": [ + { + "owner": "me-no-dev", + "name": "ESPAsyncTCP", + "version": ">=1.2.2", + "platforms": ["espressif8266"] + }, + { + "owner": "me-no-dev", + "name": "ESP Async WebServer", + "version": ">=1.2.3", + "platforms": ["espressif8266"] + }, + { + "owner": "khoih-prog", + "name": "ESP_DoubleResetDetector", + "version": ">=1.3.2", + "platforms": ["espressif8266"] + } + ], + "license": "MIT", + "frameworks": "*", + "platforms": ["espressif8266"], + "examples": "examples/*/*/*.ino", + "headers": ["AsyncESP8266_W5100_Manager.h", "AsyncESP8266_W5100_Manager.hpp"] +} diff --git a/library.properties b/library.properties new file mode 100644 index 0000000..090be60 --- /dev/null +++ b/library.properties @@ -0,0 +1,12 @@ +name=AsyncESP8266_W5100_Manager +version=1.0.0 +author=Khoi Hoang +maintainer=Khoi Hoang +license=MIT +sentence=(ESP8266 + LwIP W5100 / W5100S) Connection and Credentials Manager using AsyncWebServer, with enhanced GUI and fallback Web ConfigPortal. +paragraph=This Library is used for configuring (ESP8266 + LwIP W5100 / W5100S) Credentials Manager at runtime. You can also specify static DNS servers, personalized HostName, static or DHCP IP. With configurable CORS Header and auto-Timezone features. Using AsyncDNSServer instead of DNSServer now +category=Communication +url=https://github.com/khoih-prog/AsyncESP8266_W5100_Manager +architectures=esp8266 +depends=ESP_DoubleResetDetector +includes=AsyncESP8266_W5100_Manager.h, AsyncESP8266_W5100_Manager.hpp diff --git a/platformio/platformio.ini b/platformio/platformio.ini new file mode 100644 index 0000000..843159a --- /dev/null +++ b/platformio/platformio.ini @@ -0,0 +1,98 @@ +;PlatformIO Project Configuration File +; +; Build options: build flags, source filter +; Upload options: custom upload port, speed and extra flags +; Library options: dependencies, extra library storages +; Advanced options: extra scripting +; +; Please visit documentation for the other options and examples +; https://docs.platformio.org/page/projectconf.html + +[platformio] +; ============================================================ +; chose environment: +; ESP8266 +; ESP32 +; SAMD +; NRF52 +; STM32 +; ============================================================ +default_envs = ESP8266 + +[env] +; ============================================================ +; Serial configuration +; choose upload speed, serial-monitor speed +; ============================================================ +upload_speed = 921600 +;upload_port = COM11 +;monitor_speed = 9600 +;monitor_port = COM11 + +; Checks for the compatibility with frameworks and dev/platforms +lib_compat_mode = strict +lib_ldf_mode = chain+ +;lib_ldf_mode = deep+ + +lib_deps = +; PlatformIO 4.x +; ESP Async WebServer@>=1.2.3 +; https://github.com/khoih-prog/ESPAsyncWebServer +; ESPAsyncTCP@>=1.2.2 +; https://github.com/khoih-prog/ESPAsyncTCP +; ESP_DoubleResetDetector@>=1.3.2 + +; PlatformIO 5.x +; me-no-dev/ESP Async WebServer@>=1.2.3 + https://github.com/khoih-prog/ESPAsyncWebServer +; me-no-dev/ESPAsyncTCP@>=1.2.2 + https://github.com/khoih-prog/ESPAsyncTCP + khoih-prog/ESP_DoubleResetDetector@>=1.3.2 + +build_flags = +; set your build_flags + +[env:ESP32] +platform = espressif32 +framework = arduino +; ============================================================ +; Board configuration +; choose your board by uncommenting one of the following lines +; ============================================================ +;board = esp32cam +;board = alksesp32 +;board = featheresp32 +;board = espea32 +;board = bpi-bit +;board = d-duino-32 +board = esp32doit-devkit-v1 +;board = pocket_32 +;board = fm-devkit +;board = pico32 +;board = esp32-evb +;board = esp32-gateway +;board = esp32-pro +;board = esp32-poe +;board = oroca_edubot +;board = onehorse32dev +;board = lopy +;board = lopy4 +;board = wesp32 +;board = esp32thing +;board = sparkfun_lora_gateway_1-channel +;board = ttgo-lora32-v1 +;board = ttgo-t-beam +;board = turta_iot_node +;board = lolin_d32 +;board = lolin_d32_pro +;board = lolin32 +;board = wemosbat +;board = widora-air +;board = xinabox_cw02 +;board = iotbusio +;board = iotbusproteus +;board = nina_w10 + +; ============================================================ +; Board configuration Many more Boards to be filled +; ============================================================ diff --git a/src/AsyncESP8266_W5100_Manager.h b/src/AsyncESP8266_W5100_Manager.h new file mode 100644 index 0000000..6dc59c8 --- /dev/null +++ b/src/AsyncESP8266_W5100_Manager.h @@ -0,0 +1,33 @@ +/**************************************************************************************************************************** + AsyncESP8266_W5100_Manager.h + + For Ethernet shields using ESP8266_W5100 (ESP8266 + LwIP W5100, W5100S) + + WebServer_ESP8266_W5100 is a library for the ESP8266 with Ethernet W5100, W5100S to run WebServer + + Modified from + 1. Tzapu (https://github.com/tzapu/WiFiManager) + 2. Ken Taylor (https://github.com/kentaylor) + 3. Alan Steremberg (https://github.com/alanswx/ESPAsyncWiFiManager) + 4. Khoi Hoang (https://github.com/khoih-prog/ESPAsync_WiFiManager) + + Built by Khoi Hoang https://github.com/khoih-prog/AsyncESP8266_W5100_Manager + Licensed under MIT license + + Version: 1.0.0 + + Version Modified By Date Comments + ------- ----------- ---------- ----------- + 1.0.0 K Hoang 10/12/2022 Initial coding for ESP8266_W5100 + *****************************************************************************************************************************/ + +#pragma once + +#ifndef AsyncESP8266_W5100_Manager_h +#define AsyncESP8266_W5100_Manager_h + +#include //https://github.com/khoih-prog/AsyncESP8266_W5100_Manager +#include //https://github.com/khoih-prog/AsyncESP8266_W5100_Manager + +#endif // AsyncESP8266_W5100_Manager_h + diff --git a/src/AsyncESP8266_W5100_Manager.hpp b/src/AsyncESP8266_W5100_Manager.hpp new file mode 100644 index 0000000..8b460c0 --- /dev/null +++ b/src/AsyncESP8266_W5100_Manager.hpp @@ -0,0 +1,728 @@ +/**************************************************************************************************************************** + AsyncESP8266_W5100_Manager.hpp + + For Ethernet shields using ESP8266_W5100 (ESP8266 + LwIP W5100, W5100S) + + WebServer_ESP8266_W5100 is a library for the ESP8266 with Ethernet W5100, W5100S to run WebServer + + Modified from + 1. Tzapu (https://github.com/tzapu/WiFiManager) + 2. Ken Taylor (https://github.com/kentaylor) + 3. Alan Steremberg (https://github.com/alanswx/ESPAsyncWiFiManager) + 4. Khoi Hoang (https://github.com/khoih-prog/ESPAsync_WiFiManager) + + Built by Khoi Hoang https://github.com/khoih-prog/AsyncESP8266_W5100_Manager + Licensed under MIT license + + Version: 1.0.0 + + Version Modified By Date Comments + ------- ----------- ---------- ----------- + 1.0.0 K Hoang 10/12/2022 Initial coding for ESP8266_W5100 + *****************************************************************************************************************************/ + +#pragma once + +#ifndef AsyncESP8266_W5100_Manager_hpp +#define AsyncESP8266_W5100_Manager_hpp + +#if !( defined(ESP8266) ) + #error This code is intended to run on the (ESP8266 + W5100) platform! Please check your Tools->Board setting. +#endif + +//////////////////////////////////////////////////// + +#define ASYNC_ESP8266_W5100_MANAGER_VERSION "AsyncESP8266_W5100_Manager v1.0.0" + +#define ASYNC_ESP8266_W5100_MANAGER_VERSION_MAJOR 1 +#define ASYNC_ESP8266_W5100_MANAGER_VERSION_MINOR 0 +#define ASYNC_ESP8266_W5100_MANAGER_VERSION_PATCH 0 + +#define ASYNC_ESP8266_W5100_MANAGER_VERSION_INT 1000000 + +//////////////////////////////////////////////////// + +#if ESP8266 + #if (ARDUINO_ESP8266_GIT_VER == 0xcf6ff4c4) + #define USING_ESP8266_CORE_VERSION 30002 + #define ESP8266_CORE_VERSION "ESP8266 core v3.0.2" + + #if (_ESPASYNC_ETH_MGR_LOGLEVEL_ > 3) + #warning USING_ESP8266_CORE_VERSION "3.0.2" + #endif + + #elif (ARDUINO_ESP8266_GIT_VER == 0xcbf44fb3) + #define USING_ESP8266_CORE_VERSION 30001 + #define ESP8266_CORE_VERSION "ESP8266 core v3.0.1" + + #if (_ESPASYNC_ETH_MGR_LOGLEVEL_ > 3) + #warning USING_ESP8266_CORE_VERSION "3.0.1" + #endif + + #elif (ARDUINO_ESP8266_GIT_VER == 0xefb0341a) + #define USING_ESP8266_CORE_VERSION 30000 + #define ESP8266_CORE_VERSION "ESP8266 core v3.0.0" + + #if (_ESPASYNC_ETH_MGR_LOGLEVEL_ > 3) + #warning USING_ESP8266_CORE_VERSION "3.0.0" + #endif + + #elif (ARDUINO_ESP8266_GIT_VER == 0x2843a5ac) + #define USING_ESP8266_CORE_VERSION 20704 + #define ESP8266_CORE_VERSION "ESP8266 core v2.7.4" + + #if (_ESPASYNC_ETH_MGR_LOGLEVEL_ > 3) + #warning USING_ESP8266_CORE_VERSION "2.7.4" + #endif + + #elif (ARDUINO_ESP8266_GIT_VER == 0x5d3af165) + #define USING_ESP8266_CORE_VERSION 20703 + #define ESP8266_CORE_VERSION "ESP8266 core v2.7.3" + + #if (_ESPASYNC_ETH_MGR_LOGLEVEL_ > 3) + #warning USING_ESP8266_CORE_VERSION "2.7.3" + #endif + + #elif (ARDUINO_ESP8266_GIT_VER == 0x39c79d9b) + #define USING_ESP8266_CORE_VERSION 20702 + #define ESP8266_CORE_VERSION "ESP8266 core v2.7.2" + + #if (_ESPASYNC_ETH_MGR_LOGLEVEL_ > 3) + #warning USING_ESP8266_CORE_VERSION "2.7.2" + #endif + + #elif (ARDUINO_ESP8266_GIT_VER == 0xa5432625) + #define USING_ESP8266_CORE_VERSION 20701 + #define ESP8266_CORE_VERSION "ESP8266 core v2.7.1" + + #if (_ESPASYNC_ETH_MGR_LOGLEVEL_ > 3) + #warning USING_ESP8266_CORE_VERSION "2.7.1" + #endif + + #elif (ARDUINO_ESP8266_GIT_VER == 0x3d128e5c) + #define USING_ESP8266_CORE_VERSION 20603 + #define ESP8266_CORE_VERSION "ESP8266 core v2.6.3" + + #if (_ESPASYNC_ETH_MGR_LOGLEVEL_ > 3) + #warning USING_ESP8266_CORE_VERSION "2.6.3" + #endif + + #elif (ARDUINO_ESP8266_GIT_VER == 0x482516e3) + #define USING_ESP8266_CORE_VERSION 20602 + #define ESP8266_CORE_VERSION "ESP8266 core v2.6.2" + + #if (_ESPASYNC_ETH_MGR_LOGLEVEL_ > 3) + #warning USING_ESP8266_CORE_VERSION "2.6.2" + #endif + + #elif (ARDUINO_ESP8266_GIT_VER == 0x482516e3) + #define USING_ESP8266_CORE_VERSION 20601 + #define ESP8266_CORE_VERSION "ESP8266 core v2.6.1" + + #if (_ESPASYNC_ETH_MGR_LOGLEVEL_ > 3) + #warning USING_ESP8266_CORE_VERSION "2.6.1" + #endif + + #elif (ARDUINO_ESP8266_GIT_VER == 0x643ec203) + #define USING_ESP8266_CORE_VERSION 20600 + #define ESP8266_CORE_VERSION "ESP8266 core v2.6.0" + + #if (_ESPASYNC_ETH_MGR_LOGLEVEL_ > 3) + #warning USING_ESP8266_CORE_VERSION "2.6.0" + #endif + + #elif (ARDUINO_ESP8266_GIT_VER == 0x8b899c12) + #define USING_ESP8266_CORE_VERSION 20502 + #define ESP8266_CORE_VERSION "ESP8266 core v2.5.2" + + #if (_ESPASYNC_ETH_MGR_LOGLEVEL_ > 3) + #warning USING_ESP8266_CORE_VERSION "2.5.2" + #endif + + #elif (ARDUINO_ESP8266_GIT_VER == 0x00000000) + #define USING_ESP8266_CORE_VERSION 20402 + #define ESP8266_CORE_VERSION "ESP8266 core v2.4.2" + + #if (_ESPASYNC_ETH_MGR_LOGLEVEL_ > 3) + #warning USING_ESP8266_CORE_VERSION "2.4.2" + #endif + + #elif (ARDUINO_ESP8266_GIT_VER == 0x643ec203) + #define USING_ESP8266_CORE_VERSION 0 + #define ESP8266_CORE_VERSION "ESP8266 core too old" + #warning USING_ESP8266_CORE_VERSION "0.0.0" + #else + #define USING_ESP8266_CORE_VERSION 999999 + #define ESP8266_CORE_VERSION "ESP8266 core unknown" + #warning USING_ESP8266_CORE_VERSION "x.y.z" + #endif +#endif + +//////////////////////////////////////////////////// + +#include "AsyncESP8266_W5100_Manager_Debug.h" + +//////////////////////////////////////////////////// + + +#define USING_W5100 true + +#include + +// You can change in sketch +#if !defined(CSPIN) + #define CSPIN 16 // 5 +#endif + +#include "W5100lwIP.h" +#define SHIELD_TYPE "ESP8266_W5100 Ethernet" + +Wiznet5100lwIP eth(CSPIN); + +#include // WiFiClient (-> TCPClient) + +using TCPClient = WiFiClient; + +//////////////////////////////////////////////////// + +#include +#include + +#include + +#include +#undef min +#undef max + +#include + +//////////////////////////////////////////////////// + +//KH, for ESP8266 +extern "C" +{ + #include "user_interface.h" +} + +#define ESP_getChipId() (ESP.getChipId()) + +//////////////////////////////////////////////////// + +// Thanks to @Amorphous for the feature and code +// (https://community.blynk.cc/t/esp-wifimanager-for-esp32-and-esp8266/42257/13) +// To enable to configure from sketch +#if !defined(USE_CONFIGURABLE_DNS) + #define USE_CONFIGURABLE_DNS false +#endif + +//////////////////////////////////////////////////// + +typedef struct +{ + IPAddress _sta_static_ip; + IPAddress _sta_static_gw; + IPAddress _sta_static_sn; + IPAddress _sta_static_dns1; + IPAddress _sta_static_dns2; +} ETH_STA_IPConfig; + +//////////////////////////////////////////////////// + +#define WFM_LABEL_BEFORE 1 +#define WFM_LABEL_AFTER 2 +#define WFM_NO_LABEL 0 + +//////////////////////////////////////////////////// + +/** Handle CORS in pages */ +// Default false for using only whenever necessary to avoid security issue when using CORS (Cross-Origin Resource Sharing) +#ifndef USING_CORS_FEATURE + // Contributed by AlesSt (https://github.com/AlesSt) to solve AJAX CORS protection problem of API redirects on client side + // See more in https://github.com/khoih-prog/ESP_WiFiManager/issues/27 and https://en.wikipedia.org/wiki/Cross-origin_resource_sharing + #define USING_CORS_FEATURE false +#endif + +//////////////////////////////////////////////////// + +//KH +// Mofidy HTTP_HEAD to EM_HTTP_HEAD_START to avoid conflict in Arduino esp8266 core 2.6.0+ +const char EM_HTTP_200[] PROGMEM = "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n"; +const char EM_HTTP_HEAD_START[] PROGMEM = "{v}"; + +//////////////////////////////////////////////////// + +const char EM_HTTP_STYLE[] PROGMEM = ""; + +//////////////////////////////////////////////////// + +const char EM_HTTP_SCRIPT[] PROGMEM = ""; + +//////////////////////////////////////////////////// +//////////////////////////////////////////////////// + +// To permit disable or configure NTP from sketch +#ifndef USE_ESP_ETH_MANAGER_NTP + // To enable NTP config + #define USE_ESP_ETH_MANAGER_NTP true +#endif + +//////////////////////////////////////////////////// + +#if USE_ESP_ETH_MANAGER_NTP + +#include "utils/TZ.h" + +const char EM_HTTP_SCRIPT_NTP_MSG[] PROGMEM = "

    Your Timezone is :

    "; +const char EM_HTTP_SCRIPT_NTP_HIDDEN[] PROGMEM = "

    "; + +//////////////////////////////////////////////////// + +#if !(USE_CLOUDFLARE_NTP) + #undef USE_CLOUDFLARE_NTP + #define USE_CLOUDFLARE_NTP true + + #if (_ESPASYNC_ETH_MGR_LOGLEVEL_ > 3) + #warning Forcing USE_CLOUDFLARE_NTP for ESP8266 as low memory can cause blank page + #endif + +#endif + +// To permit disable or configure NTP from sketch +#ifndef USE_CLOUDFLARE_NTP + #define USE_CLOUDFLARE_NTP false +#endif + +//////////////////////////////////////////////////// + +#if USE_CLOUDFLARE_NTP +const char EM_HTTP_SCRIPT_NTP[] PROGMEM = ""; +#else +const char EM_HTTP_SCRIPT_NTP[] PROGMEM = ""; +#endif + +#else // #if USE_ESP_ETH_MANAGER_NTP + const char EM_HTTP_SCRIPT_NTP_MSG[] PROGMEM = ""; + const char EM_HTTP_SCRIPT_NTP_HIDDEN[] PROGMEM = ""; + const char EM_HTTP_SCRIPT_NTP[] PROGMEM = ""; +#endif // #if USE_ESP_ETH_MANAGER_NTP + +//////////////////////////////////////////////////// +//////////////////////////////////////////////////// + +const char EM_HTTP_HEAD_END[] PROGMEM = "
    "; + +const char EM_FLDSET_START[] PROGMEM = "
    "; +const char EM_FLDSET_END[] PROGMEM = "
    "; + +//////////////////////////////////////////////////// + +const char EM_HTTP_PORTAL_OPTIONS[] PROGMEM = "



    "; +const char EM_HTTP_ITEM[] PROGMEM = "
    {v} {r}%
    "; +const char JSON_ITEM[] PROGMEM = "{\"SSID\":\"{v}\", \"Encryption\":{i}, \"Quality\":\"{r}\"}"; + +//////////////////////////////////////////////////// + +// To permit display stored Credentials on CP +#ifndef DISPLAY_STORED_CREDENTIALS_IN_CP + #define DISPLAY_STORED_CREDENTIALS_IN_CP true +#endif + +#if ( (_ESPASYNC_ETH_MGR_LOGLEVEL_ > 3) && DISPLAY_STORED_CREDENTIALS_IN_CP ) + #warning Enable DISPLAY_STORED_CREDENTIALS_IN_CP +#endif + +#if DISPLAY_STORED_CREDENTIALS_IN_CP + const char EM_HTTP_FORM_START[] PROGMEM = "
    "; +#else + const char EM_HTTP_FORM_START[] PROGMEM = ""; +#endif + +//////////////////////////////////////////////////// + +const char EM_HTTP_FORM_LABEL_BEFORE[] PROGMEM = "
    "; +const char EM_HTTP_FORM_LABEL_AFTER[] PROGMEM = "
    "; + +//////////////////////////////////////////////////// + +const char EM_HTTP_FORM_LABEL[] PROGMEM = ""; +const char EM_HTTP_FORM_PARAM[] PROGMEM = ""; + +const char EM_HTTP_FORM_END[] PROGMEM = "
    "; + +//////////////////////////////////////////////////// + +const char EM_HTTP_SAVED[] PROGMEM = "
    Credentials Saved
    "; + +//////////////////////////////////////////////////// + +const char EM_HTTP_END[] PROGMEM = "
    "; + +//////////////////////////////////////////////////// + +const char EM_HTTP_HEAD_CL[] = "Content-Length"; +const char EM_HTTP_HEAD_CT[] = "text/html"; +const char EM_HTTP_HEAD_CT2[] = "text/plain"; + +const char EM_HTTP_HEAD_JSON[] ="application/json"; + +//KH Add repeatedly used const +const char EM_HTTP_CACHE_CONTROL[] = "Cache-Control"; +const char EM_HTTP_NO_STORE[] = "no-cache, no-store, must-revalidate"; +const char EM_HTTP_PRAGMA[] = "Pragma"; +const char EM_HTTP_NO_CACHE[] = "no-cache"; +const char EM_HTTP_EXPIRES[] = "Expires"; +const char EM_HTTP_CORS[] = "Access-Control-Allow-Origin"; +const char EM_HTTP_CORS_ALLOW_ALL[] = "*"; + +//////////////////////////////////////////////////// + +#if USE_AVAILABLE_PAGES + const char EM_HTTP_AVAILABLE_PAGES[] PROGMEM = "

    Available Pages

    PageFunction
    /Menu page.
    /ethEnter ETH Config Page
    /ethsaveSave Config. Portal Info with supplied variables.
    /closeClose the Config Portal.
    /iThis Info page.
    /rDelete ETH configuration and reboot.
    /stateCurrent device state in JSON format. Interface for ETH configuration.
    "; +#else + const char EM_HTTP_AVAILABLE_PAGES[] PROGMEM = ""; +#endif + +//////////////////////////////////////////////////// + +#define ETH_MANAGER_MAX_PARAMS 20 + +//////////////////////////////////////////////////// + +// To permit autoConnect() to use STA static IP or DHCP IP. +#ifndef AUTOCONNECT_NO_INVALIDATE + #define AUTOCONNECT_NO_INVALIDATE true +#endif + +//////////////////////////////////////////////////// + +typedef struct +{ + const char *_id; + const char *_placeholder; + char *_value; + int _length; + int _labelPlacement; + +} WMParam_Data; + + +//////////////////////////////////////////////////// +//////////////////////////////////////////////////// + +class ESPAsync_EMParameter +{ + public: + + ESPAsync_EMParameter(const char *custom); + ESPAsync_EMParameter(const char *id, const char *placeholder, const char *defaultValue, const int& length, + const char *custom = "", const int& labelPlacement = WFM_LABEL_BEFORE); + + ESPAsync_EMParameter(const WMParam_Data& WMParam_data); + + ~ESPAsync_EMParameter(); + + void setWMParam_Data(const WMParam_Data& WMParam_data); + void getWMParam_Data(WMParam_Data& WMParam_data); + + const char *getID(); + const char *getValue(); + const char *getPlaceholder(); + int getValueLength(); + int getLabelPlacement(); + const char *getCustomHTML(); + + private: + + WMParam_Data _WMParam_data; + + const char *_customHTML; + + void init(const char *id, const char *placeholder, const char *defaultValue, const int& length, + const char *custom, const int& labelPlacement); + + friend class AsyncESP8266_W5100_Manager; +}; + +//////////////////////////////////////////////////// + +#define USE_DYNAMIC_PARAMS true +#define DEFAULT_PORTAL_TIMEOUT 60000L + +// To permit disable/enable StaticIP configuration in Config Portal from sketch. Valid only if DHCP is used. +// You have to explicitly specify false to disable the feature. +#ifndef USE_STATIC_IP_CONFIG_IN_CP + #define USE_STATIC_IP_CONFIG_IN_CP true +#endif + +//////////////////////////////////////////////////// +//////////////////////////////////////////////////// + +class AsyncESP8266_W5100_Manager +{ + public: + + AsyncESP8266_W5100_Manager(AsyncWebServer * webserver, AsyncDNSServer *dnsserver, const char *iHostname = ""); + + ~AsyncESP8266_W5100_Manager(); + + // If you want to start the config portal + bool startConfigPortal(); + + //sets timeout before webserver loop ends and exits even if there has been no setup. + //usefully for devices that failed to connect at some point and got stuck in a webserver loop + //in seconds setConfigPortalTimeout is a new name for setTimeout + void setConfigPortalTimeout(const unsigned long& seconds); + void setTimeout(const unsigned long& seconds); + + //sets timeout for which to attempt connecting, usefull if you get a lot of failed connects + void setConnectTimeout(const unsigned long& seconds); + + void setDebugOutput(bool debug); + + //sets config for a static IP + void setSTAStaticIPConfig(const IPAddress& ip, const IPAddress& gw, const IPAddress& sn); + + void setSTAStaticIPConfig(const ETH_STA_IPConfig& EM_STA_IPconfig); + void getSTAStaticIPConfig(ETH_STA_IPConfig& EM_STA_IPconfig); + +#if USE_CONFIGURABLE_DNS + void setSTAStaticIPConfig(const IPAddress& ip, const IPAddress& gw, const IPAddress& sn, + const IPAddress& dns_address_1, const IPAddress& dns_address_2); +#endif + + //called when settings have been changed and connection was successful + void setSaveConfigCallback(void(*func)()); + +#if USE_DYNAMIC_PARAMS + //adds a custom parameter + bool addParameter(ESPAsync_EMParameter *p); +#else + //adds a custom parameter + void addParameter(ESPAsync_EMParameter *p); +#endif + + //if this is set, it will exit after config, even if connection is unsucessful. + void setBreakAfterConfig(bool shouldBreak); + + //if this is set, try WPS setup when starting (this will delay config portal for up to 2 mins) + //TODO + //if this is set, customise style + void setCustomHeadElement(const char* element); + +//////////////////////////////////////////////////// + + // For configuring CORS Header, default to EM_HTTP_CORS_ALLOW_ALL = "*" +#if USING_CORS_FEATURE + void setCORSHeader(const char* CORSHeaders) + { + _CORS_Header = CORSHeaders; + + LOGWARN1(F("Set CORS Header to : "), _CORS_Header); + } + + /////////////////////////// + + inline const char* getCORSHeader() + { + return _CORS_Header; + } +#endif + + /////////////////////////// + + //returns the list of Parameters + ESPAsync_EMParameter** getParameters(); + + // returns the Parameters Count + int getParametersCount(); + + /////////////////////////// + + void setHostname() + { + if (RFC952_hostname[0] != 0) + { + eth.setHostname(RFC952_hostname); + } + } + +//////////////////////////////////////////////////// + +#if USE_ESP_ETH_MANAGER_NTP + + inline String getTimezoneName() + { + return _timezoneName; + } + + /////////////////////////// + + inline void setTimezoneName(const String& inTimezoneName) + { + _timezoneName = inTimezoneName; + } + + /////////////////////////// + + //See: https://www.gnu.org/software/libc/manual/html_node/TZ-Variable.html + // EST5EDT,M3.2.0,M11.1.0 (for America/New_York) + // EST5EDT is the name of the time zone + // EST is the abbreviation used when DST is off + // 6 hours is the time difference from GMT + // EDT is the abbreviation used when DST is on + // ,M3 is the third month + // .2 is the second occurrence of the day in the month + // .0 is Sunday + // ,M11 is the eleventh month + // .1 is the first occurrence of the day in the month + // .0 is Sunday + + const char * getTZ(const char * timezoneName) + { + //const char TZ_NAME[][TIMEZONE_MAX_LEN] + for (uint16_t index = 0; index < sizeof(TZ_NAME) / TIMEZONE_MAX_LEN; index++) + { + if ( !strncmp(timezoneName, (TZ_NAME[index]), strlen((TZ_NAME[index])) ) ) + { + yield(); + + return (ESP_TZ_NAME[index]); + } + } + + return ""; + } + + /////////////////////////// + + const char * getTZ(const String& timezoneName) + { + return getTZ(timezoneName.c_str()); + } + + /////////////////////////// + +#endif + + private: + + AsyncDNSServer *dnsServer; + + AsyncWebServer *server; + + bool needInfo = true; + String pager; + wl_status_t ethStatus; + +#define RFC952_HOSTNAME_MAXLEN 24 + char RFC952_hostname[RFC952_HOSTNAME_MAXLEN + 1]; + + char* getRFC952_hostname(const char* iHostname); + + void setupConfigPortal(); + void startWPS(); + + //////////////////////////////////////////////////// + +#if USE_ESP_ETH_MANAGER_NTP + // Timezone info + String _timezoneName = ""; +#endif + + //////////////////////////////////////////////////// + + unsigned long _configPortalTimeout = 0; + + unsigned long _connectTimeout = 0; + unsigned long _configPortalStart = 0; + + //////////////////////////////////////////////////// + + ETH_STA_IPConfig _ETH_STA_IPconfig = { IPAddress(0, 0, 0, 0), IPAddress(192, 168, 2, 1), IPAddress(255, 255, 255, 0), + IPAddress(192, 168, 2, 1), IPAddress(8, 8, 8, 8) }; + + //////////////////////////////////////////////////// + + int _paramsCount = 0; + int _minimumQuality = -1; + bool _removeDuplicateAPs = true; + bool _shouldBreakAfterConfig = false; + bool _tryWPS = false; + + const char* _customHeadElement = ""; + + int status = WL_IDLE_STATUS; + + // For configuring CORS Header, default to EM_HTTP_CORS_ALLOW_ALL = "*" +#if USING_CORS_FEATURE + const char* _CORS_Header = EM_HTTP_CORS_ALLOW_ALL; //"*"; +#endif + + wl_status_t waitForConnectResult(); + + void setInfo(); + String networkListAsString(); + + void handleRoot(AsyncWebServerRequest *request); + void handleETH(AsyncWebServerRequest *request); + void handleETHSave(AsyncWebServerRequest *request); + void handleServerClose(AsyncWebServerRequest *request); + void handleInfo(AsyncWebServerRequest *request); + void handleState(AsyncWebServerRequest *request); + void handleReset(AsyncWebServerRequest *request); + void handleNotFound(AsyncWebServerRequest *request); + bool captivePortal(AsyncWebServerRequest *request); + + void reportStatus(String& page); + + // DNS server + const byte DNS_PORT = 53; + + //helpers + bool isIp(const String& str); + String toStringIp(const IPAddress& ip); + + bool connect; + bool stopConfigPortal = false; + + bool _debug = false; //true; + + void(*_savecallback)() = NULL; + + //////////////////////////////////////////////////// + +#if USE_DYNAMIC_PARAMS + int _max_params; + ESPAsync_EMParameter** _params; +#else + ESPAsync_EMParameter* _params[ETH_MANAGER_MAX_PARAMS]; +#endif + + //////////////////////////////////////////////////// + + template + void DEBUG_WM(Generic text); + + /////////////////////////// + + template + auto optionalIPFromString(T *obj, const char *s) -> decltype(obj->fromString(s)) + { + return obj->fromString(s); + } + + /////////////////////////// + + auto optionalIPFromString(...) -> bool + { + LOGINFO("No IPAddress.fromString(), use ESP8266 core 2.1.0+ for Custom IP configuration to work."); + + return false; + } + + /////////////////////////// + +}; + +#endif // AsyncESP8266_W5100_Manager_hpp + diff --git a/src/AsyncESP8266_W5100_Manager_Debug.h b/src/AsyncESP8266_W5100_Manager_Debug.h new file mode 100644 index 0000000..259b0b0 --- /dev/null +++ b/src/AsyncESP8266_W5100_Manager_Debug.h @@ -0,0 +1,92 @@ +/**************************************************************************************************************************** + AsyncESP8266_W5100_Manager_Debug.h + + For Ethernet shields using ESP8266_W5100 (ESP8266 + LwIP W5100, W5100S) + + WebServer_ESP8266_W5100 is a library for the ESP8266 with Ethernet W5100, W5100S to run WebServer + + Modified from + 1. Tzapu (https://github.com/tzapu/WiFiManager) + 2. Ken Taylor (https://github.com/kentaylor) + 3. Alan Steremberg (https://github.com/alanswx/ESPAsyncWiFiManager) + 4. Khoi Hoang (https://github.com/khoih-prog/ESPAsync_WiFiManager) + + Built by Khoi Hoang https://github.com/khoih-prog/AsyncESP8266_W5100_Manager + Licensed under MIT license + + Version: 1.0.0 + + Version Modified By Date Comments + ------- ----------- ---------- ----------- + 1.0.0 K Hoang 10/12/2022 Initial coding for ESP8266_W5100 + *****************************************************************************************************************************/ + +#pragma once + +#ifndef AsyncESP8266_W5100_Manager_Debug_H +#define AsyncESP8266_W5100_Manager_Debug_H + +#ifdef ESPASYNC_ETH_MGR_DEBUG_PORT + #define DBG_PORT_ESP_EM ESPASYNC_ETH_MGR_DEBUG_PORT +#else + #define DBG_PORT_ESP_EM Serial +#endif + +// Change _ESPASYNC_ETH_MGR_LOGLEVEL_ to set tracing and logging verbosity +// 0: DISABLED: no logging +// 1: ERROR: errors +// 2: WARN: errors and warnings +// 3: INFO: errors, warnings and informational (default) +// 4: DEBUG: errors, warnings, informational and debug + +#ifndef _ESPASYNC_ETH_MGR_LOGLEVEL_ + #define _ESPASYNC_ETH_MGR_LOGLEVEL_ 1 +#endif + +///////////////////////////////////////////////////////// + +const char ESP_EM_MARK[] = "[EM] "; +const char ESP_EM_SP[] = " "; + +#define ESP_EM_PRINT DBG_PORT_ESP_EM.print +#define ESP_EM_PRINTLN DBG_PORT_ESP_EM.println + +#define ESP_EM_PRINT_MARK ESP_EM_PRINT(ESP_EM_MARK) +#define ESP_EM_PRINT_SP ESP_EM_PRINT(ESP_EM_SP) + +///////////////////////////////////////////////////////// + +#define LOGERROR(x) if(_ESPASYNC_ETH_MGR_LOGLEVEL_>0) { ESP_EM_PRINT_MARK; ESP_EM_PRINTLN(x); } +#define LOGERROR0(x) if(_ESPASYNC_ETH_MGR_LOGLEVEL_>0) { ESP_EM_PRINT(x); } +#define LOGERROR1(x,y) if(_ESPASYNC_ETH_MGR_LOGLEVEL_>0) { ESP_EM_PRINT_MARK; ESP_EM_PRINT(x); ESP_EM_PRINT_SP; ESP_EM_PRINTLN(y); } +#define LOGERROR2(x,y,z) if(_ESPASYNC_ETH_MGR_LOGLEVEL_>0) { ESP_EM_PRINT_MARK; ESP_EM_PRINT(x); ESP_EM_PRINT_SP; ESP_EM_PRINT(y); ESP_EM_PRINT_SP; ESP_EM_PRINTLN(z); } +#define LOGERROR3(x,y,z,w) if(_ESPASYNC_ETH_MGR_LOGLEVEL_>0) { ESP_EM_PRINT_MARK; ESP_EM_PRINT(x); ESP_EM_PRINT_SP; ESP_EM_PRINT(y); ESP_EM_PRINT_SP; ESP_EM_PRINT(z); ESP_EM_PRINT_SP; ESP_EM_PRINTLN(w); } + +///////////////////////////////////////////////////////// + +#define LOGWARN(x) if(_ESPASYNC_ETH_MGR_LOGLEVEL_>1) { ESP_EM_PRINT_MARK; ESP_EM_PRINTLN(x); } +#define LOGWARN0(x) if(_ESPASYNC_ETH_MGR_LOGLEVEL_>1) { ESP_EM_PRINT(x); } +#define LOGWARN1(x,y) if(_ESPASYNC_ETH_MGR_LOGLEVEL_>1) { ESP_EM_PRINT_MARK; ESP_EM_PRINT(x); ESP_EM_PRINT_SP; ESP_EM_PRINTLN(y); } +#define LOGWARN2(x,y,z) if(_ESPASYNC_ETH_MGR_LOGLEVEL_>1) { ESP_EM_PRINT_MARK; ESP_EM_PRINT(x); ESP_EM_PRINT_SP; ESP_EM_PRINT(y); ESP_EM_PRINT_SP; ESP_EM_PRINTLN(z); } +#define LOGWARN3(x,y,z,w) if(_ESPASYNC_ETH_MGR_LOGLEVEL_>1) { ESP_EM_PRINT_MARK; ESP_EM_PRINT(x); ESP_EM_PRINT_SP; ESP_EM_PRINT(y); ESP_EM_PRINT_SP; ESP_EM_PRINT(z); ESP_EM_PRINT_SP; ESP_EM_PRINTLN(w); } + +///////////////////////////////////////////////////////// + +#define LOGINFO(x) if(_ESPASYNC_ETH_MGR_LOGLEVEL_>2) { ESP_EM_PRINT_MARK; ESP_EM_PRINTLN(x); } +#define LOGINFO0(x) if(_ESPASYNC_ETH_MGR_LOGLEVEL_>2) { ESP_EM_PRINT(x); } +#define LOGINFO1(x,y) if(_ESPASYNC_ETH_MGR_LOGLEVEL_>2) { ESP_EM_PRINT_MARK; ESP_EM_PRINT(x); ESP_EM_PRINT_SP; ESP_EM_PRINTLN(y); } +#define LOGINFO2(x,y,z) if(_ESPASYNC_ETH_MGR_LOGLEVEL_>2) { ESP_EM_PRINT_MARK; ESP_EM_PRINT(x); ESP_EM_PRINT_SP; ESP_EM_PRINT(y); ESP_EM_PRINT_SP; ESP_EM_PRINTLN(z); } +#define LOGINFO3(x,y,z,w) if(_ESPASYNC_ETH_MGR_LOGLEVEL_>2) { ESP_EM_PRINT_MARK; ESP_EM_PRINT(x); ESP_EM_PRINT_SP; ESP_EM_PRINT(y); ESP_EM_PRINT_SP; ESP_EM_PRINT(z); ESP_EM_PRINT_SP; ESP_EM_PRINTLN(w); } + +///////////////////////////////////////////////////////// + +#define LOGDEBUG(x) if(_ESPASYNC_ETH_MGR_LOGLEVEL_>3) { ESP_EM_PRINT_MARK; ESP_EM_PRINTLN(x); } +#define LOGDEBUG0(x) if(_ESPASYNC_ETH_MGR_LOGLEVEL_>3) { ESP_EM_PRINT(x); } +#define LOGDEBUG1(x,y) if(_ESPASYNC_ETH_MGR_LOGLEVEL_>3) { ESP_EM_PRINT_MARK; ESP_EM_PRINT(x); ESP_EM_PRINT_SP; ESP_EM_PRINTLN(y); } +#define LOGDEBUG2(x,y,z) if(_ESPASYNC_ETH_MGR_LOGLEVEL_>3) { ESP_EM_PRINT_MARK; ESP_EM_PRINT(x); ESP_EM_PRINT_SP; ESP_EM_PRINT(y); ESP_EM_PRINT_SP; ESP_EM_PRINTLN(z); } +#define LOGDEBUG3(x,y,z,w) if(_ESPASYNC_ETH_MGR_LOGLEVEL_>3) { ESP_EM_PRINT_MARK; ESP_EM_PRINT(x); ESP_EM_PRINT_SP; ESP_EM_PRINT(y); ESP_EM_PRINT_SP; ESP_EM_PRINT(z); ESP_EM_PRINT_SP; ESP_EM_PRINTLN(w); } + +///////////////////////////////////////////////////////// + +#endif // AsyncESP8266_W5100_Manager_Debug_H + diff --git a/src/AsyncESP8266_W5100_Manager_Impl.h b/src/AsyncESP8266_W5100_Manager_Impl.h new file mode 100644 index 0000000..e8e4185 --- /dev/null +++ b/src/AsyncESP8266_W5100_Manager_Impl.h @@ -0,0 +1,1194 @@ +/**************************************************************************************************************************** + AsyncESP8266_W5100_Manager_Impl.h + + For Ethernet shields using ESP8266_W5100 (ESP8266 + LwIP W5100, W5100S) + + WebServer_ESP8266_W5100 is a library for the ESP8266 with Ethernet W5100, W5100S to run WebServer + + Modified from + 1. Tzapu (https://github.com/tzapu/WiFiManager) + 2. Ken Taylor (https://github.com/kentaylor) + 3. Alan Steremberg (https://github.com/alanswx/ESPAsyncWiFiManager) + 4. Khoi Hoang (https://github.com/khoih-prog/ESPAsync_WiFiManager) + + Built by Khoi Hoang https://github.com/khoih-prog/AsyncESP8266_W5100_Manager + Licensed under MIT license + + Version: 1.0.0 + + Version Modified By Date Comments + ------- ----------- ---------- ----------- + 1.0.0 K Hoang 10/12/2022 Initial coding for ESP8266_W5100 + *****************************************************************************************************************************/ + +#pragma once + +#ifndef AsyncESP8266_W5100_Manager_Impl_h +#define AsyncESP8266_W5100_Manager_Impl_h + +////////////////////////////////////////// + +ESPAsync_EMParameter::ESPAsync_EMParameter(const char *custom) +{ + _WMParam_data._id = NULL; + _WMParam_data._placeholder = NULL; + _WMParam_data._length = 0; + _WMParam_data._value = NULL; + _WMParam_data._labelPlacement = WFM_LABEL_BEFORE; + + _customHTML = custom; +} + +////////////////////////////////////////// + +ESPAsync_EMParameter::ESPAsync_EMParameter(const char *id, const char *placeholder, const char *defaultValue, + const int& length, const char *custom, const int& labelPlacement) +{ + init(id, placeholder, defaultValue, length, custom, labelPlacement); +} + +////////////////////////////////////////// + +// KH, using struct +ESPAsync_EMParameter::ESPAsync_EMParameter(const WMParam_Data& WMParam_data) +{ + init(WMParam_data._id, WMParam_data._placeholder, WMParam_data._value, + WMParam_data._length, "", WMParam_data._labelPlacement); +} + +////////////////////////////////////////// + +void ESPAsync_EMParameter::init(const char *id, const char *placeholder, const char *defaultValue, + const int& length, const char *custom, const int& labelPlacement) +{ + _WMParam_data._id = id; + _WMParam_data._placeholder = placeholder; + _WMParam_data._length = length; + _WMParam_data._labelPlacement = labelPlacement; + + _WMParam_data._value = new char[_WMParam_data._length + 1]; + + if (_WMParam_data._value != NULL) + { + memset(_WMParam_data._value, 0, _WMParam_data._length + 1); + + if (defaultValue != NULL) + { + strncpy(_WMParam_data._value, defaultValue, _WMParam_data._length); + } + } + + _customHTML = custom; +} + +////////////////////////////////////////// + +ESPAsync_EMParameter::~ESPAsync_EMParameter() +{ + if (_WMParam_data._value != NULL) + { + delete[] _WMParam_data._value; + } +} + +////////////////////////////////////////// + +// Using Struct to get/set whole data at once +void ESPAsync_EMParameter::setWMParam_Data(const WMParam_Data& WMParam_data) +{ + LOGINFO(F("setWMParam_Data")); + + memcpy(&_WMParam_data, &WMParam_data, sizeof(_WMParam_data)); +} + +////////////////////////////////////////// + +void ESPAsync_EMParameter::getWMParam_Data(WMParam_Data& WMParam_data) +{ + LOGINFO(F("getWMParam_Data")); + + memcpy(&WMParam_data, &_WMParam_data, sizeof(WMParam_data)); +} + +////////////////////////////////////////// + +const char* ESPAsync_EMParameter::getValue() +{ + return _WMParam_data._value; +} + +////////////////////////////////////////// + +const char* ESPAsync_EMParameter::getID() +{ + return _WMParam_data._id; +} + +////////////////////////////////////////// + +const char* ESPAsync_EMParameter::getPlaceholder() +{ + return _WMParam_data._placeholder; +} + +////////////////////////////////////////// + +int ESPAsync_EMParameter::getValueLength() +{ + return _WMParam_data._length; +} + +////////////////////////////////////////// + +int ESPAsync_EMParameter::getLabelPlacement() +{ + return _WMParam_data._labelPlacement; +} + +////////////////////////////////////////// + +const char* ESPAsync_EMParameter::getCustomHTML() +{ + return _customHTML; +} + +////////////////////////////////////////// + +/** + [getParameters description] + @access public +*/ +ESPAsync_EMParameter** AsyncESP8266_W5100_Manager::getParameters() +{ + return _params; +} + +////////////////////////////////////////// +////////////////////////////////////////// + +/** + [getParametersCount description] + @access public +*/ +int AsyncESP8266_W5100_Manager::getParametersCount() +{ + return _paramsCount; +} + +////////////////////////////////////////// + +char* AsyncESP8266_W5100_Manager::getRFC952_hostname(const char* iHostname) +{ + memset(RFC952_hostname, 0, sizeof(RFC952_hostname)); + + size_t len = (RFC952_HOSTNAME_MAXLEN < strlen(iHostname)) ? RFC952_HOSTNAME_MAXLEN : strlen(iHostname); + + size_t j = 0; + + for (size_t i = 0; i < len - 1; i++) + { + if (isalnum(iHostname[i]) || iHostname[i] == '-') + { + RFC952_hostname[j] = iHostname[i]; + j++; + } + } + + // no '-' as last char + if (isalnum(iHostname[len - 1]) || (iHostname[len - 1] != '-')) + RFC952_hostname[j] = iHostname[len - 1]; + + return RFC952_hostname; +} + +////////////////////////////////////////// + +AsyncESP8266_W5100_Manager::AsyncESP8266_W5100_Manager(AsyncWebServer * webserver, AsyncDNSServer *dnsserver, + const char *iHostname) +{ + + server = webserver; + dnsServer = dnsserver; + +#if USE_DYNAMIC_PARAMS + _max_params = ETH_MANAGER_MAX_PARAMS; + _params = (ESPAsync_EMParameter**) malloc(_max_params * sizeof(ESPAsync_EMParameter*)); +#endif + + if (iHostname[0] == 0) + { + String _hostname = "ESP8266-" + String(ESP.getChipId(), HEX); + + _hostname.toUpperCase(); + + getRFC952_hostname(_hostname.c_str()); + + } + else + { + // Prepare and store the hostname only not NULL + getRFC952_hostname(iHostname); + } + + LOGWARN1(F("RFC925 Hostname ="), RFC952_hostname); + + setHostname(); +} + +////////////////////////////////////////// + +AsyncESP8266_W5100_Manager::~AsyncESP8266_W5100_Manager() +{ +#if USE_DYNAMIC_PARAMS + + if (_params != NULL) + { + LOGINFO(F("freeing allocated params!")); + + free(_params); + } + +#endif +} + +////////////////////////////////////////// + +#if USE_DYNAMIC_PARAMS + bool AsyncESP8266_W5100_Manager::addParameter(ESPAsync_EMParameter *p) +#else + void AsyncESP8266_W5100_Manager::addParameter(ESPAsync_EMParameter *p) +#endif +{ +#if USE_DYNAMIC_PARAMS + + if (_paramsCount == _max_params) + { + // rezise the params array + _max_params += ETH_MANAGER_MAX_PARAMS; + + LOGINFO1(F("Increasing _max_params to:"), _max_params); + + ESPAsync_EMParameter** new_params = (ESPAsync_EMParameter**)realloc(_params, + _max_params * sizeof(ESPAsync_EMParameter*)); + + if (new_params != NULL) + { + _params = new_params; + } + else + { + LOGINFO(F("ERROR: failed to realloc params, size not increased!")); + + return false; + } + } + + _params[_paramsCount] = p; + _paramsCount++; + + LOGINFO1(F("Adding parameter"), p->getID()); + + return true; + +#else + + // Danger here. Better to use Tzapu way here + if (_paramsCount < (ETH_MANAGER_MAX_PARAMS)) + { + _params[_paramsCount] = p; + _paramsCount++; + + LOGINFO1(F("Adding parameter"), p->getID()); + } + else + { + LOGINFO("Can't add parameter. Full"); + } + +#endif +} + +////////////////////////////////////////// + +void AsyncESP8266_W5100_Manager::setupConfigPortal() +{ + stopConfigPortal = false; //Signal not to close config portal + + server->reset(); + + if (!dnsServer) + dnsServer = new AsyncDNSServer; + + /* Setup the DNS server redirecting all the domains to the apIP */ + if (dnsServer) + { + dnsServer->setErrorReplyCode(AsyncDNSReplyCode::NoError); + + // AsyncDNSServer started with "*" domain name, all DNS requests will be passsed to eth.localIP() + if (! dnsServer->start(DNS_PORT, "*", eth.localIP())) + { + // No socket available + LOGERROR(F("Can't start DNS Server. No available socket")); + } + } + + _configPortalStart = millis(); + + LOGDEBUG1(F("_configPortalStart millis() ="), millis()); + + LOGWARN1(F("Config Portal IP address ="), eth.localIP()); + + /* Setup web pages: root, eth config pages, SO captive portal detectors and not found. */ + + server->on("/", std::bind(&AsyncESP8266_W5100_Manager::handleRoot, this, + std::placeholders::_1)).setFilter(ON_AP_FILTER); + server->on("/eth", std::bind(&AsyncESP8266_W5100_Manager::handleETH, this, + std::placeholders::_1)).setFilter(ON_AP_FILTER); + server->on("/ethsave", std::bind(&AsyncESP8266_W5100_Manager::handleETHSave, this, + std::placeholders::_1)).setFilter(ON_AP_FILTER); + server->on("/close", std::bind(&AsyncESP8266_W5100_Manager::handleServerClose, this, + std::placeholders::_1)).setFilter(ON_AP_FILTER); + server->on("/i", std::bind(&AsyncESP8266_W5100_Manager::handleInfo, this, + std::placeholders::_1)).setFilter(ON_AP_FILTER); + server->on("/r", std::bind(&AsyncESP8266_W5100_Manager::handleReset, this, + std::placeholders::_1)).setFilter(ON_AP_FILTER); + server->on("/state", std::bind(&AsyncESP8266_W5100_Manager::handleState, this, + std::placeholders::_1)).setFilter(ON_AP_FILTER); + //Microsoft captive portal. Maybe not needed. Might be handled by notFound handler. + server->on("/fwlink", std::bind(&AsyncESP8266_W5100_Manager::handleRoot, this, + std::placeholders::_1)).setFilter(ON_AP_FILTER); + server->onNotFound (std::bind(&AsyncESP8266_W5100_Manager::handleNotFound, this, std::placeholders::_1)); + + server->begin(); // Web server start + + LOGWARN(F("HTTP server started")); +} + +////////////////////////////////////////// + +bool AsyncESP8266_W5100_Manager::startConfigPortal() +{ + connect = false; + + setupConfigPortal(); + + bool TimedOut = true; + + LOGINFO("startConfigPortal : Enter loop"); + + while (true) + { + if (connect) + { + TimedOut = false; + + if (_shouldBreakAfterConfig) + { + //flag set to exit after config after trying to connect + //notify that configuration has changed and any optional parameters should be saved + if (_savecallback != NULL) + { + //todo: check if any custom parameters actually exist, and check if they really changed maybe + _savecallback(); + } + + LOGDEBUG("Stop ConfigPortal: _shouldBreakAfterConfig"); + + break; + } + } + + if (stopConfigPortal) + { + TimedOut = false; + + LOGERROR("stopConfigPortal"); + + stopConfigPortal = false; + + break; + } + + if (_configPortalTimeout > 0 && ( millis() > _configPortalStart + _configPortalTimeout) ) + { + //LOGDEBUG3("startConfigPortal: timeout, _configPortalTimeout =", _configPortalTimeout, "millis() =", millis()); + + stopConfigPortal = false; + + break; + } + +#define TIME_BETWEEN_CONFIG_PORTAL_LOOP 50 + + delay(TIME_BETWEEN_CONFIG_PORTAL_LOOP); + } + + //LOGDEBUG3("startConfigPortal: exit, _configPortalTimeout =", _configPortalTimeout, "millis() =", millis()); + + server->reset(); + dnsServer->stop(); + + return (eth.connected()); +} + +////////////////////////////////////////// + +void AsyncESP8266_W5100_Manager::setTimeout(const unsigned long& seconds) +{ + setConfigPortalTimeout(seconds); +} + +////////////////////////////////////////// + +void AsyncESP8266_W5100_Manager::setConfigPortalTimeout(const unsigned long& seconds) +{ + _configPortalTimeout = seconds * 1000; +} + +////////////////////////////////////////// + +void AsyncESP8266_W5100_Manager::setConnectTimeout(const unsigned long& seconds) +{ + _connectTimeout = seconds * 1000; +} + +void AsyncESP8266_W5100_Manager::setDebugOutput(bool debug) +{ + _debug = debug; +} + +////////////////////////////////////////// + +void AsyncESP8266_W5100_Manager::setBreakAfterConfig(bool shouldBreak) +{ + _shouldBreakAfterConfig = shouldBreak; +} + +////////////////////////////////////////// + +void AsyncESP8266_W5100_Manager::reportStatus(String& page) +{ + page += FPSTR(EM_HTTP_SCRIPT_NTP_MSG); +} + + + +////////////////////////////////////////// + +void AsyncESP8266_W5100_Manager::setSTAStaticIPConfig(const IPAddress& ip, const IPAddress& gw, const IPAddress& sn) +{ + LOGINFO(F("setSTAStaticIPConfig")); + + _ETH_STA_IPconfig._sta_static_ip = ip; + _ETH_STA_IPconfig._sta_static_gw = gw; + _ETH_STA_IPconfig._sta_static_sn = sn; +} + +////////////////////////////////////////// + +void AsyncESP8266_W5100_Manager::setSTAStaticIPConfig(const ETH_STA_IPConfig& EM_STA_IPconfig) +{ + LOGINFO(F("setSTAStaticIPConfig")); + + memcpy((void *) &_ETH_STA_IPconfig, &EM_STA_IPconfig, sizeof(_ETH_STA_IPconfig)); +} + +////////////////////////////////////////// + +void AsyncESP8266_W5100_Manager::getSTAStaticIPConfig(ETH_STA_IPConfig& EM_STA_IPconfig) +{ + LOGINFO(F("getSTAStaticIPConfig")); + + memcpy((void *) &EM_STA_IPconfig, &_ETH_STA_IPconfig, sizeof(EM_STA_IPconfig)); +} + + +////////////////////////////////////////// + +#if USE_CONFIGURABLE_DNS +void AsyncESP8266_W5100_Manager::setSTAStaticIPConfig(const IPAddress& ip, const IPAddress& gw, const IPAddress& sn, + const IPAddress& dns_address_1, const IPAddress& dns_address_2) +{ + LOGINFO(F("setSTAStaticIPConfig for USE_CONFIGURABLE_DNS")); + + _ETH_STA_IPconfig._sta_static_ip = ip; + _ETH_STA_IPconfig._sta_static_gw = gw; + _ETH_STA_IPconfig._sta_static_sn = sn; + _ETH_STA_IPconfig._sta_static_dns1 = dns_address_1; //***** Added argument ***** + _ETH_STA_IPconfig._sta_static_dns2 = dns_address_2; //***** Added argument ***** +} +#endif + +////////////////////////////////////////// + +// Handle root or redirect to captive portal +void AsyncESP8266_W5100_Manager::handleRoot(AsyncWebServerRequest *request) +{ + LOGDEBUG(F("handleRoot")); + + // Disable _configPortalTimeout when someone accessing Portal to give some time to config + _configPortalTimeout = 0; + + if (captivePortal(request)) + { + LOGDEBUG(F("handleRoot: captive portal exit")); + + // If captive portal redirect instead of displaying the error page. + return; + } + + String page = FPSTR(EM_HTTP_HEAD_START); + page.replace("{v}", "Options"); + + page += FPSTR(EM_HTTP_SCRIPT); + page += FPSTR(EM_HTTP_SCRIPT_NTP); + page += FPSTR(EM_HTTP_STYLE); + page += _customHeadElement; + page += FPSTR(EM_HTTP_HEAD_END); + + page += FPSTR(EM_FLDSET_START); + page += FPSTR(EM_HTTP_PORTAL_OPTIONS); + page += F("
    "); + + reportStatus(page); + + page += F("
    "); + page += FPSTR(EM_FLDSET_END); + page += FPSTR(EM_HTTP_END); + + AsyncWebServerResponse *response = request->beginResponse(200, EM_HTTP_HEAD_CT, page); + response->addHeader(FPSTR(EM_HTTP_CACHE_CONTROL), FPSTR(EM_HTTP_NO_STORE)); + +#if USING_CORS_FEATURE + // For configuring CORS Header, default to EM_HTTP_CORS_ALLOW_ALL = "*" + response->addHeader(FPSTR(EM_HTTP_CORS), _CORS_Header); +#endif + + response->addHeader(FPSTR(EM_HTTP_PRAGMA), FPSTR(EM_HTTP_NO_CACHE)); + response->addHeader(FPSTR(EM_HTTP_EXPIRES), "-1"); + + request->send(response); +} + +////////////////////////////////////////// + +// ETH config page handler +void AsyncESP8266_W5100_Manager::handleETH(AsyncWebServerRequest *request) +{ + LOGDEBUG(F("Handle ETH")); + + // Disable _configPortalTimeout when someone accessing Portal to give some time to config + _configPortalTimeout = 0; + + String page = FPSTR(EM_HTTP_HEAD_START); + page.replace("{v}", "Config ESP"); + + page += FPSTR(EM_HTTP_SCRIPT); + page += FPSTR(EM_HTTP_SCRIPT_NTP); + page += FPSTR(EM_HTTP_STYLE); + page += _customHeadElement; + page += FPSTR(EM_HTTP_HEAD_END); + page += F("

    Configuration

    "); + + page += FPSTR(EM_HTTP_FORM_START); + + char parLength[2]; + + page += FPSTR(EM_FLDSET_START); + + // add the extra parameters to the form + for (int i = 0; i < _paramsCount; i++) + { + if (_params[i] == NULL) + { + break; + } + + String pitem; + + switch (_params[i]->getLabelPlacement()) + { + case WFM_LABEL_BEFORE: + pitem = FPSTR(EM_HTTP_FORM_LABEL_BEFORE); + break; + + case WFM_LABEL_AFTER: + pitem = FPSTR(EM_HTTP_FORM_LABEL_AFTER); + break; + + default: + // WFM_NO_LABEL + pitem = FPSTR(EM_HTTP_FORM_PARAM); + break; + } + + if (_params[i]->getID() != NULL) + { + pitem.replace("{i}", _params[i]->getID()); + pitem.replace("{n}", _params[i]->getID()); + pitem.replace("{p}", _params[i]->getPlaceholder()); + + snprintf(parLength, 2, "%d", _params[i]->getValueLength()); + + pitem.replace("{l}", parLength); + pitem.replace("{v}", _params[i]->getValue()); + pitem.replace("{c}", _params[i]->getCustomHTML()); + } + else + { + pitem = _params[i]->getCustomHTML(); + } + + page += pitem; + } + + if (_paramsCount > 0) + { + page += FPSTR(EM_FLDSET_END); + } + + if (_params[0] != NULL) + { + page += "
    "; + } + + LOGDEBUG1(F("Static IP ="), _ETH_STA_IPconfig._sta_static_ip.toString()); + + // KH, Comment out to permit changing from DHCP to static IP, or vice versa + // and add staticIP label in CP + + // To permit disable/enable StaticIP configuration in Config Portal from sketch. Valid only if DHCP is used. + // You'll loose the feature of dynamically changing from DHCP to static IP, or vice versa + // You have to explicitly specify false to disable the feature. + +#if !USE_STATIC_IP_CONFIG_IN_CP + + if (_ETH_STA_IPconfig._sta_static_ip) +#endif + { + page += FPSTR(EM_FLDSET_START); + + String item = FPSTR(EM_HTTP_FORM_LABEL); + + item += FPSTR(EM_HTTP_FORM_PARAM); + + item.replace("{i}", "ip"); + item.replace("{n}", "ip"); + item.replace("{p}", "Static IP"); + item.replace("{l}", "15"); + item.replace("{v}", _ETH_STA_IPconfig._sta_static_ip.toString()); + + page += item; + + item = FPSTR(EM_HTTP_FORM_LABEL); + item += FPSTR(EM_HTTP_FORM_PARAM); + + item.replace("{i}", "gw"); + item.replace("{n}", "gw"); + item.replace("{p}", "Gateway IP"); + item.replace("{l}", "15"); + item.replace("{v}", _ETH_STA_IPconfig._sta_static_gw.toString()); + + page += item; + + item = FPSTR(EM_HTTP_FORM_LABEL); + item += FPSTR(EM_HTTP_FORM_PARAM); + + item.replace("{i}", "sn"); + item.replace("{n}", "sn"); + item.replace("{p}", "Subnet"); + item.replace("{l}", "15"); + item.replace("{v}", _ETH_STA_IPconfig._sta_static_sn.toString()); + +#if USE_CONFIGURABLE_DNS + //***** Added for DNS address options ***** + page += item; + + item = FPSTR(EM_HTTP_FORM_LABEL); + item += FPSTR(EM_HTTP_FORM_PARAM); + + item.replace("{i}", "dns1"); + item.replace("{n}", "dns1"); + item.replace("{p}", "DNS1 IP"); + item.replace("{l}", "15"); + item.replace("{v}", _ETH_STA_IPconfig._sta_static_dns1.toString()); + + page += item; + + item = FPSTR(EM_HTTP_FORM_LABEL); + item += FPSTR(EM_HTTP_FORM_PARAM); + + item.replace("{i}", "dns2"); + item.replace("{n}", "dns2"); + item.replace("{p}", "DNS2 IP"); + item.replace("{l}", "15"); + item.replace("{v}", _ETH_STA_IPconfig._sta_static_dns2.toString()); + //***** End added for DNS address options ***** +#endif + + page += item; + page += FPSTR(EM_FLDSET_END); + page += "
    "; + } + + page += FPSTR(EM_HTTP_SCRIPT_NTP_HIDDEN); + page += FPSTR(EM_HTTP_FORM_END); + page += FPSTR(EM_HTTP_END); + + AsyncWebServerResponse *response = request->beginResponse(200, EM_HTTP_HEAD_CT, page); + + response->addHeader(FPSTR(EM_HTTP_CACHE_CONTROL), FPSTR(EM_HTTP_NO_STORE)); + +#if USING_CORS_FEATURE + response->addHeader(FPSTR(EM_HTTP_CORS), _CORS_Header); +#endif + + response->addHeader(FPSTR(EM_HTTP_PRAGMA), FPSTR(EM_HTTP_NO_CACHE)); + response->addHeader(FPSTR(EM_HTTP_EXPIRES), "-1"); + + request->send(response); + + LOGDEBUG(F("Sent config page")); +} + +////////////////////////////////////////// + +// Handle the WLAN save form and redirect to WLAN config page again +void AsyncESP8266_W5100_Manager::handleETHSave(AsyncWebServerRequest *request) +{ + LOGDEBUG(F("ETH save")); + +#if USE_ESP_ETH_MANAGER_NTP + + if (request->hasArg("timezone")) + { + _timezoneName = request->arg("timezone"); //.c_str(); + + LOGDEBUG1(F("TZ ="), _timezoneName); + } + else + { + LOGDEBUG(F("No TZ arg")); + } + +#endif + + /////////////////////// + + //parameters + for (int i = 0; i < _paramsCount; i++) + { + if (_params[i] == NULL) + { + break; + } + + //read parameter + String value = request->arg(_params[i]->getID()).c_str(); + + //store it in array + value.toCharArray(_params[i]->_WMParam_data._value, _params[i]->_WMParam_data._length); + + LOGDEBUG2(F("Parameter and value :"), _params[i]->getID(), value); + } + + + if (request->hasArg("ip")) + { + String ip = request->arg("ip"); + + optionalIPFromString(&_ETH_STA_IPconfig._sta_static_ip, ip.c_str()); + + LOGDEBUG1(F("New Static IP ="), _ETH_STA_IPconfig._sta_static_ip.toString()); + } + + if (request->hasArg("gw")) + { + String gw = request->arg("gw"); + + optionalIPFromString(&_ETH_STA_IPconfig._sta_static_gw, gw.c_str()); + + LOGDEBUG1(F("New Static Gateway ="), _ETH_STA_IPconfig._sta_static_gw.toString()); + } + + if (request->hasArg("sn")) + { + String sn = request->arg("sn"); + + optionalIPFromString(&_ETH_STA_IPconfig._sta_static_sn, sn.c_str()); + + LOGDEBUG1(F("New Static Netmask ="), _ETH_STA_IPconfig._sta_static_sn.toString()); + } + +#if USE_CONFIGURABLE_DNS + + //***** Added for DNS Options ***** + if (request->hasArg("dns1")) + { + String dns1 = request->arg("dns1"); + + optionalIPFromString(&_ETH_STA_IPconfig._sta_static_dns1, dns1.c_str()); + + LOGDEBUG1(F("New Static DNS1 ="), _ETH_STA_IPconfig._sta_static_dns1.toString()); + } + + if (request->hasArg("dns2")) + { + String dns2 = request->arg("dns2"); + + optionalIPFromString(&_ETH_STA_IPconfig._sta_static_dns2, dns2.c_str()); + + LOGDEBUG1(F("New Static DNS2 ="), _ETH_STA_IPconfig._sta_static_dns2.toString()); + } + + //***** End added for DNS Options ***** +#endif + + String page = FPSTR(EM_HTTP_HEAD_START); + page.replace("{v}", "Credentials Saved"); + + page += FPSTR(EM_HTTP_SCRIPT); + page += FPSTR(EM_HTTP_STYLE); + page += _customHeadElement; + page += FPSTR(EM_HTTP_HEAD_END); + page += FPSTR(EM_HTTP_SAVED); + + page += FPSTR(EM_HTTP_END); + + AsyncWebServerResponse *response = request->beginResponse(200, EM_HTTP_HEAD_CT, page); + response->addHeader(FPSTR(EM_HTTP_CACHE_CONTROL), FPSTR(EM_HTTP_NO_STORE)); + +#if USING_CORS_FEATURE + response->addHeader(FPSTR(EM_HTTP_CORS), _CORS_Header); +#endif + + response->addHeader(FPSTR(EM_HTTP_PRAGMA), FPSTR(EM_HTTP_NO_CACHE)); + response->addHeader(FPSTR(EM_HTTP_EXPIRES), "-1"); + + request->send(response); + + LOGDEBUG(F("Sent eth save page")); + + connect = true; //signal ready to connect/reset + + stopConfigPortal = true; //signal ready to shutdown config portal +} + +////////////////////////////////////////// + +// Handle shut down the server page +void AsyncESP8266_W5100_Manager::handleServerClose(AsyncWebServerRequest *request) +{ + LOGDEBUG(F("Server Close")); + + String page = FPSTR(EM_HTTP_HEAD_START); + page.replace("{v}", "Close Server"); + + page += FPSTR(EM_HTTP_SCRIPT); + page += FPSTR(EM_HTTP_STYLE); + page += _customHeadElement; + page += FPSTR(EM_HTTP_HEAD_END); + page += F("
    "); + page += F("
    "); + page += F("IP address is "); + page += eth.localIP().toString(); + page += F("

    "); + page += F("Portal closed...

    "); + + //page += F("Push button on device to restart configuration server!"); + + page += FPSTR(EM_HTTP_END); + + AsyncWebServerResponse *response = request->beginResponse(200, EM_HTTP_HEAD_CT, page); + response->addHeader(FPSTR(EM_HTTP_CACHE_CONTROL), FPSTR(EM_HTTP_NO_STORE)); + +#if USING_CORS_FEATURE + response->addHeader(FPSTR(EM_HTTP_CORS), _CORS_Header); +#endif + + response->addHeader(FPSTR(EM_HTTP_PRAGMA), FPSTR(EM_HTTP_NO_CACHE)); + response->addHeader(FPSTR(EM_HTTP_EXPIRES), "-1"); + + request->send(response); + + stopConfigPortal = true; //signal ready to shutdown config portal + + LOGDEBUG(F("Sent server close page")); +} + +////////////////////////////////////////// + +// Handle the info page +void AsyncESP8266_W5100_Manager::handleInfo(AsyncWebServerRequest *request) +{ + LOGDEBUG(F("Info")); + + // Disable _configPortalTimeout when someone accessing Portal to give some time to config + _configPortalTimeout = 0; + + String page = FPSTR(EM_HTTP_HEAD_START); + page.replace("{v}", "Info"); + + page += FPSTR(EM_HTTP_SCRIPT); + page += FPSTR(EM_HTTP_SCRIPT_NTP); + page += FPSTR(EM_HTTP_STYLE); + page += _customHeadElement; + + if (connect) + page += F(""); + + page += FPSTR(EM_HTTP_HEAD_END); + + page += F("
    "); + + if (connect) + { + page += F("
    Trying to connect
    "); + page += ethStatus; + page += F("
    "); + } + + page += pager; + page += F("

    Information

    "); + + reportStatus(page); + + page += FPSTR(EM_FLDSET_START); + page += F("

    Device Data

    "); + page += F(""); + page += F(""); + + page += F(""); + + page += F(""); + + page += F(""); + + page += F(""); + + page += F("
    NameValue
    Chip ID"); + + page += String(ESP.getChipId(), HEX); + + page += F("
    Flash Chip ID"); + + page += String(ESP.getFlashChipId(), HEX); + + page += F("
    IDE Flash Size"); + page += ESP.getFlashChipSize(); + page += F(" bytes
    Real Flash Size"); + + page += ESP.getFlashChipRealSize(); + + page += F(" bytes
    Station IP"); + page += eth.localIP().toString(); + page += F("
    "); + + page += FPSTR(EM_FLDSET_END); + +#if USE_AVAILABLE_PAGES + page += FPSTR(EM_FLDSET_START); + page += FPSTR(EM_HTTP_AVAILABLE_PAGES); + page += FPSTR(EM_FLDSET_END); +#endif + + page += F("

    More information about AsyncESP8266_W5100_Manager at"); + page += F("

    https://github.com/khoih-prog/AsyncESP8266_W5100_Manager"); + page += FPSTR(EM_HTTP_END); + + AsyncWebServerResponse *response = request->beginResponse(200, EM_HTTP_HEAD_CT, page); + + response->addHeader(FPSTR(EM_HTTP_CACHE_CONTROL), FPSTR(EM_HTTP_NO_STORE)); + +#if USING_CORS_FEATURE + response->addHeader(FPSTR(EM_HTTP_CORS), _CORS_Header); +#endif + + response->addHeader(FPSTR(EM_HTTP_PRAGMA), FPSTR(EM_HTTP_NO_CACHE)); + response->addHeader(FPSTR(EM_HTTP_EXPIRES), "-1"); + + request->send(response); + + LOGDEBUG(F("Info page sent")); +} + +////////////////////////////////////////// + +// Handle the state page +void AsyncESP8266_W5100_Manager::handleState(AsyncWebServerRequest *request) +{ + LOGDEBUG(F("State-Json")); + + String page = F("{\"Soft_AP_IP\":\""); + + page += F("\",\"Station_IP\":\""); + page += eth.localIP().toString(); + page += F("\","); + + AsyncWebServerResponse *response = request->beginResponse(200, "application/json", page); + response->addHeader(FPSTR(EM_HTTP_CACHE_CONTROL), FPSTR(EM_HTTP_NO_STORE)); + +#if USING_CORS_FEATURE + response->addHeader(FPSTR(EM_HTTP_CORS), _CORS_Header); +#endif + + response->addHeader(FPSTR(EM_HTTP_PRAGMA), FPSTR(EM_HTTP_NO_CACHE)); + response->addHeader(FPSTR(EM_HTTP_EXPIRES), "-1"); + + request->send(response); + + LOGDEBUG(F("Sent state page in json format")); +} + +////////////////////////////////////////// + +// Handle the reset page +void AsyncESP8266_W5100_Manager::handleReset(AsyncWebServerRequest *request) +{ + LOGDEBUG(F("Reset")); + + String page = FPSTR(EM_HTTP_HEAD_START); + page.replace("{v}", "Information"); + + page += FPSTR(EM_HTTP_SCRIPT); + page += FPSTR(EM_HTTP_STYLE); + page += _customHeadElement; + page += FPSTR(EM_HTTP_HEAD_END); + page += F("Resetting"); + page += FPSTR(EM_HTTP_END); + + AsyncWebServerResponse *response = request->beginResponse(200, EM_HTTP_HEAD_CT, page); + + response->addHeader(EM_HTTP_CACHE_CONTROL, EM_HTTP_NO_STORE); + response->addHeader(EM_HTTP_PRAGMA, EM_HTTP_NO_CACHE); + response->addHeader(EM_HTTP_EXPIRES, "-1"); + + request->send(response); + + LOGDEBUG(F("Sent reset page")); + delay(5000); + + ESP.reset(); + + delay(2000); +} + +////////////////////////////////////////// + +void AsyncESP8266_W5100_Manager::handleNotFound(AsyncWebServerRequest *request) +{ + if (captivePortal(request)) + { + LOGDEBUG(F("handleNotFound: captive portal exit")); + + // If captive portal redirect instead of displaying the error page. + return; + } + + String message = "File Not Found\n\n"; + + message += "URI: "; + message += request->url(); + message += "\nMethod: "; + message += (request->method() == HTTP_GET) ? "GET" : "POST"; + message += "\nArguments: "; + message += request->args(); + message += "\n"; + + for (uint8_t i = 0; i < request->args(); i++) + { + message += " " + request->argName(i) + ": " + request->arg(i) + "\n"; + } + + AsyncWebServerResponse *response = request->beginResponse( 404, EM_HTTP_HEAD_CT2, message ); + + response->addHeader(FPSTR(EM_HTTP_CACHE_CONTROL), FPSTR(EM_HTTP_NO_STORE)); + response->addHeader(FPSTR(EM_HTTP_PRAGMA), FPSTR(EM_HTTP_NO_CACHE)); + response->addHeader(FPSTR(EM_HTTP_EXPIRES), "-1"); + + request->send(response); +} + +////////////////////////////////////////// + +/** + HTTPD redirector + Redirect to captive portal if we got a request for another domain. + Return true in that case so the page handler do not try to handle the request again. +*/ +bool AsyncESP8266_W5100_Manager::captivePortal(AsyncWebServerRequest *request) +{ + if (!isIp(request->host())) + { + LOGINFO(F("Request redirected to captive portal")); + LOGINFO1(F("Location http://"), toStringIp(request->client()->localIP())); + + AsyncWebServerResponse *response = request->beginResponse(302, EM_HTTP_HEAD_CT2, ""); + + response->addHeader("Location", String("http://") + toStringIp(request->client()->localIP())); + + request->send(response); + + return true; + } + + LOGDEBUG1(F("request host IP ="), request->host()); + + return false; +} + +////////////////////////////////////////// + +// start up save config callback +void AsyncESP8266_W5100_Manager::setSaveConfigCallback(void(*func)()) +{ + _savecallback = func; +} + +////////////////////////////////////////// + +// sets a custom element to add to head, like a new style tag +void AsyncESP8266_W5100_Manager::setCustomHeadElement(const char* element) +{ + _customHeadElement = element; +} + +////////////////////////////////////////// + +// Is this an IP? +bool AsyncESP8266_W5100_Manager::isIp(const String& str) +{ + for (unsigned int i = 0; i < str.length(); i++) + { + int c = str.charAt(i); + + if ( (c != '.') && (c != ':') && ( (c < '0') || (c > '9') ) ) + { + return false; + } + } + + return true; +} + +////////////////////////////////////////// + +// IP to String +String AsyncESP8266_W5100_Manager::toStringIp(const IPAddress& ip) +{ + String res = ""; + + for (int i = 0; i < 3; i++) + { + res += String((ip >> (8 * i)) & 0xFF) + "."; + } + + res += String(((ip >> 8 * 3)) & 0xFF); + + return res; +} + +////////////////////////////////////////// + + +#endif // AsyncESP8266_W5100_Manager_Impl_h diff --git a/src/utils/TZ.h b/src/utils/TZ.h new file mode 100644 index 0000000..e96b0c7 --- /dev/null +++ b/src/utils/TZ.h @@ -0,0 +1,1526 @@ + +// autogenerated from https://raw.githubusercontent.com/nayarsystems/posix_tz_db/master/zones.csv +// by script /tools/TZupdate.sh +// Thu Nov 12 04:07:03 UTC 2020 +// +// This database is autogenerated from IANA timezone database +// https://raw.githubusercontent.com/nayarsystems/posix_tz_db/master/zones.csv +// (using https://www.iana.org/time-zones) +// and can be updated on demand in this repository +// or by yourself using the above script + +#ifndef TZDB_H +#define TZDB_H + +//See: https://www.gnu.org/software/libc/manual/html_node/TZ-Variable.html +// EST5EDT,M3.2.0,M11.1.0 (for America/New_York) +// EST5EDT is the name of the time zone +// EST is the abbreviation used when DST is off +// 6 hours is the time difference from GMT +// EDT is the abbreviation used when DST is on +// ,M3 is the third month +// .2 is the second occurrence of the day in the month +// .0 is Sunday +// ,M11 is the eleventh month +// .1 is the first occurrence of the day in the month +// .0 is Sunday + + +#if !defined(USING_AFRICA) + #define USING_AFRICA false +#endif + +#if !defined(USING_AMERICA) + #define USING_AMERICA true +#endif + +#if !defined(USING_ANTARCTICA) + #define USING_ANTARCTICA false +#endif + +#if !defined(USING_ASIA) + #define USING_ASIA false +#endif + +#if !defined(USING_ATLANTIC) + #define USING_ATLANTIC false +#endif + +#if !defined(USING_AUSTRALIA) + #define USING_AUSTRALIA true +#endif + +#if !defined(USING_EUROPE) + #define USING_EUROPE false +#endif + +#if !defined(USING_INDIAN) + #define USING_INDIAN false +#endif + +#if !defined(USING_PACIFIC) + #define USING_PACIFIC false +#endif + +#if !defined(USING_ETC_GMT) + #define USING_ETC_GMT false +#endif + +//////////////////////////////////////////////////// + +#define TZ_Africa_Abidjan ("GMT0") +#define TZ_Africa_Accra ("GMT0") +#define TZ_Africa_Addis_Ababa ("EAT-3") +#define TZ_Africa_Algiers ("CET-1") +#define TZ_Africa_Asmara ("EAT-3") +#define TZ_Africa_Bamako ("GMT0") +#define TZ_Africa_Bangui ("WAT-1") +#define TZ_Africa_Banjul ("GMT0") +#define TZ_Africa_Bissau ("GMT0") +#define TZ_Africa_Blantyre ("CAT-2") +#define TZ_Africa_Brazzaville ("WAT-1") +#define TZ_Africa_Bujumbura ("CAT-2") +#define TZ_Africa_Cairo ("EET-2") +#define TZ_Africa_Casablanca ("<+01>-1") +#define TZ_Africa_Ceuta ("CET-1CEST,M3.5.0,M10.5.0/3") +#define TZ_Africa_Conakry ("GMT0") +#define TZ_Africa_Dakar ("GMT0") +#define TZ_Africa_Dar_es_Salaam ("EAT-3") +#define TZ_Africa_Djibouti ("EAT-3") +#define TZ_Africa_Douala ("WAT-1") +#define TZ_Africa_El_Aaiun ("<+01>-1") +#define TZ_Africa_Freetown ("GMT0") +#define TZ_Africa_Gaborone ("CAT-2") +#define TZ_Africa_Harare ("CAT-2") +#define TZ_Africa_Johannesburg ("SAST-2") +#define TZ_Africa_Juba ("EAT-3") +#define TZ_Africa_Kampala ("EAT-3") +#define TZ_Africa_Khartoum ("CAT-2") +#define TZ_Africa_Kigali ("CAT-2") +#define TZ_Africa_Kinshasa ("WAT-1") +#define TZ_Africa_Lagos ("WAT-1") +#define TZ_Africa_Libreville ("WAT-1") +#define TZ_Africa_Lome ("GMT0") +#define TZ_Africa_Luanda ("WAT-1") +#define TZ_Africa_Lubumbashi ("CAT-2") +#define TZ_Africa_Lusaka ("CAT-2") +#define TZ_Africa_Malabo ("WAT-1") +#define TZ_Africa_Maputo ("CAT-2") +#define TZ_Africa_Maseru ("SAST-2") +#define TZ_Africa_Mbabane ("SAST-2") +#define TZ_Africa_Mogadishu ("EAT-3") +#define TZ_Africa_Monrovia ("GMT0") +#define TZ_Africa_Nairobi ("EAT-3") +#define TZ_Africa_Ndjamena ("WAT-1") +#define TZ_Africa_Niamey ("WAT-1") +#define TZ_Africa_Nouakchott ("GMT0") +#define TZ_Africa_Ouagadougou ("GMT0") +#define TZ_Africa_PortomNovo ("WAT-1") +#define TZ_Africa_Sao_Tome ("GMT0") +#define TZ_Africa_Tripoli ("EET-2") +#define TZ_Africa_Tunis ("CET-1") +#define TZ_Africa_Windhoek ("CAT-2") +#define TZ_America_Adak ("HST10HDT,M3.2.0,M11.1.0") +#define TZ_America_Anchorage ("AKST9AKDT,M3.2.0,M11.1.0") +#define TZ_America_Anguilla ("AST4") +#define TZ_America_Antigua ("AST4") +#define TZ_America_Araguaina ("<-03>3") +#define TZ_America_Argentina_Buenos_Aires ("<-03>3") +#define TZ_America_Argentina_Catamarca ("<-03>3") +#define TZ_America_Argentina_Cordoba ("<-03>3") +#define TZ_America_Argentina_Jujuy ("<-03>3") +#define TZ_America_Argentina_La_Rioja ("<-03>3") +#define TZ_America_Argentina_Mendoza ("<-03>3") +#define TZ_America_Argentina_Rio_Gallegos ("<-03>3") +#define TZ_America_Argentina_Salta ("<-03>3") +#define TZ_America_Argentina_San_Juan ("<-03>3") +#define TZ_America_Argentina_San_Luis ("<-03>3") +#define TZ_America_Argentina_Tucuman ("<-03>3") +#define TZ_America_Argentina_Ushuaia ("<-03>3") +#define TZ_America_Aruba ("AST4") +#define TZ_America_Asuncion ("<-04>4<-03>,M10.1.0/0,M3.4.0/0") +#define TZ_America_Atikokan ("EST5") +#define TZ_America_Bahia ("<-03>3") +#define TZ_America_Bahia_Banderas ("CST6CDT,M4.1.0,M10.5.0") +#define TZ_America_Barbados ("AST4") +#define TZ_America_Belem ("<-03>3") +#define TZ_America_Belize ("CST6") +#define TZ_America_BlancmSablon ("AST4") +#define TZ_America_Boa_Vista ("<-04>4") +#define TZ_America_Bogota ("<-05>5") +#define TZ_America_Boise ("MST7MDT,M3.2.0,M11.1.0") +#define TZ_America_Cambridge_Bay ("MST7MDT,M3.2.0,M11.1.0") +#define TZ_America_Campo_Grande ("<-04>4") +#define TZ_America_Cancun ("EST5") +#define TZ_America_Caracas ("<-04>4") +#define TZ_America_Cayenne ("<-03>3") +#define TZ_America_Cayman ("EST5") +#define TZ_America_Chicago ("CST6CDT,M3.2.0,M11.1.0") +#define TZ_America_Chihuahua ("MST7MDT,M4.1.0,M10.5.0") +#define TZ_America_Costa_Rica ("CST6") +#define TZ_America_Creston ("MST7") +#define TZ_America_Cuiaba ("<-04>4") +#define TZ_America_Curacao ("AST4") +#define TZ_America_Danmarkshavn ("GMT0") +#define TZ_America_Dawson ("MST7") +#define TZ_America_Dawson_Creek ("MST7") +#define TZ_America_Denver ("MST7MDT,M3.2.0,M11.1.0") +#define TZ_America_Detroit ("EST5EDT,M3.2.0,M11.1.0") +#define TZ_America_Dominica ("AST4") +#define TZ_America_Edmonton ("MST7MDT,M3.2.0,M11.1.0") +#define TZ_America_Eirunepe ("<-05>5") +#define TZ_America_El_Salvador ("CST6") +#define TZ_America_Fortaleza ("<-03>3") +#define TZ_America_Fort_Nelson ("MST7") +#define TZ_America_Glace_Bay ("AST4ADT,M3.2.0,M11.1.0") +#define TZ_America_Godthab ("<-03>3<-02>,M3.5.0/-2,M10.5.0/-1") +#define TZ_America_Goose_Bay ("AST4ADT,M3.2.0,M11.1.0") +#define TZ_America_Grand_Turk ("EST5EDT,M3.2.0,M11.1.0") +#define TZ_America_Grenada ("AST4") +#define TZ_America_Guadeloupe ("AST4") +#define TZ_America_Guatemala ("CST6") +#define TZ_America_Guayaquil ("<-05>5") +#define TZ_America_Guyana ("<-04>4") +#define TZ_America_Halifax ("AST4ADT,M3.2.0,M11.1.0") +#define TZ_America_Havana ("CST5CDT,M3.2.0/0,M11.1.0/1") +#define TZ_America_Hermosillo ("MST7") +#define TZ_America_Indiana_Indianapolis ("EST5EDT,M3.2.0,M11.1.0") +#define TZ_America_Indiana_Knox ("CST6CDT,M3.2.0,M11.1.0") +#define TZ_America_Indiana_Marengo ("EST5EDT,M3.2.0,M11.1.0") +#define TZ_America_Indiana_Petersburg ("EST5EDT,M3.2.0,M11.1.0") +#define TZ_America_Indiana_Tell_City ("CST6CDT,M3.2.0,M11.1.0") +#define TZ_America_Indiana_Vevay ("EST5EDT,M3.2.0,M11.1.0") +#define TZ_America_Indiana_Vincennes ("EST5EDT,M3.2.0,M11.1.0") +#define TZ_America_Indiana_Winamac ("EST5EDT,M3.2.0,M11.1.0") +#define TZ_America_Inuvik ("MST7MDT,M3.2.0,M11.1.0") +#define TZ_America_Iqaluit ("EST5EDT,M3.2.0,M11.1.0") +#define TZ_America_Jamaica ("EST5") +#define TZ_America_Juneau ("AKST9AKDT,M3.2.0,M11.1.0") +#define TZ_America_Kentucky_Louisville ("EST5EDT,M3.2.0,M11.1.0") +#define TZ_America_Kentucky_Monticello ("EST5EDT,M3.2.0,M11.1.0") +#define TZ_America_Kralendijk ("AST4") +#define TZ_America_La_Paz ("<-04>4") +#define TZ_America_Lima ("<-05>5") +#define TZ_America_Los_Angeles ("PST8PDT,M3.2.0,M11.1.0") +#define TZ_America_Lower_Princes ("AST4") +#define TZ_America_Maceio ("<-03>3") +#define TZ_America_Managua ("CST6") +#define TZ_America_Manaus ("<-04>4") +#define TZ_America_Marigot ("AST4") +#define TZ_America_Martinique ("AST4") +#define TZ_America_Matamoros ("CST6CDT,M3.2.0,M11.1.0") +#define TZ_America_Mazatlan ("MST7MDT,M4.1.0,M10.5.0") +#define TZ_America_Menominee ("CST6CDT,M3.2.0,M11.1.0") +#define TZ_America_Merida ("CST6CDT,M4.1.0,M10.5.0") +#define TZ_America_Metlakatla ("AKST9AKDT,M3.2.0,M11.1.0") +#define TZ_America_Mexico_City ("CST6CDT,M4.1.0,M10.5.0") +#define TZ_America_Miquelon ("<-03>3<-02>,M3.2.0,M11.1.0") +#define TZ_America_Moncton ("AST4ADT,M3.2.0,M11.1.0") +#define TZ_America_Monterrey ("CST6CDT,M4.1.0,M10.5.0") +#define TZ_America_Montevideo ("<-03>3") +#define TZ_America_Montreal ("EST5EDT,M3.2.0,M11.1.0") +#define TZ_America_Montserrat ("AST4") +#define TZ_America_Nassau ("EST5EDT,M3.2.0,M11.1.0") +#define TZ_America_New_York ("EST5EDT,M3.2.0,M11.1.0") +#define TZ_America_Nipigon ("EST5EDT,M3.2.0,M11.1.0") +#define TZ_America_Nome ("AKST9AKDT,M3.2.0,M11.1.0") +#define TZ_America_Noronha ("<-02>2") +#define TZ_America_North_Dakota_Beulah ("CST6CDT,M3.2.0,M11.1.0") +#define TZ_America_North_Dakota_Center ("CST6CDT,M3.2.0,M11.1.0") +#define TZ_America_North_Dakota_New_Salem ("CST6CDT,M3.2.0,M11.1.0") +#define TZ_America_Ojinaga ("MST7MDT,M3.2.0,M11.1.0") +#define TZ_America_Panama ("EST5") +#define TZ_America_Pangnirtung ("EST5EDT,M3.2.0,M11.1.0") +#define TZ_America_Paramaribo ("<-03>3") +#define TZ_America_Phoenix ("MST7") +#define TZ_America_PortmaumPrince ("EST5EDT,M3.2.0,M11.1.0") +#define TZ_America_Port_of_Spain ("AST4") +#define TZ_America_Porto_Velho ("<-04>4") +#define TZ_America_Puerto_Rico ("AST4") +#define TZ_America_Punta_Arenas ("<-03>3") +#define TZ_America_Rainy_River ("CST6CDT,M3.2.0,M11.1.0") +#define TZ_America_Rankin_Inlet ("CST6CDT,M3.2.0,M11.1.0") +#define TZ_America_Recife ("<-03>3") +#define TZ_America_Regina ("CST6") +#define TZ_America_Resolute ("CST6CDT,M3.2.0,M11.1.0") +#define TZ_America_Rio_Branco ("<-05>5") +#define TZ_America_Santarem ("<-03>3") +#define TZ_America_Santiago ("<-04>4<-03>,M9.1.6/24,M4.1.6/24") +#define TZ_America_Santo_Domingo ("AST4") +#define TZ_America_Sao_Paulo ("<-03>3") +#define TZ_America_Scoresbysund ("<-01>1<+00>,M3.5.0/0,M10.5.0/1") +#define TZ_America_Sitka ("AKST9AKDT,M3.2.0,M11.1.0") +#define TZ_America_St_Barthelemy ("AST4") +#define TZ_America_St_Johns ("NST3:30NDT,M3.2.0,M11.1.0") +#define TZ_America_St_Kitts ("AST4") +#define TZ_America_St_Lucia ("AST4") +#define TZ_America_St_Thomas ("AST4") +#define TZ_America_St_Vincent ("AST4") +#define TZ_America_Swift_Current ("CST6") +#define TZ_America_Tegucigalpa ("CST6") +#define TZ_America_Thule ("AST4ADT,M3.2.0,M11.1.0") +#define TZ_America_Thunder_Bay ("EST5EDT,M3.2.0,M11.1.0") +#define TZ_America_Tijuana ("PST8PDT,M3.2.0,M11.1.0") +#define TZ_America_Toronto ("EST5EDT,M3.2.0,M11.1.0") +#define TZ_America_Tortola ("AST4") +#define TZ_America_Vancouver ("PST8PDT,M3.2.0,M11.1.0") +#define TZ_America_Whitehorse ("MST7") +#define TZ_America_Winnipeg ("CST6CDT,M3.2.0,M11.1.0") +#define TZ_America_Yakutat ("AKST9AKDT,M3.2.0,M11.1.0") +#define TZ_America_Yellowknife ("MST7MDT,M3.2.0,M11.1.0") +#define TZ_Antarctica_Casey ("<+11>-11") +#define TZ_Antarctica_Davis ("<+07>-7") +#define TZ_Antarctica_DumontDUrville ("<+10>-10") +#define TZ_Antarctica_Macquarie ("AEST-10AEDT,M10.1.0,M4.1.0/3") +#define TZ_Antarctica_Mawson ("<+05>-5") +#define TZ_Antarctica_McMurdo ("NZST-12NZDT,M9.5.0,M4.1.0/3") +#define TZ_Antarctica_Palmer ("<-03>3") +#define TZ_Antarctica_Rothera ("<-03>3") +#define TZ_Antarctica_Syowa ("<+03>-3") +#define TZ_Antarctica_Troll ("<+00>0<+02>-2,M3.5.0/1,M10.5.0/3") +#define TZ_Antarctica_Vostok ("<+06>-6") +#define TZ_Arctic_Longyearbyen ("CET-1CEST,M3.5.0,M10.5.0/3") +#define TZ_Asia_Aden ("<+03>-3") +#define TZ_Asia_Almaty ("<+06>-6") +#define TZ_Asia_Amman ("EET-2EEST,M3.5.4/24,M10.5.5/1") +#define TZ_Asia_Anadyr ("<+12>-12") +#define TZ_Asia_Aqtau ("<+05>-5") +#define TZ_Asia_Aqtobe ("<+05>-5") +#define TZ_Asia_Ashgabat ("<+05>-5") +#define TZ_Asia_Atyrau ("<+05>-5") +#define TZ_Asia_Baghdad ("<+03>-3") +#define TZ_Asia_Bahrain ("<+03>-3") +#define TZ_Asia_Baku ("<+04>-4") +#define TZ_Asia_Bangkok ("<+07>-7") +#define TZ_Asia_Barnaul ("<+07>-7") +#define TZ_Asia_Beirut ("EET-2EEST,M3.5.0/0,M10.5.0/0") +#define TZ_Asia_Bishkek ("<+06>-6") +#define TZ_Asia_Brunei ("<+08>-8") +#define TZ_Asia_Chita ("<+09>-9") +#define TZ_Asia_Choibalsan ("<+08>-8") +#define TZ_Asia_Colombo ("<+0530>-5:30") +#define TZ_Asia_Damascus ("EET-2EEST,M3.5.5/0,M10.5.5/0") +#define TZ_Asia_Dhaka ("<+06>-6") +#define TZ_Asia_Dili ("<+09>-9") +#define TZ_Asia_Dubai ("<+04>-4") +#define TZ_Asia_Dushanbe ("<+05>-5") +#define TZ_Asia_Famagusta ("EET-2EEST,M3.5.0/3,M10.5.0/4") +#define TZ_Asia_Gaza ("EET-2EEST,M3.4.4/48,M10.4.4/49") +#define TZ_Asia_Hebron ("EET-2EEST,M3.4.4/48,M10.4.4/49") +#define TZ_Asia_Ho_Chi_Minh ("<+07>-7") +#define TZ_Asia_Hong_Kong ("HKT-8") +#define TZ_Asia_Hovd ("<+07>-7") +#define TZ_Asia_Irkutsk ("<+08>-8") +#define TZ_Asia_Jakarta ("WIB-7") +#define TZ_Asia_Jayapura ("WIT-9") +#define TZ_Asia_Jerusalem ("IST-2IDT,M3.4.4/26,M10.5.0") +#define TZ_Asia_Kabul ("<+0430>-4:30") +#define TZ_Asia_Kamchatka ("<+12>-12") +#define TZ_Asia_Karachi ("PKT-5") +#define TZ_Asia_Kathmandu ("<+0545>-5:45") +#define TZ_Asia_Khandyga ("<+09>-9") +#define TZ_Asia_Kolkata ("IST-5:30") +#define TZ_Asia_Krasnoyarsk ("<+07>-7") +#define TZ_Asia_Kuala_Lumpur ("<+08>-8") +#define TZ_Asia_Kuching ("<+08>-8") +#define TZ_Asia_Kuwait ("<+03>-3") +#define TZ_Asia_Macau ("CST-8") +#define TZ_Asia_Magadan ("<+11>-11") +#define TZ_Asia_Makassar ("WITA-8") +#define TZ_Asia_Manila ("PST-8") +#define TZ_Asia_Muscat ("<+04>-4") +#define TZ_Asia_Nicosia ("EET-2EEST,M3.5.0/3,M10.5.0/4") +#define TZ_Asia_Novokuznetsk ("<+07>-7") +#define TZ_Asia_Novosibirsk ("<+07>-7") +#define TZ_Asia_Omsk ("<+06>-6") +#define TZ_Asia_Oral ("<+05>-5") +#define TZ_Asia_Phnom_Penh ("<+07>-7") +#define TZ_Asia_Pontianak ("WIB-7") +#define TZ_Asia_Pyongyang ("KST-9") +#define TZ_Asia_Qatar ("<+03>-3") +#define TZ_Asia_Qyzylorda ("<+05>-5") +#define TZ_Asia_Riyadh ("<+03>-3") +#define TZ_Asia_Sakhalin ("<+11>-11") +#define TZ_Asia_Samarkand ("<+05>-5") +#define TZ_Asia_Seoul ("KST-9") +#define TZ_Asia_Shanghai ("CST-8") +#define TZ_Asia_Singapore ("<+08>-8") +#define TZ_Asia_Srednekolymsk ("<+11>-11") +#define TZ_Asia_Taipei ("CST-8") +#define TZ_Asia_Tashkent ("<+05>-5") +#define TZ_Asia_Tbilisi ("<+04>-4") +#define TZ_Asia_Tehran ("<+0330>-3:30<+0430>,J79/24,J263/24") +#define TZ_Asia_Thimphu ("<+06>-6") +#define TZ_Asia_Tokyo ("JST-9") +#define TZ_Asia_Tomsk ("<+07>-7") +#define TZ_Asia_Ulaanbaatar ("<+08>-8") +#define TZ_Asia_Urumqi ("<+06>-6") +#define TZ_Asia_UstmNera ("<+10>-10") +#define TZ_Asia_Vientiane ("<+07>-7") +#define TZ_Asia_Vladivostok ("<+10>-10") +#define TZ_Asia_Yakutsk ("<+09>-9") +#define TZ_Asia_Yangon ("<+0630>-6:30") +#define TZ_Asia_Yekaterinburg ("<+05>-5") +#define TZ_Asia_Yerevan ("<+04>-4") +#define TZ_Atlantic_Azores ("<-01>1<+00>,M3.5.0/0,M10.5.0/1") +#define TZ_Atlantic_Bermuda ("AST4ADT,M3.2.0,M11.1.0") +#define TZ_Atlantic_Canary ("WET0WEST,M3.5.0/1,M10.5.0") +#define TZ_Atlantic_Cape_Verde ("<-01>1") +#define TZ_Atlantic_Faroe ("WET0WEST,M3.5.0/1,M10.5.0") +#define TZ_Atlantic_Madeira ("WET0WEST,M3.5.0/1,M10.5.0") +#define TZ_Atlantic_Reykjavik ("GMT0") +#define TZ_Atlantic_South_Georgia ("<-02>2") +#define TZ_Atlantic_Stanley ("<-03>3") +#define TZ_Atlantic_St_Helena ("GMT0") +#define TZ_Australia_Adelaide ("ACST-9:30ACDT,M10.1.0,M4.1.0/3") +#define TZ_Australia_Brisbane ("AEST-10") +#define TZ_Australia_Broken_Hill ("ACST-9:30ACDT,M10.1.0,M4.1.0/3") +#define TZ_Australia_Currie ("AEST-10AEDT,M10.1.0,M4.1.0/3") +#define TZ_Australia_Darwin ("ACST-9:30") +#define TZ_Australia_Eucla ("<+0845>-8:45") +#define TZ_Australia_Hobart ("AEST-10AEDT,M10.1.0,M4.1.0/3") +#define TZ_Australia_Lindeman ("AEST-10") +#define TZ_Australia_Lord_Howe ("<+1030>-10:30<+11>-11,M10.1.0,M4.1.0") +#define TZ_Australia_Melbourne ("AEST-10AEDT,M10.1.0,M4.1.0/3") +#define TZ_Australia_Perth ("AWST-8") +#define TZ_Australia_Sydney ("AEST-10AEDT,M10.1.0,M4.1.0/3") +#define TZ_Europe_Amsterdam ("CET-1CEST,M3.5.0,M10.5.0/3") +#define TZ_Europe_Andorra ("CET-1CEST,M3.5.0,M10.5.0/3") +#define TZ_Europe_Astrakhan ("<+04>-4") +#define TZ_Europe_Athens ("EET-2EEST,M3.5.0/3,M10.5.0/4") +#define TZ_Europe_Belgrade ("CET-1CEST,M3.5.0,M10.5.0/3") +#define TZ_Europe_Berlin ("CET-1CEST,M3.5.0,M10.5.0/3") +#define TZ_Europe_Bratislava ("CET-1CEST,M3.5.0,M10.5.0/3") +#define TZ_Europe_Brussels ("CET-1CEST,M3.5.0,M10.5.0/3") +#define TZ_Europe_Bucharest ("EET-2EEST,M3.5.0/3,M10.5.0/4") +#define TZ_Europe_Budapest ("CET-1CEST,M3.5.0,M10.5.0/3") +#define TZ_Europe_Busingen ("CET-1CEST,M3.5.0,M10.5.0/3") +#define TZ_Europe_Chisinau ("EET-2EEST,M3.5.0,M10.5.0/3") +#define TZ_Europe_Copenhagen ("CET-1CEST,M3.5.0,M10.5.0/3") +#define TZ_Europe_Dublin ("IST-1GMT0,M10.5.0,M3.5.0/1") +#define TZ_Europe_Gibraltar ("CET-1CEST,M3.5.0,M10.5.0/3") +#define TZ_Europe_Guernsey ("GMT0BST,M3.5.0/1,M10.5.0") +#define TZ_Europe_Helsinki ("EET-2EEST,M3.5.0/3,M10.5.0/4") +#define TZ_Europe_Isle_of_Man ("GMT0BST,M3.5.0/1,M10.5.0") +#define TZ_Europe_Istanbul ("<+03>-3") +#define TZ_Europe_Jersey ("GMT0BST,M3.5.0/1,M10.5.0") +#define TZ_Europe_Kaliningrad ("EET-2") +#define TZ_Europe_Kiev ("EET-2EEST,M3.5.0/3,M10.5.0/4") +#define TZ_Europe_Kirov ("<+03>-3") +#define TZ_Europe_Lisbon ("WET0WEST,M3.5.0/1,M10.5.0") +#define TZ_Europe_Ljubljana ("CET-1CEST,M3.5.0,M10.5.0/3") +#define TZ_Europe_London ("GMT0BST,M3.5.0/1,M10.5.0") +#define TZ_Europe_Luxembourg ("CET-1CEST,M3.5.0,M10.5.0/3") +#define TZ_Europe_Madrid ("CET-1CEST,M3.5.0,M10.5.0/3") +#define TZ_Europe_Malta ("CET-1CEST,M3.5.0,M10.5.0/3") +#define TZ_Europe_Mariehamn ("EET-2EEST,M3.5.0/3,M10.5.0/4") +#define TZ_Europe_Minsk ("<+03>-3") +#define TZ_Europe_Monaco ("CET-1CEST,M3.5.0,M10.5.0/3") +#define TZ_Europe_Moscow ("MSK-3") +#define TZ_Europe_Oslo ("CET-1CEST,M3.5.0,M10.5.0/3") +#define TZ_Europe_Paris ("CET-1CEST,M3.5.0,M10.5.0/3") +#define TZ_Europe_Podgorica ("CET-1CEST,M3.5.0,M10.5.0/3") +#define TZ_Europe_Prague ("CET-1CEST,M3.5.0,M10.5.0/3") +#define TZ_Europe_Riga ("EET-2EEST,M3.5.0/3,M10.5.0/4") +#define TZ_Europe_Rome ("CET-1CEST,M3.5.0,M10.5.0/3") +#define TZ_Europe_Samara ("<+04>-4") +#define TZ_Europe_San_Marino ("CET-1CEST,M3.5.0,M10.5.0/3") +#define TZ_Europe_Sarajevo ("CET-1CEST,M3.5.0,M10.5.0/3") +#define TZ_Europe_Saratov ("<+04>-4") +#define TZ_Europe_Simferopol ("MSK-3") +#define TZ_Europe_Skopje ("CET-1CEST,M3.5.0,M10.5.0/3") +#define TZ_Europe_Sofia ("EET-2EEST,M3.5.0/3,M10.5.0/4") +#define TZ_Europe_Stockholm ("CET-1CEST,M3.5.0,M10.5.0/3") +#define TZ_Europe_Tallinn ("EET-2EEST,M3.5.0/3,M10.5.0/4") +#define TZ_Europe_Tirane ("CET-1CEST,M3.5.0,M10.5.0/3") +#define TZ_Europe_Ulyanovsk ("<+04>-4") +#define TZ_Europe_Uzhgorod ("EET-2EEST,M3.5.0/3,M10.5.0/4") +#define TZ_Europe_Vaduz ("CET-1CEST,M3.5.0,M10.5.0/3") +#define TZ_Europe_Vatican ("CET-1CEST,M3.5.0,M10.5.0/3") +#define TZ_Europe_Vienna ("CET-1CEST,M3.5.0,M10.5.0/3") +#define TZ_Europe_Vilnius ("EET-2EEST,M3.5.0/3,M10.5.0/4") +#define TZ_Europe_Volgograd ("<+04>-4") +#define TZ_Europe_Warsaw ("CET-1CEST,M3.5.0,M10.5.0/3") +#define TZ_Europe_Zagreb ("CET-1CEST,M3.5.0,M10.5.0/3") +#define TZ_Europe_Zaporozhye ("EET-2EEST,M3.5.0/3,M10.5.0/4") +#define TZ_Europe_Zurich ("CET-1CEST,M3.5.0,M10.5.0/3") +#define TZ_Indian_Antananarivo ("EAT-3") +#define TZ_Indian_Chagos ("<+06>-6") +#define TZ_Indian_Christmas ("<+07>-7") +#define TZ_Indian_Cocos ("<+0630>-6:30") +#define TZ_Indian_Comoro ("EAT-3") +#define TZ_Indian_Kerguelen ("<+05>-5") +#define TZ_Indian_Mahe ("<+04>-4") +#define TZ_Indian_Maldives ("<+05>-5") +#define TZ_Indian_Mauritius ("<+04>-4") +#define TZ_Indian_Mayotte ("EAT-3") +#define TZ_Indian_Reunion ("<+04>-4") +#define TZ_Pacific_Apia ("<+13>-13<+14>,M9.5.0/3,M4.1.0/4") +#define TZ_Pacific_Auckland ("NZST-12NZDT,M9.5.0,M4.1.0/3") +#define TZ_Pacific_Bougainville ("<+11>-11") +#define TZ_Pacific_Chatham ("<+1245>-12:45<+1345>,M9.5.0/2:45,M4.1.0/3:45") +#define TZ_Pacific_Chuuk ("<+10>-10") +#define TZ_Pacific_Easter ("<-06>6<-05>,M9.1.6/22,M4.1.6/22") +#define TZ_Pacific_Efate ("<+11>-11") +#define TZ_Pacific_Enderbury ("<+13>-13") +#define TZ_Pacific_Fakaofo ("<+13>-13") +#define TZ_Pacific_Fiji ("<+12>-12<+13>,M11.2.0,M1.2.3/99") +#define TZ_Pacific_Funafuti ("<+12>-12") +#define TZ_Pacific_Galapagos ("<-06>6") +#define TZ_Pacific_Gambier ("<-09>9") +#define TZ_Pacific_Guadalcanal ("<+11>-11") +#define TZ_Pacific_Guam ("ChST-10") +#define TZ_Pacific_Honolulu ("HST10") +#define TZ_Pacific_Kiritimati ("<+14>-14") +#define TZ_Pacific_Kosrae ("<+11>-11") +#define TZ_Pacific_Kwajalein ("<+12>-12") +#define TZ_Pacific_Majuro ("<+12>-12") +#define TZ_Pacific_Marquesas ("<-0930>9:30") +#define TZ_Pacific_Midway ("SST11") +#define TZ_Pacific_Nauru ("<+12>-12") +#define TZ_Pacific_Niue ("<-11>11") +#define TZ_Pacific_Norfolk ("<+11>-11<+12>,M10.1.0,M4.1.0/3") +#define TZ_Pacific_Noumea ("<+11>-11") +#define TZ_Pacific_Pago_Pago ("SST11") +#define TZ_Pacific_Palau ("<+09>-9") +#define TZ_Pacific_Pitcairn ("<-08>8") +#define TZ_Pacific_Pohnpei ("<+11>-11") +#define TZ_Pacific_Port_Moresby ("<+10>-10") +#define TZ_Pacific_Rarotonga ("<-10>10") +#define TZ_Pacific_Saipan ("ChST-10") +#define TZ_Pacific_Tahiti ("<-10>10") +#define TZ_Pacific_Tarawa ("<+12>-12") +#define TZ_Pacific_Tongatapu ("<+13>-13") +#define TZ_Pacific_Wake ("<+12>-12") +#define TZ_Pacific_Wallis ("<+12>-12") +#define TZ_Etc_GMT ("GMT0") +#define TZ_Etc_GMTm0 ("GMT0") +#define TZ_Etc_GMTm1 ("<+01>-1") +#define TZ_Etc_GMTm2 ("<+02>-2") +#define TZ_Etc_GMTm3 ("<+03>-3") +#define TZ_Etc_GMTm4 ("<+04>-4") +#define TZ_Etc_GMTm5 ("<+05>-5") +#define TZ_Etc_GMTm6 ("<+06>-6") +#define TZ_Etc_GMTm7 ("<+07>-7") +#define TZ_Etc_GMTm8 ("<+08>-8") +#define TZ_Etc_GMTm9 ("<+09>-9") +#define TZ_Etc_GMTm10 ("<+10>-10") +#define TZ_Etc_GMTm11 ("<+11>-11") +#define TZ_Etc_GMTm12 ("<+12>-12") +#define TZ_Etc_GMTm13 ("<+13>-13") +#define TZ_Etc_GMTm14 ("<+14>-14") +#define TZ_Etc_GMT0 ("GMT0") +#define TZ_Etc_GMTp0 ("GMT0") +#define TZ_Etc_GMTp1 ("<-01>1") +#define TZ_Etc_GMTp2 ("<-02>2") +#define TZ_Etc_GMTp3 ("<-03>3") +#define TZ_Etc_GMTp4 ("<-04>4") +#define TZ_Etc_GMTp5 ("<-05>5") +#define TZ_Etc_GMTp6 ("<-06>6") +#define TZ_Etc_GMTp7 ("<-07>7") +#define TZ_Etc_GMTp8 ("<-08>8") +#define TZ_Etc_GMTp9 ("<-09>9") +#define TZ_Etc_GMTp10 ("<-10>10") +#define TZ_Etc_GMTp11 ("<-11>11") +#define TZ_Etc_GMTp12 ("<-12>12") +#define TZ_Etc_UCT ("UTC0") +#define TZ_Etc_UTC ("UTC0") +#define TZ_Etc_Greenwich ("GMT0") +#define TZ_Etc_Universal ("UTC0") +#define TZ_Etc_Zulu ("UTC0") + +//////////////////////////////////////////////////////////// + +#define TIMEZONE_MAX_LEN 50 + +static const char TZ_NAME[][TIMEZONE_MAX_LEN] /*PROGMEM*/ = +{ +#if USING_AFRICA + "Africa/Abidjan", //PSTR("GMT0") + "Africa/Accra", //PSTR("GMT0") + "Africa/Addis_Ababa", //PSTR("EAT-3") + "Africa/Algiers", //PSTR("CET-1") + "Africa/Asmara", //PSTR("EAT-3") + "Africa/Bamako", //PSTR("GMT0") + "Africa/Bangui", //PSTR("WAT-1") + "Africa/Banjul", //PSTR("GMT0") + "Africa/Bissau", //PSTR("GMT0") + "Africa/Blantyre", //PSTR("CAT-2") + "Africa/Brazzaville", //PSTR("WAT-1") + "Africa/Bujumbura", //PSTR("CAT-2") + "Africa/Cairo", //PSTR("EET-2") + "Africa/Casablanca", //PSTR("<+01>-1") + "Africa/Ceuta", //PSTR("CET-1CEST",M3.5.0",M10.5.0/3") + "Africa/Conakry", //PSTR("GMT0") + "Africa/Dakar", //PSTR("GMT0") + "Africa/Dar_es_Salaam", //PSTR("EAT-3") + "Africa/Djibouti", //PSTR("EAT-3") + "Africa/Douala", //PSTR("WAT-1") + "Africa/El_Aaiun", //PSTR("<+01>-1") + "Africa/Freetown", //PSTR("GMT0") + "Africa/Gaborone", //PSTR("CAT-2") + "Africa/Harare", //PSTR("CAT-2") + "Africa/Johannesburg", //PSTR("SAST-2") + "Africa/Juba", //PSTR("EAT-3") + "Africa/Kampala", //PSTR("EAT-3") + "Africa/Khartoum", //PSTR("CAT-2") + "Africa/Kigali", //PSTR("CAT-2") + "Africa/Kinshasa", //PSTR("WAT-1") + "Africa/Lagos", //PSTR("WAT-1") + "Africa/Libreville", //PSTR("WAT-1") + "Africa/Lome", //PSTR("GMT0") + "Africa/Luanda", //PSTR("WAT-1") + "Africa/Lubumbashi", //PSTR("CAT-2") + "Africa/Lusaka", //PSTR("CAT-2") + "Africa/Malabo", //PSTR("WAT-1") + "Africa/Maputo", //PSTR("CAT-2") + "Africa/Maseru", //PSTR("SAST-2") + "Africa/Mbabane", //PSTR("SAST-2") + "Africa/Mogadishu", //PSTR("EAT-3") + "Africa/Monrovia", //PSTR("GMT0") + "Africa/Nairobi", //PSTR("EAT-3") + "Africa/Ndjamena", //PSTR("WAT-1") + "Africa/Niamey", //PSTR("WAT-1") + "Africa/Nouakchott", //PSTR("GMT0") + "Africa/Ouagadougou", //PSTR("GMT0") + "Africa/PortomNovo", //PSTR("WAT-1") + "Africa/Sao_Tome", //PSTR("GMT0") + "Africa/Tripoli", //PSTR("EET-2") + "Africa/Tunis", //PSTR("CET-1") + "Africa/Windhoek", //PSTR("CAT-2") +#endif + + +#if USING_AMERICA + "America/Adak", //PSTR("HST10HDT",M3.2.0",M11.1.0") + "America/Anchorage", //PSTR("AKST9AKDT",M3.2.0",M11.1.0") + "America/Anguilla", //PSTR("AST4") + "America/Antigua", //PSTR("AST4") + "America/Araguaina", //PSTR("<-03>3") + "America/Argentina/Buenos_Aires", //PSTR("<-03>3") + "America/Argentina/Catamarca", //PSTR("<-03>3") + "America/Argentina/Cordoba", //PSTR("<-03>3") + "America/Argentina/Jujuy", //PSTR("<-03>3") + "America/Argentina/La_Rioja", //PSTR("<-03>3") + "America/Argentina/Mendoza", //PSTR("<-03>3") + "America/Argentina/Rio_Gallegos", //PSTR("<-03>3") + "America/Argentina/Salta", //PSTR("<-03>3") + "America/Argentina/San_Juan", //PSTR("<-03>3") + "America/Argentina/San_Luis", //PSTR("<-03>3") + "America/Argentina/Tucuman", //PSTR("<-03>3") + "America/Argentina/Ushuaia", //PSTR("<-03>3") + "America/Aruba", //PSTR("AST4") + "America/Asuncion", //PSTR("<-04>4<-03>",M10.1.0/0",M3.4.0/0") + "America/Atikokan", //PSTR("EST5") + "America/Bahia", //PSTR("<-03>3") + "America/Bahia_Banderas", //PSTR("CST6CDT",M4.1.0",M10.5.0") + "America/Barbados", //PSTR("AST4") + "America/Belem", //PSTR("<-03>3") + "America/Belize", //PSTR("CST6") + "America/BlancmSablon", //PSTR("AST4") + "America/Boa_Vista", //PSTR("<-04>4") + "America/Bogota", //PSTR("<-05>5") + "America/Boise", //PSTR("MST7MDT",M3.2.0",M11.1.0") + "America/Cambridge_Bay", //PSTR("MST7MDT",M3.2.0",M11.1.0") + "America/Campo_Grande", //PSTR("<-04>4") + "America/Cancun", //PSTR("EST5") + "America/Caracas", //PSTR("<-04>4") + "America/Cayenne", //PSTR("<-03>3") + "America/Cayman", //PSTR("EST5") + "America/Chicago", //PSTR("CST6CDT",M3.2.0",M11.1.0") + "America/Chihuahua", //PSTR("MST7MDT",M4.1.0",M10.5.0") + "America/Costa_Rica", //PSTR("CST6") + "America/Creston", //PSTR("MST7") + "America/Cuiaba", //PSTR("<-04>4") + "America/Curacao", //PSTR("AST4") + "America/Danmarkshavn", //PSTR("GMT0") + "America/Dawson", //PSTR("MST7") + "America/Dawson_Creek", //PSTR("MST7") + "America/Denver", //PSTR("MST7MDT",M3.2.0",M11.1.0") + "America/Detroit", //PSTR("EST5EDT",M3.2.0",M11.1.0") + "America/Dominica", //PSTR("AST4") + "America/Edmonton", //PSTR("MST7MDT",M3.2.0",M11.1.0") + "America/Eirunepe", //PSTR("<-05>5") + "America/El_Salvador", //PSTR("CST6") + "America/Fortaleza", //PSTR("<-03>3") + "America/Fort_Nelson", //PSTR("MST7") + "America/Glace_Bay", //PSTR("AST4ADT",M3.2.0",M11.1.0") + "America/Godthab", //PSTR("<-03>3<-02>",M3.5.0/-2",M10.5.0/-1") + "America/Goose_Bay", //PSTR("AST4ADT",M3.2.0",M11.1.0") + "America/Grand_Turk", //PSTR("EST5EDT",M3.2.0",M11.1.0") + "America/Grenada", //PSTR("AST4") + "America/Guadeloupe", //PSTR("AST4") + "America/Guatemala", //PSTR("CST6") + "America/Guayaquil", //PSTR("<-05>5") + "America/Guyana", //PSTR("<-04>4") + "America/Halifax", //PSTR("AST4ADT",M3.2.0",M11.1.0") + "America/Havana", //PSTR("CST5CDT",M3.2.0/0",M11.1.0/1") + "America/Hermosillo", //PSTR("MST7") + "America/Indiana_Indianapolis", //PSTR("EST5EDT",M3.2.0",M11.1.0") + "America/Indiana_Knox", //PSTR("CST6CDT",M3.2.0",M11.1.0") + "America/Indiana_Marengo", //PSTR("EST5EDT",M3.2.0",M11.1.0") + "America/Indiana_Petersburg", //PSTR("EST5EDT",M3.2.0",M11.1.0") + "America/Indiana_Tell_City", //PSTR("CST6CDT",M3.2.0",M11.1.0") + "America/Indiana_Vevay", //PSTR("EST5EDT",M3.2.0",M11.1.0") + "America/Indiana_Vincennes", //PSTR("EST5EDT",M3.2.0",M11.1.0") + "America/Indiana_Winamac", //PSTR("EST5EDT",M3.2.0",M11.1.0") + "America/Inuvik", //PSTR("MST7MDT",M3.2.0",M11.1.0") + "America/Iqaluit", //PSTR("EST5EDT",M3.2.0",M11.1.0") + "America/Jamaica", //PSTR("EST5") + "America/Juneau", //PSTR("AKST9AKDT",M3.2.0",M11.1.0") + "America/Kentucky_Louisville", //PSTR("EST5EDT",M3.2.0",M11.1.0") + "America/Kentucky_Monticello", //PSTR("EST5EDT",M3.2.0",M11.1.0") + "America/Kralendijk", //PSTR("AST4") + "America/La_Paz", //PSTR("<-04>4") + "America/Lima", //PSTR("<-05>5") + "America/Los_Angeles", //PSTR("PST8PDT",M3.2.0",M11.1.0") + "America/Lower_Princes", //PSTR("AST4") + "America/Maceio", //PSTR("<-03>3") + "America/Managua", //PSTR("CST6") + "America/Manaus", //PSTR("<-04>4") + "America/Marigot", //PSTR("AST4") + "America/Martinique", //PSTR("AST4") + "America/Matamoros", //PSTR("CST6CDT",M3.2.0",M11.1.0") + "America/Mazatlan", //PSTR("MST7MDT",M4.1.0",M10.5.0") + "America/Menominee", //PSTR("CST6CDT",M3.2.0",M11.1.0") + "America/Merida", //PSTR("CST6CDT",M4.1.0",M10.5.0") + "America/Metlakatla", //PSTR("AKST9AKDT",M3.2.0",M11.1.0") + "America/Mexico_City", //PSTR("CST6CDT",M4.1.0",M10.5.0") + "America/Miquelon", //PSTR("<-03>3<-02>",M3.2.0",M11.1.0") + "America/Moncton", //PSTR("AST4ADT",M3.2.0",M11.1.0") + "America/Monterrey", //PSTR("CST6CDT",M4.1.0",M10.5.0") + "America/Montevideo", //PSTR("<-03>3") + "America/Montreal", //PSTR("EST5EDT",M3.2.0",M11.1.0") + "America/Montserrat", //PSTR("AST4") + "America/Nassau", //PSTR("EST5EDT",M3.2.0",M11.1.0") + "America/New_York", //PSTR("EST5EDT",M3.2.0",M11.1.0") + "America/Nipigon", //PSTR("EST5EDT",M3.2.0",M11.1.0") + "America/Nome", //PSTR("AKST9AKDT",M3.2.0",M11.1.0") + "America/Noronha", //PSTR("<-02>2") + "America/North_Dakota_Beulah", //PSTR("CST6CDT",M3.2.0",M11.1.0") + "America/North_Dakota_Center", //PSTR("CST6CDT",M3.2.0",M11.1.0") + "America/North_Dakota_New_Salem", //PSTR("CST6CDT",M3.2.0",M11.1.0") + "America/Ojinaga", //PSTR("MST7MDT",M3.2.0",M11.1.0") + "America/Panama", //PSTR("EST5") + "America/Pangnirtung", //PSTR("EST5EDT",M3.2.0",M11.1.0") + "America/Paramaribo", //PSTR("<-03>3") + "America/Phoenix", //PSTR("MST7") + "America/PortmaumPrince", //PSTR("EST5EDT",M3.2.0",M11.1.0") + "America/Port_of_Spain", //PSTR("AST4") + "America/Porto_Velho", //PSTR("<-04>4") + "America/Puerto_Rico", //PSTR("AST4") + "America/Punta_Arenas", //PSTR("<-03>3") + "America/Rainy_River", //PSTR("CST6CDT",M3.2.0",M11.1.0") + "America/Rankin_Inlet", //PSTR("CST6CDT",M3.2.0",M11.1.0") + "America/Recife", //PSTR("<-03>3") + "America/Regina", //PSTR("CST6") + "America/Resolute", //PSTR("CST6CDT",M3.2.0",M11.1.0") + "America/Rio_Branco", //PSTR("<-05>5") + "America/Santarem", //PSTR("<-03>3") + "America/Santiago", //PSTR("<-04>4<-03>",M9.1.6/24",M4.1.6/24") + "America/Santo_Domingo", //PSTR("AST4") + "America/Sao_Paulo", //PSTR("<-03>3") + "America/Scoresbysund", //PSTR("<-01>1<+00>",M3.5.0/0",M10.5.0/1") + "America/Sitka", //PSTR("AKST9AKDT",M3.2.0",M11.1.0") + "America/St_Barthelemy", //PSTR("AST4") + "America/St_Johns", //PSTR("NST3:30NDT",M3.2.0",M11.1.0") + "America/St_Kitts", //PSTR("AST4") + "America/St_Lucia", //PSTR("AST4") + "America/St_Thomas", //PSTR("AST4") + "America/St_Vincent", //PSTR("AST4") + "America/Swift_Current", //PSTR("CST6") + "America/Tegucigalpa", //PSTR("CST6") + "America/Thule", //PSTR("AST4ADT",M3.2.0",M11.1.0") + "America/Thunder_Bay", //PSTR("EST5EDT",M3.2.0",M11.1.0") + "America/Tijuana", //PSTR("PST8PDT",M3.2.0",M11.1.0") + "America/Toronto", //PSTR("EST5EDT",M3.2.0",M11.1.0") + "America/Tortola", //PSTR("AST4") + "America/Vancouver", //PSTR("PST8PDT",M3.2.0",M11.1.0") + "America/Whitehorse", //PSTR("MST7") + "America/Winnipeg", //PSTR("CST6CDT",M3.2.0",M11.1.0") + "America/Yakutat", //PSTR("AKST9AKDT",M3.2.0",M11.1.0") + "America/Yellowknife", //PSTR("MST7MDT",M3.2.0",M11.1.0") +#endif + +#if USING_ANTARCTICA + "Antarctica/Casey", //PSTR("<+11>-11") + "Antarctica/Davis", //PSTR("<+07>-7") + "Antarctica/DumontDUrville", //PSTR("<+10>-10") + "Antarctica/Macquarie", //PSTR("AEST-10AEDT",M10.1.0",M4.1.0/3") + "Antarctica/Mawson", //PSTR("<+05>-5") + "Antarctica/McMurdo", //PSTR("NZST-12NZDT",M9.5.0",M4.1.0/3") + "Antarctica/Palmer", //PSTR("<-03>3") + "Antarctica/Rothera", //PSTR("<-03>3") + "Antarctica/Syowa", //PSTR("<+03>-3") + "Antarctica/Troll", //PSTR("<+00>0<+02>-2",M3.5.0/1",M10.5.0/3") + "Antarctica/Vostok", //PSTR("<+06>-6") + "Arctic/Longyearbyen", //PSTR("CET-1CEST",M3.5.0",M10.5.0/3") +#endif + +#if USING_ASIA + "Asia/Aden", //PSTR("<+03>-3") + "Asia/Almaty", //PSTR("<+06>-6") + "Asia/Amman", //PSTR("EET-2EEST",M3.5.4/24",M10.5.5/1") + "Asia/Anadyr", //PSTR("<+12>-12") + "Asia/Aqtau", //PSTR("<+05>-5") + "Asia/Aqtobe", //PSTR("<+05>-5") + "Asia/Ashgabat", //PSTR("<+05>-5") + "Asia/Atyrau", //PSTR("<+05>-5") + "Asia/Baghdad", //PSTR("<+03>-3") + "Asia/Bahrain", //PSTR("<+03>-3") + "Asia/Baku", //PSTR("<+04>-4") + "Asia/Bangkok", //PSTR("<+07>-7") + "Asia/Barnaul", //PSTR("<+07>-7") + "Asia/Beirut", //PSTR("EET-2EEST",M3.5.0/0",M10.5.0/0") + "Asia/Bishkek", //PSTR("<+06>-6") + "Asia/Brunei", //PSTR("<+08>-8") + "Asia/Chita", //PSTR("<+09>-9") + "Asia/Choibalsan", //PSTR("<+08>-8") + "Asia/Colombo", //PSTR("<+0530>-5:30") + "Asia/Damascus", //PSTR("EET-2EEST",M3.5.5/0",M10.5.5/0") + "Asia/Dhaka", //PSTR("<+06>-6") + "Asia/Dili", //PSTR("<+09>-9") + "Asia/Dubai", //PSTR("<+04>-4") + "Asia/Dushanbe", //PSTR("<+05>-5") + "Asia/Famagusta", //PSTR("EET-2EEST",M3.5.0/3",M10.5.0/4") + "Asia/Gaza", //PSTR("EET-2EEST",M3.4.4/48",M10.4.4/49") + "Asia/Hebron", //PSTR("EET-2EEST",M3.4.4/48",M10.4.4/49") + "Asia/Ho_Chi_Minh", //PSTR("<+07>-7") + "Asia/Hong_Kong", //PSTR("HKT-8") + "Asia/Hovd", //PSTR("<+07>-7") + "Asia/Irkutsk", //PSTR("<+08>-8") + "Asia/Jakarta", //PSTR("WIB-7") + "Asia/Jayapura", //PSTR("WIT-9") + "Asia/Jerusalem", //PSTR("IST-2IDT",M3.4.4/26",M10.5.0") + "Asia/Kabul", //PSTR("<+0430>-4:30") + "Asia/Kamchatka", //PSTR("<+12>-12") + "Asia/Karachi", //PSTR("PKT-5") + "Asia/Kathmandu", //PSTR("<+0545>-5:45") + "Asia/Khandyga", //PSTR("<+09>-9") + "Asia/Kolkata", //PSTR("IST-5:30") + "Asia/Krasnoyarsk", //PSTR("<+07>-7") + "Asia/Kuala_Lumpur", //PSTR("<+08>-8") + "Asia/Kuching", //PSTR("<+08>-8") + "Asia/Kuwait", //PSTR("<+03>-3") + "Asia/Macau", //PSTR("CST-8") + "Asia/Magadan", //PSTR("<+11>-11") + "Asia/Makassar", //PSTR("WITA-8") + "Asia/Manila", //PSTR("PST-8") + "Asia/Muscat", //PSTR("<+04>-4") + "Asia/Nicosia", //PSTR("EET-2EEST",M3.5.0/3",M10.5.0/4") + "Asia/Novokuznetsk", //PSTR("<+07>-7") + "Asia/Novosibirsk", //PSTR("<+07>-7") + "Asia/Omsk", //PSTR("<+06>-6") + "Asia/Oral", //PSTR("<+05>-5") + "Asia/Phnom_Penh", //PSTR("<+07>-7") + "Asia/Pontianak", //PSTR("WIB-7") + "Asia/Pyongyang", //PSTR("KST-9") + "Asia/Qatar", //PSTR("<+03>-3") + "Asia/Qyzylorda", //PSTR("<+05>-5") + "Asia/Riyadh", //PSTR("<+03>-3") + "Asia/Sakhalin", //PSTR("<+11>-11") + "Asia/Samarkand", //PSTR("<+05>-5") + "Asia/Seoul", //PSTR("KST-9") + "Asia/Shanghai", //PSTR("CST-8") + "Asia/Singapore", //PSTR("<+08>-8") + "Asia/Srednekolymsk", //PSTR("<+11>-11") + "Asia/Taipei", //PSTR("CST-8") + "Asia/Tashkent", //PSTR("<+05>-5") + "Asia/Tbilisi", //PSTR("<+04>-4") + "Asia/Tehran", //PSTR("<+0330>-3:30<+0430>",J79/24",J263/24") + "Asia/Thimphu", //PSTR("<+06>-6") + "Asia/Tokyo", //PSTR("JST-9") + "Asia/Tomsk", //PSTR("<+07>-7") + "Asia/Ulaanbaatar", //PSTR("<+08>-8") + "Asia/Urumqi", //PSTR("<+06>-6") + "Asia/UstmNera", //PSTR("<+10>-10") + "Asia/Vientiane", //PSTR("<+07>-7") + "Asia/Vladivostok", //PSTR("<+10>-10") + "Asia/Yakutsk", //PSTR("<+09>-9") + "Asia/Yangon", //PSTR("<+0630>-6:30") + "Asia/Yekaterinburg", //PSTR("<+05>-5") + "Asia/Yerevan", //PSTR("<+04>-4") +#endif + +#if USING_ATLANTIC + "Atlantic/Azores", //PSTR("<-01>1<+00>",M3.5.0/0",M10.5.0/1") + "Atlantic/Bermuda", //PSTR("AST4ADT",M3.2.0",M11.1.0") + "Atlantic/Canary", //PSTR("WET0WEST",M3.5.0/1",M10.5.0") + "Atlantic/Cape_Verde", //PSTR("<-01>1") + "Atlantic/Faroe", //PSTR("WET0WEST",M3.5.0/1",M10.5.0") + "Atlantic/Madeira", //PSTR("WET0WEST",M3.5.0/1",M10.5.0") + "Atlantic/Reykjavik", //PSTR("GMT0") + "Atlantic/South_Georgia", //PSTR("<-02>2") + "Atlantic/Stanley", //PSTR("<-03>3") + "Atlantic/St_Helena", //PSTR("GMT0") +#endif + +#if USING_AUSTRALIA + "Australia/Adelaide", //PSTR("ACST-9:30ACDT",M10.1.0",M4.1.0/3") + "Australia/Brisbane", //PSTR("AEST-10") + "Australia/Broken_Hill", //PSTR("ACST-9:30ACDT",M10.1.0",M4.1.0/3") + "Australia/Currie", //PSTR("AEST-10AEDT",M10.1.0",M4.1.0/3") + "Australia/Darwin", //PSTR("ACST-9:30") + "Australia/Eucla", //PSTR("<+0845>-8:45") + "Australia/Hobart", //PSTR("AEST-10AEDT",M10.1.0",M4.1.0/3") + "Australia/Lindeman", //PSTR("AEST-10") + "Australia/Lord_Howe", //PSTR("<+1030>-10:30<+11>-11",M10.1.0",M4.1.0") + "Australia/Melbourne", //PSTR("AEST-10AEDT",M10.1.0",M4.1.0/3") + "Australia/Perth", //PSTR("AWST-8") + "Australia/Sydney", //PSTR("AEST-10AEDT",M10.1.0",M4.1.0/3") +#endif + +#if USING_EUROPE + "Europe/Amsterdam", //PSTR("CET-1CEST",M3.5.0",M10.5.0/3") + "Europe/Andorra", //PSTR("CET-1CEST",M3.5.0",M10.5.0/3") + "Europe/Astrakhan", //PSTR("<+04>-4") + "Europe/Athens", //PSTR("EET-2EEST",M3.5.0/3",M10.5.0/4") + "Europe/Belgrade", //PSTR("CET-1CEST",M3.5.0",M10.5.0/3") + "Europe/Berlin", //PSTR("CET-1CEST",M3.5.0",M10.5.0/3") + "Europe/Bratislava", //PSTR("CET-1CEST",M3.5.0",M10.5.0/3") + "Europe/Brussels", //PSTR("CET-1CEST",M3.5.0",M10.5.0/3") + "Europe/Bucharest", //PSTR("EET-2EEST",M3.5.0/3",M10.5.0/4") + "Europe/Budapest", //PSTR("CET-1CEST",M3.5.0",M10.5.0/3") + "Europe/Busingen", //PSTR("CET-1CEST",M3.5.0",M10.5.0/3") + "Europe/Chisinau", //PSTR("EET-2EEST",M3.5.0",M10.5.0/3") + "Europe/Copenhagen", //PSTR("CET-1CEST",M3.5.0",M10.5.0/3") + "Europe/Dublin", //PSTR("IST-1GMT0",M10.5.0",M3.5.0/1") + "Europe/Gibraltar", //PSTR("CET-1CEST",M3.5.0",M10.5.0/3") + "Europe/Guernsey", //PSTR("GMT0BST",M3.5.0/1",M10.5.0") + "Europe/Helsinki", //PSTR("EET-2EEST",M3.5.0/3",M10.5.0/4") + "Europe/Isle_of_Man", //PSTR("GMT0BST",M3.5.0/1",M10.5.0") + "Europe/Istanbul", //PSTR("<+03>-3") + "Europe/Jersey", //PSTR("GMT0BST",M3.5.0/1",M10.5.0") + "Europe/Kaliningrad", //PSTR("EET-2") + "Europe/Kiev", //PSTR("EET-2EEST",M3.5.0/3",M10.5.0/4") + "Europe/Kirov", //PSTR("<+03>-3") + "Europe/Lisbon", //PSTR("WET0WEST",M3.5.0/1",M10.5.0") + "Europe/Ljubljana", //PSTR("CET-1CEST",M3.5.0",M10.5.0/3") + "Europe/London", //PSTR("GMT0BST",M3.5.0/1",M10.5.0") + "Europe/Luxembourg", //PSTR("CET-1CEST",M3.5.0",M10.5.0/3") + "Europe/Madrid", //PSTR("CET-1CEST",M3.5.0",M10.5.0/3") + "Europe/Malta", //PSTR("CET-1CEST",M3.5.0",M10.5.0/3") + "Europe/Mariehamn", //PSTR("EET-2EEST",M3.5.0/3",M10.5.0/4") + "Europe/Minsk", //PSTR("<+03>-3") + "Europe/Monaco", //PSTR("CET-1CEST",M3.5.0",M10.5.0/3") + "Europe/Moscow", //PSTR("MSK-3") + "Europe/Oslo", //PSTR("CET-1CEST",M3.5.0",M10.5.0/3") + "Europe/Paris", //PSTR("CET-1CEST",M3.5.0",M10.5.0/3") + "Europe/Podgorica", //PSTR("CET-1CEST",M3.5.0",M10.5.0/3") + "Europe/Prague", //PSTR("CET-1CEST",M3.5.0",M10.5.0/3") + "Europe/Riga", //PSTR("EET-2EEST",M3.5.0/3",M10.5.0/4") + "Europe/Rome", //PSTR("CET-1CEST",M3.5.0",M10.5.0/3") + "Europe/Samara", //PSTR("<+04>-4") + "Europe/San_Marino", //PSTR("CET-1CEST",M3.5.0",M10.5.0/3") + "Europe/Sarajevo", //PSTR("CET-1CEST",M3.5.0",M10.5.0/3") + "Europe/Saratov", //PSTR("<+04>-4") + "Europe/Simferopol", //PSTR("MSK-3") + "Europe/Skopje", //PSTR("CET-1CEST",M3.5.0",M10.5.0/3") + "Europe/Sofia", //PSTR("EET-2EEST",M3.5.0/3",M10.5.0/4") + "Europe/Stockholm", //PSTR("CET-1CEST",M3.5.0",M10.5.0/3") + "Europe/Tallinn", //PSTR("EET-2EEST",M3.5.0/3",M10.5.0/4") + "Europe/Tirane", //PSTR("CET-1CEST",M3.5.0",M10.5.0/3") + "Europe/Ulyanovsk", //PSTR("<+04>-4") + "Europe/Uzhgorod", //PSTR("EET-2EEST",M3.5.0/3",M10.5.0/4") + "Europe/Vaduz", //PSTR("CET-1CEST",M3.5.0",M10.5.0/3") + "Europe/Vatican", //PSTR("CET-1CEST",M3.5.0",M10.5.0/3") + "Europe/Vienna", //PSTR("CET-1CEST",M3.5.0",M10.5.0/3") + "Europe/Vilnius", //PSTR("EET-2EEST",M3.5.0/3",M10.5.0/4") + "Europe/Volgograd", //PSTR("<+04>-4") + "Europe/Warsaw", //PSTR("CET-1CEST",M3.5.0",M10.5.0/3") + "Europe/Zagreb", //PSTR("CET-1CEST",M3.5.0",M10.5.0/3") + "Europe/Zaporozhye", //PSTR("EET-2EEST",M3.5.0/3",M10.5.0/4") + "Europe/Zurich", //PSTR("CET-1CEST",M3.5.0",M10.5.0/3") +#endif + +#if USING_INDIAN + "Indian/Antananarivo", //PSTR("EAT-3") + "Indian/Chagos", //PSTR("<+06>-6") + "Indian/Christmas", //PSTR("<+07>-7") + "Indian/Cocos", //PSTR("<+0630>-6:30") + "Indian/Comoro", //PSTR("EAT-3") + "Indian/Kerguelen", //PSTR("<+05>-5") + "Indian/Mahe", //PSTR("<+04>-4") + "Indian/Maldives", //PSTR("<+05>-5") + "Indian/Mauritius", //PSTR("<+04>-4") + "Indian/Mayotte", //PSTR("EAT-3") + "Indian/Reunion", //PSTR("<+04>-4") +#endif + +#if USING_PACIFIC + "Pacific/Apia", //PSTR("<+13>-13<+14>",M9.5.0/3",M4.1.0/4") + "Pacific/Auckland", //PSTR("NZST-12NZDT",M9.5.0",M4.1.0/3") + "Pacific/Bougainville", //PSTR("<+11>-11") + "Pacific/Chatham", //PSTR("<+1245>-12:45<+1345>",M9.5.0/2:45",M4.1.0/3:45") + "Pacific/Chuuk", //PSTR("<+10>-10") + "Pacific/Easter", //PSTR("<-06>6<-05>",M9.1.6/22",M4.1.6/22") + "Pacific/Efate", //PSTR("<+11>-11") + "Pacific/Enderbury", //PSTR("<+13>-13") + "Pacific/Fakaofo", //PSTR("<+13>-13") + "Pacific/Fiji", //PSTR("<+12>-12<+13>",M11.2.0",M1.2.3/99") + "Pacific/Funafuti", //PSTR("<+12>-12") + "Pacific/Galapagos", //PSTR("<-06>6") + "Pacific/Gambier", //PSTR("<-09>9") + "Pacific/Guadalcanal", //PSTR("<+11>-11") + "Pacific/Guam", //PSTR("ChST-10") + "Pacific/Honolulu", //PSTR("HST10") + "Pacific/Kiritimati", //PSTR("<+14>-14") + "Pacific/Kosrae", //PSTR("<+11>-11") + "Pacific/Kwajalein", //PSTR("<+12>-12") + "Pacific/Majuro", //PSTR("<+12>-12") + "Pacific/Marquesas", //PSTR("<-0930>9:30") + "Pacific/Midway", //PSTR("SST11") + "Pacific/Nauru", //PSTR("<+12>-12") + "Pacific/Niue", //PSTR("<-11>11") + "Pacific/Norfolk", //PSTR("<+11>-11<+12>",M10.1.0",M4.1.0/3") + "Pacific/Noumea", //PSTR("<+11>-11") + "Pacific/Pago_Pago", //PSTR("SST11") + "Pacific/Palau", //PSTR("<+09>-9") + "Pacific/Pitcairn", //PSTR("<-08>8") + "Pacific/Pohnpei", //PSTR("<+11>-11") + "Pacific/Port_Moresby", //PSTR("<+10>-10") + "Pacific/Rarotonga", //PSTR("<-10>10") + "Pacific/Saipan", //PSTR("ChST-10") + "Pacific/Tahiti", //PSTR("<-10>10") + "Pacific/Tarawa", //PSTR("<+12>-12") + "Pacific/Tongatapu", //PSTR("<+13>-13") + "Pacific/Wake", //PSTR("<+12>-12") + "Pacific/Wallis", //PSTR("<+12>-12") +#endif + +#if USING_ETC_GMT + "Etc/GMT", //PSTR("GMT0") + "Etc/GMTm0", //PSTR("GMT0") + "Etc/GMTm1", //PSTR("<+01>-1") + "Etc/GMTm2", //PSTR("<+02>-2") + "Etc/GMTm3", //PSTR("<+03>-3") + "Etc/GMTm4", //PSTR("<+04>-4") + "Etc/GMTm5", //PSTR("<+05>-5") + "Etc/GMTm6", //PSTR("<+06>-6") + "Etc/GMTm7", //PSTR("<+07>-7") + "Etc/GMTm8", //PSTR("<+08>-8") + "Etc/GMTm9", //PSTR("<+09>-9") + "Etc/GMTm10", //PSTR("<+10>-10") + "Etc/GMTm11", //PSTR("<+11>-11") + "Etc/GMTm12", //PSTR("<+12>-12") + "Etc/GMTm13", //PSTR("<+13>-13") + "Etc/GMTm14", //PSTR("<+14>-14") + "Etc/GMT0", //PSTR("GMT0") + "Etc/GMTp0", //PSTR("GMT0") + "Etc/GMTp1", //PSTR("<-01>1") + "Etc/GMTp2", //PSTR("<-02>2") + "Etc/GMTp3", //PSTR("<-03>3") + "Etc/GMTp4", //PSTR("<-04>4") + "Etc/GMTp5", //PSTR("<-05>5") + "Etc/GMTp6", //PSTR("<-06>6") + "Etc/GMTp7", //PSTR("<-07>7") + "Etc/GMTp8", //PSTR("<-08>8") + "Etc/GMTp9", //PSTR("<-09>9") + "Etc/GMTp10", //PSTR("<-10>10") + "Etc/GMTp11", //PSTR("<-11>11") + "Etc/GMTp12", //PSTR("<-12>12") + "Etc/UCT", //PSTR("UTC0") + "Etc/UTC", //PSTR("UTC0") + "Etc/Greenwich", //PSTR("GMT0") + "Etc/Universal", //PSTR("UTC0") + "Etc/Zulu", //PSTR("UTC0") +#endif +}; + +//////////////////////////////////////////////////////////// + +static const char ESP_TZ_NAME[][TIMEZONE_MAX_LEN] /*PROGMEM*/ = +{ +#if USING_AFRICA + TZ_Africa_Abidjan, //PSTR("GMT0") + TZ_Africa_Accra, //PSTR("GMT0") + TZ_Africa_Addis_Ababa, //PSTR("EAT-3") + TZ_Africa_Algiers, //PSTR("CET-1") + TZ_Africa_Asmara, //PSTR("EAT-3") + TZ_Africa_Bamako, //PSTR("GMT0") + TZ_Africa_Bangui, //PSTR("WAT-1") + TZ_Africa_Banjul, //PSTR("GMT0") + TZ_Africa_Bissau, //PSTR("GMT0") + TZ_Africa_Blantyre, //PSTR("CAT-2") + TZ_Africa_Brazzaville, //PSTR("WAT-1") + TZ_Africa_Bujumbura, //PSTR("CAT-2") + TZ_Africa_Cairo, //PSTR("EET-2") + TZ_Africa_Casablanca, //PSTR("<+01>-1") + TZ_Africa_Ceuta, //PSTR("CET-1CEST,M3.5.0,M10.5.0/3") + TZ_Africa_Conakry, //PSTR("GMT0") + TZ_Africa_Dakar, //PSTR("GMT0") + TZ_Africa_Dar_es_Salaam, //PSTR("EAT-3") + TZ_Africa_Djibouti, //PSTR("EAT-3") + TZ_Africa_Douala, //PSTR("WAT-1") + TZ_Africa_El_Aaiun, //PSTR("<+01>-1") + TZ_Africa_Freetown, //PSTR("GMT0") + TZ_Africa_Gaborone, //PSTR("CAT-2") + TZ_Africa_Harare, //PSTR("CAT-2") + TZ_Africa_Johannesburg, //PSTR("SAST-2") + TZ_Africa_Juba, //PSTR("EAT-3") + TZ_Africa_Kampala, //PSTR("EAT-3") + TZ_Africa_Khartoum, //PSTR("CAT-2") + TZ_Africa_Kigali, //PSTR("CAT-2") + TZ_Africa_Kinshasa, //PSTR("WAT-1") + TZ_Africa_Lagos, //PSTR("WAT-1") + TZ_Africa_Libreville, //PSTR("WAT-1") + TZ_Africa_Lome, //PSTR("GMT0") + TZ_Africa_Luanda, //PSTR("WAT-1") + TZ_Africa_Lubumbashi, //PSTR("CAT-2") + TZ_Africa_Lusaka, //PSTR("CAT-2") + TZ_Africa_Malabo, //PSTR("WAT-1") + TZ_Africa_Maputo, //PSTR("CAT-2") + TZ_Africa_Maseru, //PSTR("SAST-2") + TZ_Africa_Mbabane, //PSTR("SAST-2") + TZ_Africa_Mogadishu, //PSTR("EAT-3") + TZ_Africa_Monrovia, //PSTR("GMT0") + TZ_Africa_Nairobi, //PSTR("EAT-3") + TZ_Africa_Ndjamena, //PSTR("WAT-1") + TZ_Africa_Niamey, //PSTR("WAT-1") + TZ_Africa_Nouakchott, //PSTR("GMT0") + TZ_Africa_Ouagadougou, //PSTR("GMT0") + TZ_Africa_PortomNovo, //PSTR("WAT-1") + TZ_Africa_Sao_Tome, //PSTR("GMT0") + TZ_Africa_Tripoli, //PSTR("EET-2") + TZ_Africa_Tunis, //PSTR("CET-1") + TZ_Africa_Windhoek, //PSTR("CAT-2") +#endif + +#if USING_AMERICA + TZ_America_Adak, //PSTR("HST10HDT,M3.2.0,M11.1.0") + TZ_America_Anchorage, //PSTR("AKST9AKDT,M3.2.0,M11.1.0") + TZ_America_Anguilla, //PSTR("AST4") + TZ_America_Antigua, //PSTR("AST4") + TZ_America_Araguaina, //PSTR("<-03>3") + TZ_America_Argentina_Buenos_Aires, //PSTR("<-03>3") + TZ_America_Argentina_Catamarca, //PSTR("<-03>3") + TZ_America_Argentina_Cordoba, //PSTR("<-03>3") + TZ_America_Argentina_Jujuy, //PSTR("<-03>3") + TZ_America_Argentina_La_Rioja, //PSTR("<-03>3") + TZ_America_Argentina_Mendoza, //PSTR("<-03>3") + TZ_America_Argentina_Rio_Gallegos, //PSTR("<-03>3") + TZ_America_Argentina_Salta, //PSTR("<-03>3") + TZ_America_Argentina_San_Juan, //PSTR("<-03>3") + TZ_America_Argentina_San_Luis, //PSTR("<-03>3") + TZ_America_Argentina_Tucuman, //PSTR("<-03>3") + TZ_America_Argentina_Ushuaia, //PSTR("<-03>3") + TZ_America_Aruba, //PSTR("AST4") + TZ_America_Asuncion, //PSTR("<-04>4<-03>,M10.1.0/0,M3.4.0/0") + TZ_America_Atikokan, //PSTR("EST5") + TZ_America_Bahia, //PSTR("<-03>3") + TZ_America_Bahia_Banderas, //PSTR("CST6CDT,M4.1.0,M10.5.0") + TZ_America_Barbados, //PSTR("AST4") + TZ_America_Belem, //PSTR("<-03>3") + TZ_America_Belize, //PSTR("CST6") + TZ_America_BlancmSablon, //PSTR("AST4") + TZ_America_Boa_Vista, //PSTR("<-04>4") + TZ_America_Bogota, //PSTR("<-05>5") + TZ_America_Boise, //PSTR("MST7MDT,M3.2.0,M11.1.0") + TZ_America_Cambridge_Bay, //PSTR("MST7MDT,M3.2.0,M11.1.0") + TZ_America_Campo_Grande, //PSTR("<-04>4") + TZ_America_Cancun, //PSTR("EST5") + TZ_America_Caracas, //PSTR("<-04>4") + TZ_America_Cayenne, //PSTR("<-03>3") + TZ_America_Cayman, //PSTR("EST5") + TZ_America_Chicago, //PSTR("CST6CDT,M3.2.0,M11.1.0") + TZ_America_Chihuahua, //PSTR("MST7MDT,M4.1.0,M10.5.0") + TZ_America_Costa_Rica, //PSTR("CST6") + TZ_America_Creston, //PSTR("MST7") + TZ_America_Cuiaba, //PSTR("<-04>4") + TZ_America_Curacao, //PSTR("AST4") + TZ_America_Danmarkshavn, //PSTR("GMT0") + TZ_America_Dawson, //PSTR("MST7") + TZ_America_Dawson_Creek, //PSTR("MST7") + TZ_America_Denver, //PSTR("MST7MDT,M3.2.0,M11.1.0") + TZ_America_Detroit, //PSTR("EST5EDT,M3.2.0,M11.1.0") + TZ_America_Dominica, //PSTR("AST4") + TZ_America_Edmonton, //PSTR("MST7MDT,M3.2.0,M11.1.0") + TZ_America_Eirunepe, //PSTR("<-05>5") + TZ_America_El_Salvador, //PSTR("CST6") + TZ_America_Fortaleza, //PSTR("<-03>3") + TZ_America_Fort_Nelson, //PSTR("MST7") + TZ_America_Glace_Bay, //PSTR("AST4ADT,M3.2.0,M11.1.0") + TZ_America_Godthab, //PSTR("<-03>3<-02>,M3.5.0/-2,M10.5.0/-1") + TZ_America_Goose_Bay, //PSTR("AST4ADT,M3.2.0,M11.1.0") + TZ_America_Grand_Turk, //PSTR("EST5EDT,M3.2.0,M11.1.0") + TZ_America_Grenada, //PSTR("AST4") + TZ_America_Guadeloupe, //PSTR("AST4") + TZ_America_Guatemala, //PSTR("CST6") + TZ_America_Guayaquil, //PSTR("<-05>5") + TZ_America_Guyana, //PSTR("<-04>4") + TZ_America_Halifax, //PSTR("AST4ADT,M3.2.0,M11.1.0") + TZ_America_Havana, //PSTR("CST5CDT,M3.2.0/0,M11.1.0/1") + TZ_America_Hermosillo, //PSTR("MST7") + TZ_America_Indiana_Indianapolis, //PSTR("EST5EDT,M3.2.0,M11.1.0") + TZ_America_Indiana_Knox, //PSTR("CST6CDT,M3.2.0,M11.1.0") + TZ_America_Indiana_Marengo, //PSTR("EST5EDT,M3.2.0,M11.1.0") + TZ_America_Indiana_Petersburg, //PSTR("EST5EDT,M3.2.0,M11.1.0") + TZ_America_Indiana_Tell_City, //PSTR("CST6CDT,M3.2.0,M11.1.0") + TZ_America_Indiana_Vevay, //PSTR("EST5EDT,M3.2.0,M11.1.0") + TZ_America_Indiana_Vincennes, //PSTR("EST5EDT,M3.2.0,M11.1.0") + TZ_America_Indiana_Winamac, //PSTR("EST5EDT,M3.2.0,M11.1.0") + TZ_America_Inuvik, //PSTR("MST7MDT,M3.2.0,M11.1.0") + TZ_America_Iqaluit, //PSTR("EST5EDT,M3.2.0,M11.1.0") + TZ_America_Jamaica, //PSTR("EST5") + TZ_America_Juneau, //PSTR("AKST9AKDT,M3.2.0,M11.1.0") + TZ_America_Kentucky_Louisville, //PSTR("EST5EDT,M3.2.0,M11.1.0") + TZ_America_Kentucky_Monticello, //PSTR("EST5EDT,M3.2.0,M11.1.0") + TZ_America_Kralendijk, //PSTR("AST4") + TZ_America_La_Paz, //PSTR("<-04>4") + TZ_America_Lima, //PSTR("<-05>5") + TZ_America_Los_Angeles, //PSTR("PST8PDT,M3.2.0,M11.1.0") + TZ_America_Lower_Princes, //PSTR("AST4") + TZ_America_Maceio, //PSTR("<-03>3") + TZ_America_Managua, //PSTR("CST6") + TZ_America_Manaus, //PSTR("<-04>4") + TZ_America_Marigot, //PSTR("AST4") + TZ_America_Martinique, //PSTR("AST4") + TZ_America_Matamoros, //PSTR("CST6CDT,M3.2.0,M11.1.0") + TZ_America_Mazatlan, //PSTR("MST7MDT,M4.1.0,M10.5.0") + TZ_America_Menominee, //PSTR("CST6CDT,M3.2.0,M11.1.0") + TZ_America_Merida, //PSTR("CST6CDT,M4.1.0,M10.5.0") + TZ_America_Metlakatla, //PSTR("AKST9AKDT,M3.2.0,M11.1.0") + TZ_America_Mexico_City, //PSTR("CST6CDT,M4.1.0,M10.5.0") + TZ_America_Miquelon, //PSTR("<-03>3<-02>,M3.2.0,M11.1.0") + TZ_America_Moncton, //PSTR("AST4ADT,M3.2.0,M11.1.0") + TZ_America_Monterrey, //PSTR("CST6CDT,M4.1.0,M10.5.0") + TZ_America_Montevideo, //PSTR("<-03>3") + TZ_America_Montreal, //PSTR("EST5EDT,M3.2.0,M11.1.0") + TZ_America_Montserrat, //PSTR("AST4") + TZ_America_Nassau, //PSTR("EST5EDT,M3.2.0,M11.1.0") + TZ_America_New_York, //PSTR("EST5EDT,M3.2.0,M11.1.0") + TZ_America_Nipigon, //PSTR("EST5EDT,M3.2.0,M11.1.0") + TZ_America_Nome, //PSTR("AKST9AKDT,M3.2.0,M11.1.0") + TZ_America_Noronha, //PSTR("<-02>2") + TZ_America_North_Dakota_Beulah, //PSTR("CST6CDT,M3.2.0,M11.1.0") + TZ_America_North_Dakota_Center, //PSTR("CST6CDT,M3.2.0,M11.1.0") + TZ_America_North_Dakota_New_Salem, //PSTR("CST6CDT,M3.2.0,M11.1.0") + TZ_America_Ojinaga, //PSTR("MST7MDT,M3.2.0,M11.1.0") + TZ_America_Panama, //PSTR("EST5") + TZ_America_Pangnirtung, //PSTR("EST5EDT,M3.2.0,M11.1.0") + TZ_America_Paramaribo, //PSTR("<-03>3") + TZ_America_Phoenix, //PSTR("MST7") + TZ_America_PortmaumPrince, //PSTR("EST5EDT,M3.2.0,M11.1.0") + TZ_America_Port_of_Spain, //PSTR("AST4") + TZ_America_Porto_Velho, //PSTR("<-04>4") + TZ_America_Puerto_Rico, //PSTR("AST4") + TZ_America_Punta_Arenas, //PSTR("<-03>3") + TZ_America_Rainy_River, //PSTR("CST6CDT,M3.2.0,M11.1.0") + TZ_America_Rankin_Inlet, //PSTR("CST6CDT,M3.2.0,M11.1.0") + TZ_America_Recife, //PSTR("<-03>3") + TZ_America_Regina, //PSTR("CST6") + TZ_America_Resolute, //PSTR("CST6CDT,M3.2.0,M11.1.0") + TZ_America_Rio_Branco, //PSTR("<-05>5") + TZ_America_Santarem, //PSTR("<-03>3") + TZ_America_Santiago, //PSTR("<-04>4<-03>,M9.1.6/24,M4.1.6/24") + TZ_America_Santo_Domingo, //PSTR("AST4") + TZ_America_Sao_Paulo, //PSTR("<-03>3") + TZ_America_Scoresbysund, //PSTR("<-01>1<+00>,M3.5.0/0,M10.5.0/1") + TZ_America_Sitka, //PSTR("AKST9AKDT,M3.2.0,M11.1.0") + TZ_America_St_Barthelemy, //PSTR("AST4") + TZ_America_St_Johns, //PSTR("NST3:30NDT,M3.2.0,M11.1.0") + TZ_America_St_Kitts, //PSTR("AST4") + TZ_America_St_Lucia, //PSTR("AST4") + TZ_America_St_Thomas, //PSTR("AST4") + TZ_America_St_Vincent, //PSTR("AST4") + TZ_America_Swift_Current, //PSTR("CST6") + TZ_America_Tegucigalpa, //PSTR("CST6") + TZ_America_Thule, //PSTR("AST4ADT,M3.2.0,M11.1.0") + TZ_America_Thunder_Bay, //PSTR("EST5EDT,M3.2.0,M11.1.0") + TZ_America_Tijuana, //PSTR("PST8PDT,M3.2.0,M11.1.0") + TZ_America_Toronto, //PSTR("EST5EDT,M3.2.0,M11.1.0") + TZ_America_Tortola, //PSTR("AST4") + TZ_America_Vancouver, //PSTR("PST8PDT,M3.2.0,M11.1.0") + TZ_America_Whitehorse, //PSTR("MST7") + TZ_America_Winnipeg, //PSTR("CST6CDT,M3.2.0,M11.1.0") + TZ_America_Yakutat, //PSTR("AKST9AKDT,M3.2.0,M11.1.0") + TZ_America_Yellowknife, //PSTR("MST7MDT,M3.2.0,M11.1.0") +#endif + +#if USING_ANTARCTICA + TZ_Antarctica_Casey, //PSTR("<+11>-11") + TZ_Antarctica_Davis, //PSTR("<+07>-7") + TZ_Antarctica_DumontDUrville, //PSTR("<+10>-10") + TZ_Antarctica_Macquarie, //PSTR("AEST-10AEDT,M10.1.0,M4.1.0/3") + TZ_Antarctica_Mawson, //PSTR("<+05>-5") + TZ_Antarctica_McMurdo, //PSTR("NZST-12NZDT,M9.5.0,M4.1.0/3") + TZ_Antarctica_Palmer, //PSTR("<-03>3") + TZ_Antarctica_Rothera, //PSTR("<-03>3") + TZ_Antarctica_Syowa, //PSTR("<+03>-3") + TZ_Antarctica_Troll, //PSTR("<+00>0<+02>-2,M3.5.0/1,M10.5.0/3") + TZ_Antarctica_Vostok, //PSTR("<+06>-6") + TZ_Arctic_Longyearbyen, //PSTR("CET-1CEST,M3.5.0,M10.5.0/3") +#endif + + +#if USING_ASIA + TZ_Asia_Aden, //PSTR("<+03>-3") + TZ_Asia_Almaty, //PSTR("<+06>-6") + TZ_Asia_Amman, //PSTR("EET-2EEST,M3.5.4/24,M10.5.5/1") + TZ_Asia_Anadyr, //PSTR("<+12>-12") + TZ_Asia_Aqtau, //PSTR("<+05>-5") + TZ_Asia_Aqtobe, //PSTR("<+05>-5") + TZ_Asia_Ashgabat, //PSTR("<+05>-5") + TZ_Asia_Atyrau, //PSTR("<+05>-5") + TZ_Asia_Baghdad, //PSTR("<+03>-3") + TZ_Asia_Bahrain, //PSTR("<+03>-3") + TZ_Asia_Baku, //PSTR("<+04>-4") + TZ_Asia_Bangkok, //PSTR("<+07>-7") + TZ_Asia_Barnaul, //PSTR("<+07>-7") + TZ_Asia_Beirut, //PSTR("EET-2EEST,M3.5.0/0,M10.5.0/0") + TZ_Asia_Bishkek, //PSTR("<+06>-6") + TZ_Asia_Brunei, //PSTR("<+08>-8") + TZ_Asia_Chita, //PSTR("<+09>-9") + TZ_Asia_Choibalsan, //PSTR("<+08>-8") + TZ_Asia_Colombo, //PSTR("<+0530>-5:30") + TZ_Asia_Damascus, //PSTR("EET-2EEST,M3.5.5/0,M10.5.5/0") + TZ_Asia_Dhaka, //PSTR("<+06>-6") + TZ_Asia_Dili, //PSTR("<+09>-9") + TZ_Asia_Dubai, //PSTR("<+04>-4") + TZ_Asia_Dushanbe, //PSTR("<+05>-5") + TZ_Asia_Famagusta, //PSTR("EET-2EEST,M3.5.0/3,M10.5.0/4") + TZ_Asia_Gaza, //PSTR("EET-2EEST,M3.4.4/48,M10.4.4/49") + TZ_Asia_Hebron, //PSTR("EET-2EEST,M3.4.4/48,M10.4.4/49") + TZ_Asia_Ho_Chi_Minh, //PSTR("<+07>-7") + TZ_Asia_Hong_Kong, //PSTR("HKT-8") + TZ_Asia_Hovd, //PSTR("<+07>-7") + TZ_Asia_Irkutsk, //PSTR("<+08>-8") + TZ_Asia_Jakarta, //PSTR("WIB-7") + TZ_Asia_Jayapura, //PSTR("WIT-9") + TZ_Asia_Jerusalem, //PSTR("IST-2IDT,M3.4.4/26,M10.5.0") + TZ_Asia_Kabul, //PSTR("<+0430>-4:30") + TZ_Asia_Kamchatka, //PSTR("<+12>-12") + TZ_Asia_Karachi, //PSTR("PKT-5") + TZ_Asia_Kathmandu, //PSTR("<+0545>-5:45") + TZ_Asia_Khandyga, //PSTR("<+09>-9") + TZ_Asia_Kolkata, //PSTR("IST-5:30") + TZ_Asia_Krasnoyarsk, //PSTR("<+07>-7") + TZ_Asia_Kuala_Lumpur, //PSTR("<+08>-8") + TZ_Asia_Kuching, //PSTR("<+08>-8") + TZ_Asia_Kuwait, //PSTR("<+03>-3") + TZ_Asia_Macau, //PSTR("CST-8") + TZ_Asia_Magadan, //PSTR("<+11>-11") + TZ_Asia_Makassar, //PSTR("WITA-8") + TZ_Asia_Manila, //PSTR("PST-8") + TZ_Asia_Muscat, //PSTR("<+04>-4") + TZ_Asia_Nicosia, //PSTR("EET-2EEST,M3.5.0/3,M10.5.0/4") + TZ_Asia_Novokuznetsk, //PSTR("<+07>-7") + TZ_Asia_Novosibirsk, //PSTR("<+07>-7") + TZ_Asia_Omsk, //PSTR("<+06>-6") + TZ_Asia_Oral, //PSTR("<+05>-5") + TZ_Asia_Phnom_Penh, //PSTR("<+07>-7") + TZ_Asia_Pontianak, //PSTR("WIB-7") + TZ_Asia_Pyongyang, //PSTR("KST-9") + TZ_Asia_Qatar, //PSTR("<+03>-3") + TZ_Asia_Qyzylorda, //PSTR("<+05>-5") + TZ_Asia_Riyadh, //PSTR("<+03>-3") + TZ_Asia_Sakhalin, //PSTR("<+11>-11") + TZ_Asia_Samarkand, //PSTR("<+05>-5") + TZ_Asia_Seoul, //PSTR("KST-9") + TZ_Asia_Shanghai, //PSTR("CST-8") + TZ_Asia_Singapore, //PSTR("<+08>-8") + TZ_Asia_Srednekolymsk, //PSTR("<+11>-11") + TZ_Asia_Taipei, //PSTR("CST-8") + TZ_Asia_Tashkent, //PSTR("<+05>-5") + TZ_Asia_Tbilisi, //PSTR("<+04>-4") + TZ_Asia_Tehran, //PSTR("<+0330>-3:30<+0430>,J79/24,J263/24") + TZ_Asia_Thimphu, //PSTR("<+06>-6") + TZ_Asia_Tokyo, //PSTR("JST-9") + TZ_Asia_Tomsk, //PSTR("<+07>-7") + TZ_Asia_Ulaanbaatar, //PSTR("<+08>-8") + TZ_Asia_Urumqi, //PSTR("<+06>-6") + TZ_Asia_UstmNera, //PSTR("<+10>-10") + TZ_Asia_Vientiane, //PSTR("<+07>-7") + TZ_Asia_Vladivostok, //PSTR("<+10>-10") + TZ_Asia_Yakutsk, //PSTR("<+09>-9") + TZ_Asia_Yangon, //PSTR("<+0630>-6:30") + TZ_Asia_Yekaterinburg, //PSTR("<+05>-5") + TZ_Asia_Yerevan, //PSTR("<+04>-4") +#endif + +#if USING_ATLANTIC + TZ_Atlantic_Azores, //PSTR("<-01>1<+00>,M3.5.0/0,M10.5.0/1") + TZ_Atlantic_Bermuda, //PSTR("AST4ADT,M3.2.0,M11.1.0") + TZ_Atlantic_Canary, //PSTR("WET0WEST,M3.5.0/1,M10.5.0") + TZ_Atlantic_Cape_Verde, //PSTR("<-01>1") + TZ_Atlantic_Faroe, //PSTR("WET0WEST,M3.5.0/1,M10.5.0") + TZ_Atlantic_Madeira, //PSTR("WET0WEST,M3.5.0/1,M10.5.0") + TZ_Atlantic_Reykjavik, //PSTR("GMT0") + TZ_Atlantic_South_Georgia, //PSTR("<-02>2") + TZ_Atlantic_Stanley, //PSTR("<-03>3") + TZ_Atlantic_St_Helena, //PSTR("GMT0") +#endif + +#if USING_AUSTRALIA + TZ_Australia_Adelaide, //PSTR("ACST-9:30ACDT,M10.1.0,M4.1.0/3") + TZ_Australia_Brisbane, //PSTR("AEST-10") + TZ_Australia_Broken_Hill, //PSTR("ACST-9:30ACDT,M10.1.0,M4.1.0/3") + TZ_Australia_Currie, //PSTR("AEST-10AEDT,M10.1.0,M4.1.0/3") + TZ_Australia_Darwin, //PSTR("ACST-9:30") + TZ_Australia_Eucla, //PSTR("<+0845>-8:45") + TZ_Australia_Hobart, //PSTR("AEST-10AEDT,M10.1.0,M4.1.0/3") + TZ_Australia_Lindeman, //PSTR("AEST-10") + TZ_Australia_Lord_Howe, //PSTR("<+1030>-10:30<+11>-11,M10.1.0,M4.1.0") + TZ_Australia_Melbourne, //PSTR("AEST-10AEDT,M10.1.0,M4.1.0/3") + TZ_Australia_Perth, //PSTR("AWST-8") + TZ_Australia_Sydney, //PSTR("AEST-10AEDT,M10.1.0,M4.1.0/3") +#endif + +#if USING_EUROPE + TZ_Europe_Amsterdam, //PSTR("CET-1CEST,M3.5.0,M10.5.0/3") + TZ_Europe_Andorra, //PSTR("CET-1CEST,M3.5.0,M10.5.0/3") + TZ_Europe_Astrakhan, //PSTR("<+04>-4") + TZ_Europe_Athens, //PSTR("EET-2EEST,M3.5.0/3,M10.5.0/4") + TZ_Europe_Belgrade, //PSTR("CET-1CEST,M3.5.0,M10.5.0/3") + TZ_Europe_Berlin, //PSTR("CET-1CEST,M3.5.0,M10.5.0/3") + TZ_Europe_Bratislava, //PSTR("CET-1CEST,M3.5.0,M10.5.0/3") + TZ_Europe_Brussels, //PSTR("CET-1CEST,M3.5.0,M10.5.0/3") + TZ_Europe_Bucharest, //PSTR("EET-2EEST,M3.5.0/3,M10.5.0/4") + TZ_Europe_Budapest, //PSTR("CET-1CEST,M3.5.0,M10.5.0/3") + TZ_Europe_Busingen, //PSTR("CET-1CEST,M3.5.0,M10.5.0/3") + TZ_Europe_Chisinau, //PSTR("EET-2EEST,M3.5.0,M10.5.0/3") + TZ_Europe_Copenhagen, //PSTR("CET-1CEST,M3.5.0,M10.5.0/3") + TZ_Europe_Dublin, //PSTR("IST-1GMT0,M10.5.0,M3.5.0/1") + TZ_Europe_Gibraltar, //PSTR("CET-1CEST,M3.5.0,M10.5.0/3") + TZ_Europe_Guernsey, //PSTR("GMT0BST,M3.5.0/1,M10.5.0") + TZ_Europe_Helsinki, //PSTR("EET-2EEST,M3.5.0/3,M10.5.0/4") + TZ_Europe_Isle_of_Man, //PSTR("GMT0BST,M3.5.0/1,M10.5.0") + TZ_Europe_Istanbul, //PSTR("<+03>-3") + TZ_Europe_Jersey, //PSTR("GMT0BST,M3.5.0/1,M10.5.0") + TZ_Europe_Kaliningrad, //PSTR("EET-2") + TZ_Europe_Kiev, //PSTR("EET-2EEST,M3.5.0/3,M10.5.0/4") + TZ_Europe_Kirov, //PSTR("<+03>-3") + TZ_Europe_Lisbon, //PSTR("WET0WEST,M3.5.0/1,M10.5.0") + TZ_Europe_Ljubljana, //PSTR("CET-1CEST,M3.5.0,M10.5.0/3") + TZ_Europe_London, //PSTR("GMT0BST,M3.5.0/1,M10.5.0") + TZ_Europe_Luxembourg, //PSTR("CET-1CEST,M3.5.0,M10.5.0/3") + TZ_Europe_Madrid, //PSTR("CET-1CEST,M3.5.0,M10.5.0/3") + TZ_Europe_Malta, //PSTR("CET-1CEST,M3.5.0,M10.5.0/3") + TZ_Europe_Mariehamn, //PSTR("EET-2EEST,M3.5.0/3,M10.5.0/4") + TZ_Europe_Minsk, //PSTR("<+03>-3") + TZ_Europe_Monaco, //PSTR("CET-1CEST,M3.5.0,M10.5.0/3") + TZ_Europe_Moscow, //PSTR("MSK-3") + TZ_Europe_Oslo, //PSTR("CET-1CEST,M3.5.0,M10.5.0/3") + TZ_Europe_Paris, //PSTR("CET-1CEST,M3.5.0,M10.5.0/3") + TZ_Europe_Podgorica, //PSTR("CET-1CEST,M3.5.0,M10.5.0/3") + TZ_Europe_Prague, //PSTR("CET-1CEST,M3.5.0,M10.5.0/3") + TZ_Europe_Riga, //PSTR("EET-2EEST,M3.5.0/3,M10.5.0/4") + TZ_Europe_Rome, //PSTR("CET-1CEST,M3.5.0,M10.5.0/3") + TZ_Europe_Samara, //PSTR("<+04>-4") + TZ_Europe_San_Marino, //PSTR("CET-1CEST,M3.5.0,M10.5.0/3") + TZ_Europe_Sarajevo, //PSTR("CET-1CEST,M3.5.0,M10.5.0/3") + TZ_Europe_Saratov, //PSTR("<+04>-4") + TZ_Europe_Simferopol, //PSTR("MSK-3") + TZ_Europe_Skopje, //PSTR("CET-1CEST,M3.5.0,M10.5.0/3") + TZ_Europe_Sofia, //PSTR("EET-2EEST,M3.5.0/3,M10.5.0/4") + TZ_Europe_Stockholm, //PSTR("CET-1CEST,M3.5.0,M10.5.0/3") + TZ_Europe_Tallinn, //PSTR("EET-2EEST,M3.5.0/3,M10.5.0/4") + TZ_Europe_Tirane, //PSTR("CET-1CEST,M3.5.0,M10.5.0/3") + TZ_Europe_Ulyanovsk, //PSTR("<+04>-4") + TZ_Europe_Uzhgorod, //PSTR("EET-2EEST,M3.5.0/3,M10.5.0/4") + TZ_Europe_Vaduz, //PSTR("CET-1CEST,M3.5.0,M10.5.0/3") + TZ_Europe_Vatican, //PSTR("CET-1CEST,M3.5.0,M10.5.0/3") + TZ_Europe_Vienna, //PSTR("CET-1CEST,M3.5.0,M10.5.0/3") + TZ_Europe_Vilnius, //PSTR("EET-2EEST,M3.5.0/3,M10.5.0/4") + TZ_Europe_Volgograd, //PSTR("<+04>-4") + TZ_Europe_Warsaw, //PSTR("CET-1CEST,M3.5.0,M10.5.0/3") + TZ_Europe_Zagreb, //PSTR("CET-1CEST,M3.5.0,M10.5.0/3") + TZ_Europe_Zaporozhye, //PSTR("EET-2EEST,M3.5.0/3,M10.5.0/4") + TZ_Europe_Zurich, //PSTR("CET-1CEST,M3.5.0,M10.5.0/3") +#endif + +#if USING_INDIAN + TZ_Indian_Antananarivo, //PSTR("EAT-3") + TZ_Indian_Chagos, //PSTR("<+06>-6") + TZ_Indian_Christmas, //PSTR("<+07>-7") + TZ_Indian_Cocos, //PSTR("<+0630>-6:30") + TZ_Indian_Comoro, //PSTR("EAT-3") + TZ_Indian_Kerguelen, //PSTR("<+05>-5") + TZ_Indian_Mahe, //PSTR("<+04>-4") + TZ_Indian_Maldives, //PSTR("<+05>-5") + TZ_Indian_Mauritius, //PSTR("<+04>-4") + TZ_Indian_Mayotte, //PSTR("EAT-3") + TZ_Indian_Reunion, //PSTR("<+04>-4") +#endif + +#if USING_PACIFIC + TZ_Pacific_Apia, //PSTR("<+13>-13<+14>,M9.5.0/3,M4.1.0/4") + TZ_Pacific_Auckland, //PSTR("NZST-12NZDT,M9.5.0,M4.1.0/3") + TZ_Pacific_Bougainville, //PSTR("<+11>-11") + TZ_Pacific_Chatham, //PSTR("<+1245>-12:45<+1345>,M9.5.0/2:45,M4.1.0/3:45") + TZ_Pacific_Chuuk, //PSTR("<+10>-10") + TZ_Pacific_Easter, //PSTR("<-06>6<-05>,M9.1.6/22,M4.1.6/22") + TZ_Pacific_Efate, //PSTR("<+11>-11") + TZ_Pacific_Enderbury, //PSTR("<+13>-13") + TZ_Pacific_Fakaofo, //PSTR("<+13>-13") + TZ_Pacific_Fiji, //PSTR("<+12>-12<+13>,M11.2.0,M1.2.3/99") + TZ_Pacific_Funafuti, //PSTR("<+12>-12") + TZ_Pacific_Galapagos, //PSTR("<-06>6") + TZ_Pacific_Gambier, //PSTR("<-09>9") + TZ_Pacific_Guadalcanal, //PSTR("<+11>-11") + TZ_Pacific_Guam, //PSTR("ChST-10") + TZ_Pacific_Honolulu, //PSTR("HST10") + TZ_Pacific_Kiritimati, //PSTR("<+14>-14") + TZ_Pacific_Kosrae, //PSTR("<+11>-11") + TZ_Pacific_Kwajalein, //PSTR("<+12>-12") + TZ_Pacific_Majuro, //PSTR("<+12>-12") + TZ_Pacific_Marquesas, //PSTR("<-0930>9:30") + TZ_Pacific_Midway, //PSTR("SST11") + TZ_Pacific_Nauru, //PSTR("<+12>-12") + TZ_Pacific_Niue, //PSTR("<-11>11") + TZ_Pacific_Norfolk, //PSTR("<+11>-11<+12>,M10.1.0,M4.1.0/3") + TZ_Pacific_Noumea, //PSTR("<+11>-11") + TZ_Pacific_Pago_Pago, //PSTR("SST11") + TZ_Pacific_Palau, //PSTR("<+09>-9") + TZ_Pacific_Pitcairn, //PSTR("<-08>8") + TZ_Pacific_Pohnpei, //PSTR("<+11>-11") + TZ_Pacific_Port_Moresby, //PSTR("<+10>-10") + TZ_Pacific_Rarotonga, //PSTR("<-10>10") + TZ_Pacific_Saipan, //PSTR("ChST-10") + TZ_Pacific_Tahiti, //PSTR("<-10>10") + TZ_Pacific_Tarawa, //PSTR("<+12>-12") + TZ_Pacific_Tongatapu, //PSTR("<+13>-13") + TZ_Pacific_Wake, //PSTR("<+12>-12") + TZ_Pacific_Wallis, //PSTR("<+12>-12") +#endif + +#if USING_ETC_GMT + TZ_Etc_GMT, //PSTR("GMT0") + TZ_Etc_GMTm0, //PSTR("GMT0") + TZ_Etc_GMTm1, //PSTR("<+01>-1") + TZ_Etc_GMTm2, //PSTR("<+02>-2") + TZ_Etc_GMTm3, //PSTR("<+03>-3") + TZ_Etc_GMTm4, //PSTR("<+04>-4") + TZ_Etc_GMTm5, //PSTR("<+05>-5") + TZ_Etc_GMTm6, //PSTR("<+06>-6") + TZ_Etc_GMTm7, //PSTR("<+07>-7") + TZ_Etc_GMTm8, //PSTR("<+08>-8") + TZ_Etc_GMTm9, //PSTR("<+09>-9") + TZ_Etc_GMTm10, //PSTR("<+10>-10") + TZ_Etc_GMTm11, //PSTR("<+11>-11") + TZ_Etc_GMTm12, //PSTR("<+12>-12") + TZ_Etc_GMTm13, //PSTR("<+13>-13") + TZ_Etc_GMTm14, //PSTR("<+14>-14") + TZ_Etc_GMT0, //PSTR("GMT0") + TZ_Etc_GMTp0, //PSTR("GMT0") + TZ_Etc_GMTp1, //PSTR("<-01>1") + TZ_Etc_GMTp2, //PSTR("<-02>2") + TZ_Etc_GMTp3, //PSTR("<-03>3") + TZ_Etc_GMTp4, //PSTR("<-04>4") + TZ_Etc_GMTp5, //PSTR("<-05>5") + TZ_Etc_GMTp6, //PSTR("<-06>6") + TZ_Etc_GMTp7, //PSTR("<-07>7") + TZ_Etc_GMTp8, //PSTR("<-08>8") + TZ_Etc_GMTp9, //PSTR("<-09>9") + TZ_Etc_GMTp10, //PSTR("<-10>10") + TZ_Etc_GMTp11, //PSTR("<-11>11") + TZ_Etc_GMTp12, //PSTR("<-12>12") + TZ_Etc_UCT, //PSTR("UTC0") + TZ_Etc_UTC, //PSTR("UTC0") + TZ_Etc_Greenwich, //PSTR("GMT0") + TZ_Etc_Universal, //PSTR("UTC0") + TZ_Etc_Zulu, //PSTR("UTC0") +#endif +}; + +#endif // TZDB_H diff --git a/travis/common.sh b/travis/common.sh new file mode 100644 index 0000000..d115085 --- /dev/null +++ b/travis/common.sh @@ -0,0 +1,51 @@ +#!/bin/bash + +function build_examples() +{ + # track the exit code for this platform + local exit_code=0 + # loop through results and add them to the array + examples=($(find $PWD/examples/ -name "*.pde" -o -name "*.ino")) + + # get the last example in the array + local last="${examples[@]:(-1)}" + + # loop through example sketches + for example in "${examples[@]}"; do + + # store the full path to the example's sketch directory + local example_dir=$(dirname $example) + + # store the filename for the example without the path + local example_file=$(basename $example) + + echo "$example_file: " + local sketch="$example_dir/$example_file" + echo "$sketch" + #arduino -v --verbose-build --verify $sketch + + # verify the example, and save stdout & stderr to a variable + # we have to avoid reading the exit code of local: + # "when declaring a local variable in a function, the local acts as a command in its own right" + local build_stdout + build_stdout=$(arduino --verify $sketch 2>&1) + + # echo output if the build failed + if [ $? -ne 0 ]; then + # heavy X + echo -e "\xe2\x9c\x96" + echo -e "----------------------------- DEBUG OUTPUT -----------------------------\n" + echo "$build_stdout" + echo -e "\n------------------------------------------------------------------------\n" + + # mark as fail + exit_code=1 + + else + # heavy checkmark + echo -e "\xe2\x9c\x93" + fi + done + + return $exit_code +} diff --git a/utils/astyle_library.conf b/utils/astyle_library.conf new file mode 100644 index 0000000..8a73bc2 --- /dev/null +++ b/utils/astyle_library.conf @@ -0,0 +1,70 @@ +# Code formatting rules for Arduino libraries, modified from for KH libraries: +# +# https://github.com/arduino/Arduino/blob/master/build/shared/examples_formatter.conf +# + +# astyle --style=allman -s2 -t2 -C -S -xW -Y -M120 -f -p -xg -H -xb -c --xC120 -xL *.h *.cpp *.ino + +--mode=c +--lineend=linux +--style=allman + +# -r or -R +#--recursive + +# -c => Converts tabs into spaces +convert-tabs + +# -s2 => 2 spaces indentation +--indent=spaces=2 + +# -t2 => tab =2 spaces +#--indent=tab=2 + +# -C +--indent-classes + +# -S +--indent-switches + +# -xW +--indent-preproc-block + +# -Y => indent classes, switches (and cases), comments starting at column 1 +--indent-col1-comments + +# -M120 => maximum of 120 spaces to indent a continuation line +--max-continuation-indent=120 + +# -xC120 => max‑code‑length will break a line if the code exceeds # characters +--max-code-length=120 + +# -f => +--break-blocks + +# -p => put a space around operators +--pad-oper + +# -xg => Insert space padding after commas +--pad-comma + +# -H => put a space after if/for/while +pad-header + +# -xb => Break one line headers (e.g. if/for/while) +--break-one-line-headers + +# -c => Converts tabs into spaces +#--convert-tabs + +# if you like one-liners, keep them +#keep-one-line-statements + +# -xV +--attach-closing-while + +#unpad-paren + +# -xp +remove-comment-prefix + diff --git a/utils/restyle.sh b/utils/restyle.sh new file mode 100644 index 0000000..bcd846f --- /dev/null +++ b/utils/restyle.sh @@ -0,0 +1,6 @@ +#!/bin/bash + +for dir in . ; do + find $dir -type f \( -name "*.c" -o -name "*.h" -o -name "*.cpp" -o -name "*.ino" \) -exec astyle --suffix=none --options=./utils/astyle_library.conf \{\} \; +done +