From 42a01dfa832cd7bc406b3bb3d571e0b04cc98bbf Mon Sep 17 00:00:00 2001 From: Khoi Hoang <57012152+khoih-prog@users.noreply.github.com> Date: Sun, 11 Dec 2022 19:25:28 -0500 Subject: [PATCH] v1.0.0 for `ESP8266 + LwIP W5500` #### Releases v1.0.0 1. Initial coding to port `synchronous` [ESP_WiFiManager](https://github.com/khoih-prog/ESP_WiFiManager) to ESP8266 boards using `LwIP W5500 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 -> 17154 bytes Images/Info.png | Bin 0 -> 62359 bytes Images/Main.png | Bin 0 -> 13218 bytes Images/Saved.png | Bin 0 -> 2478 bytes Images/W5500.png | Bin 0 -> 213873 bytes Images/W5500_small.png | Bin 0 -> 98333 bytes changelog.md | 33 + .../ConfigOnDoubleReset.ino | 665 +++++++ .../ConfigOnDoubleReset_TZ.ino | 676 ++++++++ examples/ConfigOnSwitch/ConfigOnSwitch.ino | 786 +++++++++ .../ConfigOnSwitchFS/ConfigOnSwitchFS.ino | 995 +++++++++++ .../ConfigPortalParamsOnSwitch.ino | 893 ++++++++++ examples/ESP_FSWebServer/ESP_FSWebServer.ino | 1005 +++++++++++ examples/ESP_FSWebServer/README.md | 72 + .../ESP_FSWebServer/data/CanadaFlag_1.png | Bin 0 -> 41214 bytes .../ESP_FSWebServer/data/CanadaFlag_2.png | Bin 0 -> 8311 bytes .../ESP_FSWebServer/data/CanadaFlag_3.jpg | Bin 0 -> 11156 bytes examples/ESP_FSWebServer/data/edit.htm.gz | Bin 0 -> 4116 bytes examples/ESP_FSWebServer/data/favicon.ico | Bin 0 -> 1150 bytes examples/ESP_FSWebServer/data/graphs.js.gz | Bin 0 -> 1971 bytes examples/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 .../ESP_FSWebServer_DRD.ino | 1069 ++++++++++++ examples/ESP_FSWebServer_DRD/README.md | 72 + .../ESP_FSWebServer_DRD/data/CanadaFlag_1.png | Bin 0 -> 41214 bytes .../ESP_FSWebServer_DRD/data/CanadaFlag_2.png | Bin 0 -> 8311 bytes .../ESP_FSWebServer_DRD/data/CanadaFlag_3.jpg | Bin 0 -> 11156 bytes examples/ESP_FSWebServer_DRD/data/edit.htm.gz | Bin 0 -> 4116 bytes examples/ESP_FSWebServer_DRD/data/favicon.ico | Bin 0 -> 1150 bytes .../ESP_FSWebServer_DRD/data/graphs.js.gz | Bin 0 -> 1971 bytes examples/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 | 38 + library.properties | 12 + platformio/platformio.ini | 136 ++ src/ESP8266_W5500_Manager.h | 32 + src/ESP8266_W5500_Manager.hpp | 719 ++++++++ src/ESP8266_W5500_Manager_Debug.h | 91 + src/ESP8266_W5500_Manager_Impl.h | 1180 +++++++++++++ src/utils/TZ.h | 1526 +++++++++++++++++ travis/common.sh | 51 + utils/astyle_library.conf | 70 + utils/restyle.sh | 6 + 51 files changed, 10499 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/W5500.png create mode 100644 Images/W5500_small.png create mode 100644 changelog.md create mode 100644 examples/ConfigOnDoubleReset/ConfigOnDoubleReset.ino create mode 100644 examples/ConfigOnDoubleReset_TZ/ConfigOnDoubleReset_TZ.ino create mode 100644 examples/ConfigOnSwitch/ConfigOnSwitch.ino create mode 100644 examples/ConfigOnSwitchFS/ConfigOnSwitchFS.ino create mode 100644 examples/ConfigPortalParamsOnSwitch/ConfigPortalParamsOnSwitch.ino create mode 100644 examples/ESP_FSWebServer/ESP_FSWebServer.ino create mode 100644 examples/ESP_FSWebServer/README.md create mode 100644 examples/ESP_FSWebServer/data/CanadaFlag_1.png create mode 100644 examples/ESP_FSWebServer/data/CanadaFlag_2.png create mode 100644 examples/ESP_FSWebServer/data/CanadaFlag_3.jpg create mode 100644 examples/ESP_FSWebServer/data/edit.htm.gz create mode 100644 examples/ESP_FSWebServer/data/favicon.ico create mode 100644 examples/ESP_FSWebServer/data/graphs.js.gz create mode 100644 examples/ESP_FSWebServer/data/index.htm create mode 100644 examples/ESP_FSWebServer/pics/async-esp8266fs.local.png create mode 100644 examples/ESP_FSWebServer/pics/async-esp8266fs.local_edit.png create mode 100644 examples/ESP_FSWebServer_DRD/ESP_FSWebServer_DRD.ino create mode 100644 examples/ESP_FSWebServer_DRD/README.md create mode 100644 examples/ESP_FSWebServer_DRD/data/CanadaFlag_1.png create mode 100644 examples/ESP_FSWebServer_DRD/data/CanadaFlag_2.png create mode 100644 examples/ESP_FSWebServer_DRD/data/CanadaFlag_3.jpg create mode 100644 examples/ESP_FSWebServer_DRD/data/edit.htm.gz create mode 100644 examples/ESP_FSWebServer_DRD/data/favicon.ico create mode 100644 examples/ESP_FSWebServer_DRD/data/graphs.js.gz create mode 100644 examples/ESP_FSWebServer_DRD/data/index.htm create mode 100644 examples/ESP_FSWebServer_DRD/pics/async-esp8266fs.local.png create mode 100644 examples/ESP_FSWebServer_DRD/pics/async-esp8266fs.local_edit.png create mode 100644 examples/ESP_FSWebServer_DRD/pics/esp8266fs.local.png create mode 100644 examples/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/ESP8266_W5500_Manager.h create mode 100644 src/ESP8266_W5500_Manager.hpp create mode 100644 src/ESP8266_W5500_Manager_Debug.h create mode 100644 src/ESP8266_W5500_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..69e4603 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,79 @@ +## Contributing to ESP8266_W5500_Manager + +### Reporting Bugs + +Please report bugs in ESP8266_W5500_Manager if you find them. + +However, before reporting a bug please check through the following: + +* [Existing Open Issues](https://github.com/khoih-prog/ESP8266_W5500_Manager/issues) - someone might have already encountered this. + +If you don't find anything, please [open a new issue](https://github.com/khoih-prog/ESP8266_W5500_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/ESP8266_W5500_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/ESP8266_W5500_Manager_GitHub/ +xy@xy-Inspiron-3593:~/Arduino/xy/ESP8266_W5500_Manager_GitHub$ +``` + +2. Issue astyle command + +``` +xy@xy-Inspiron-3593:~/Arduino/xy/ESP8266_W5500_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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 literal 0 HcmV?d00001 diff --git a/Images/Info.png b/Images/Info.png new file mode 100644 index 0000000000000000000000000000000000000000..22357d1fde62cf0e8947b9cf3816c338a1ea874c GIT binary patch literal 62359 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

_*{S0R+yalUHZ0k^G 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 literal 0 HcmV?d00001 diff --git a/Images/Main.png b/Images/Main.png new file mode 100644 index 0000000000000000000000000000000000000000..6d570d3509eee5e005258bea12d8c076bfbcaf65 GIT binary patch literal 13218 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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/W5500.png b/Images/W5500.png new file mode 100644 index 0000000000000000000000000000000000000000..a271e29d6e535407dcd7a3bb64a92a7b838efc9e GIT binary patch literal 213873 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

SqYFVy+Po20ll+ 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ᥖR_;+g3IZCy1LCxaWUh< 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 literal 0 HcmV?d00001 diff --git a/Images/W5500_small.png b/Images/W5500_small.png new file mode 100644 index 0000000000000000000000000000000000000000..fe47f71abc75c15a267600b13b20c51d799131e5 GIT binary patch literal 98333 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

+ +

+ +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 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 [ESP_FSWebServer data](https://github.com/khoih-prog/ESP8266_W5500_Manager/tree/main/examples/ESP_FSWebServer/data) to a local folder, for example: + +``` +~/Arduino/libraries/ESP8266_W5500_Manager-main/examples/ESP_FSWebServer/data +``` + +### HOWTO Upload files to ESP8266 (LittleFS or SPIFFS) + +Use one of these methods (preferable first) + +1. Go to http://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/ESP8266_W5500_Manager-main/examples/ESP_FSWebServer/data +Ubuntu$ for file in \`\ls -A1\`; do curl -F "file=@$PWD/$file" http://esp8266fs.local/edit; done +``` + +--- + +### Demonstrating pictures + +

+ +

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

+ +

+ + diff --git a/examples/ESP_FSWebServer/data/CanadaFlag_1.png b/examples/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/ESP_FSWebServer/data/CanadaFlag_2.png b/examples/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/ESP_FSWebServer/data/edit.htm.gz b/examples/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/ESP_FSWebServer/data/graphs.js.gz b/examples/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/ESP_FSWebServer/data/index.htm b/examples/ESP_FSWebServer/data/index.htm new file mode 100644 index 0000000..4e1dc7d --- /dev/null +++ b/examples/ESP_FSWebServer/data/index.htm @@ -0,0 +1,97 @@ + + + + + + ESP Monitor + + + + +
+ + + + +
+
+
+
+ + \ No newline at end of file diff --git a/examples/ESP_FSWebServer/pics/async-esp8266fs.local.png b/examples/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/ESP_FSWebServer_DRD/ESP_FSWebServer_DRD.ino b/examples/ESP_FSWebServer_DRD/ESP_FSWebServer_DRD.ino new file mode 100644 index 0000000..f2cfbf7 --- /dev/null +++ b/examples/ESP_FSWebServer_DRD/ESP_FSWebServer_DRD.ino @@ -0,0 +1,1069 @@ +/**************************************************************************************************************************** + ESP_FSWebServer_DRD - Example WebServer with SPIFFS backend for esp8266 + For Ethernet shields using ESP8266_W5500 (ESP8266 + LwIP W5500) + + WebServer_ESP8266_W5500 is a library for the ESP8266 with Ethernet W5500 to run WebServer + + Modified from + 1. Tzapu (https://github.com/tzapu/WiFiManager) + 2. Ken Taylor (https://github.com/kentaylor) + 3. Khoi Hoang (https://github.com/khoih-prog/ESP_WiFiManager) + + Built by Khoi Hoang https://github.com/khoih-prog/ESP8266_W5500_Manager + Licensed under MIT license + *****************************************************************************************************************************/ +/***************************************************************************************************************************** + How To Upload Files: + 1) Go to http://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: + + + How To Use: + 1) access the sample web page at http://esp8266fs.local + 2) edit the page by going to http://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 + W5500) platform! Please check your Tools->Board setting. +#endif + +////////////////////////////////////////////////////////////// + +// Use from 0 to 4. Higher number, more debugging messages and memory usage. +#define _ESP8266_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 + +#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 (_ESP8266_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 (_ESP8266_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/ESP8266_W5500_Manager + +String host = "async-esp8266fs"; + +#define HTTP_PORT 80 + +ESP8266WebServer server(HTTP_PORT); + +//holds the current upload +File fsUploadFile; + +String http_username = "admin"; +String http_password = "admin"; + +String separatorLine = "==============================================================="; + +////////////////////////////////////////////////////////////// + +/****************************************** + // Defined in ESP8266_W5500_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"; + } +} + +////////////////////////////////////////////////////////////// + +String getContentType(String filename) +{ + if (server.hasArg("download")) + { + return "application/octet-stream"; + } + else if (filename.endsWith(".htm")) + { + return "text/html"; + } + else if (filename.endsWith(".html")) + { + return "text/html"; + } + else if (filename.endsWith(".css")) + { + return "text/css"; + } + else if (filename.endsWith(".js")) + { + return "application/javascript"; + } + else if (filename.endsWith(".png")) + { + return "image/png"; + } + else if (filename.endsWith(".gif")) + { + return "image/gif"; + } + else if (filename.endsWith(".jpg")) + { + return "image/jpeg"; + } + else if (filename.endsWith(".ico")) + { + return "image/x-icon"; + } + else if (filename.endsWith(".xml")) + { + return "text/xml"; + } + else if (filename.endsWith(".pdf")) + { + return "application/x-pdf"; + } + else if (filename.endsWith(".zip")) + { + return "application/x-zip"; + } + else if (filename.endsWith(".gz")) + { + return "application/x-gzip"; + } + + return "text/plain"; +} + +////////////////////////////////////////////////////////////// + +bool handleFileRead(String path) +{ + Serial.println("handleFileRead: " + path); + + if (path.endsWith("/")) + { + path += "index.htm"; + } + + String contentType = getContentType(path); + String pathWithGz = path + ".gz"; + + if (filesystem->exists(pathWithGz) || filesystem->exists(path)) + { + if (filesystem->exists(pathWithGz)) + { + path += ".gz"; + } + + File file = filesystem->open(path, "r"); + server.streamFile(file, contentType); + file.close(); + return true; + } + + return false; +} + +////////////////////////////////////////////////////////////// + +void handleFileUpload() +{ + if (server.uri() != "/edit") + { + return; + } + + HTTPUpload& upload = server.upload(); + + if (upload.status == UPLOAD_FILE_START) + { + String filename = upload.filename; + + if (!filename.startsWith("/")) + { + filename = "/" + filename; + } + + Serial.print(F("handleFileUpload Name: ")); + Serial.println(filename); + fsUploadFile = filesystem->open(filename, "w"); + filename.clear(); + } + else if (upload.status == UPLOAD_FILE_WRITE) + { + //Serial.print(F("handleFileUpload Data: ")); Serial.println(upload.currentSize); + + if (fsUploadFile) + { + fsUploadFile.write(upload.buf, upload.currentSize); + } + } + else if (upload.status == UPLOAD_FILE_END) + { + if (fsUploadFile) + { + fsUploadFile.close(); + } + + Serial.print(F("handleFileUpload Size: ")); + Serial.println(upload.totalSize); + } +} + +////////////////////////////////////////////////////////////// + +void handleFileDelete() +{ + if (server.args() == 0) + { + return server.send(500, "text/plain", "BAD ARGS"); + } + + String path = server.arg(0); + Serial.println("handleFileDelete: " + path); + + if (path == "/") + { + return server.send(500, "text/plain", "BAD PATH"); + } + + if (!filesystem->exists(path)) + { + return server.send(404, "text/plain", "FileNotFound"); + } + + filesystem->remove(path); + server.send(200, "text/plain", ""); + path.clear(); +} + +////////////////////////////////////////////////////////////// + +void handleFileCreate() +{ + if (server.args() == 0) + { + return server.send(500, "text/plain", "BAD ARGS"); + } + + String path = server.arg(0); + Serial.println("handleFileCreate: " + path); + + if (path == "/") + { + return server.send(500, "text/plain", "BAD PATH"); + } + + if (filesystem->exists(path)) + { + return server.send(500, "text/plain", "FILE EXISTS"); + } + + File file = filesystem->open(path, "w"); + + if (file) + { + file.close(); + } + else + { + return server.send(500, "text/plain", "CREATE FAILED"); + } + + server.send(200, "text/plain", ""); + path.clear(); +} + +////////////////////////////////////////////////////////////// + +void handleFileList() +{ + if (!server.hasArg("dir")) + { + server.send(500, "text/plain", "BAD ARGS"); + return; + } + + String path = server.arg("dir"); + Serial.println("handleFileList: " + path); + Dir dir = filesystem->openDir(path); + path.clear(); + + String output = "["; + + while (dir.next()) + { + File entry = dir.openFile("r"); + + if (output != "[") + { + output += ','; + } + + bool isDir = false; + output += "{\"type\":\""; + output += (isDir) ? "dir" : "file"; + output += "\",\"name\":\""; + + if (entry.name()[0] == '/') + { + output += &(entry.name()[1]); + } + else + { + output += entry.name(); + } + + output += "\"}"; + entry.close(); + } + + output += "]"; + server.send(200, "text/json", output); +} + +////////////////////////////////////////////////////////////// + +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 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(ESP8266_W5500_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 + //ESP8266_W5500_Manager ESP8266_W5500_manager(&webServer, &dnsServer); + // Use this to personalize DHCP hostname (RFC952 conformed) + ESP8266_W5500_Manager ESP8266_W5500_manager("ESP-FSWebServer_DRD"); + +#if !USE_DHCP_IP + // Set (static IP, Gateway, Subnetmask, DNS1 and DNS2) or (IP, Gateway, Subnetmask) + ESP8266_W5500_manager.setSTAStaticIPConfig(EthSTA_IPconfig); +#endif + +#if USING_CORS_FEATURE + ESP8266_W5500_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. + ESP8266_W5500_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. + //ESP8266_W5500_manager.setConfigPortalTimeout(600); + + // Starts an access point + if (!ESP8266_W5500_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 = ESP8266_W5500_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 = ESP8266_W5500_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 + + ESP8266_W5500_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 + //list directory + server.on("/list", HTTP_GET, handleFileList); + + //load editor + server.on("/edit", HTTP_GET, []() + { + if (!handleFileRead("/edit.htm")) + { + server.send(404, "text/plain", "FileNotFound"); + } + }); + + //create file + server.on("/edit", HTTP_PUT, handleFileCreate); + + //delete file + server.on("/edit", HTTP_DELETE, handleFileDelete); + + //first callback is called after the request has ended with all parsed arguments + //second callback handles file uploads at that location + server.on("/edit", HTTP_POST, []() + { + server.send(200, "text/plain", ""); + }, handleFileUpload); + + //called when the url is not defined here + //use it to load content from SPIFFS + server.onNotFound([]() + { + if (!handleFileRead(server.uri())) + { + server.send(404, "text/plain", "FileNotFound"); + } + }); + + //get heap status, analog input value and all GPIO statuses in one json call + server.on("/all", HTTP_GET, []() + { + String json = "{"; + json += "\"heap\":" + String(ESP.getFreeHeap()); + json += ", \"analog\":" + String(analogRead(A0)); + json += ", \"gpio\":" + String((uint32_t)(0)); + json += "}"; + server.send(200, "text/json", json); + json = String(); + }); + + server.begin(); + + MDNS.begin(host); + // Add service to MDNS-SD + MDNS.addService("http", "tcp", HTTP_PORT); + + ////////////////////////////////////////////////////////////// + + 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. + drd->loop(); + + // this is just for checking if we are alive and connected to WiFi + check_status(); + + server.handleClient(); + MDNS.update(); +} diff --git a/examples/ESP_FSWebServer_DRD/README.md b/examples/ESP_FSWebServer_DRD/README.md new file mode 100644 index 0000000..2937768 --- /dev/null +++ b/examples/ESP_FSWebServer_DRD/README.md @@ -0,0 +1,72 @@ +# ESP_FSWebServer_DRD Example + +Compare this efficient ESP_FSWebServer_DRD 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 [ESP8266_W5500_Manager Library](https://github.com/khoih-prog/ESP8266_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 ESP_FSWebServer_DRD 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 [ESP_FSWebServer_DRD data](https://github.com/khoih-prog/ESP8266_W5500_Manager/tree/main/examples/ESP_FSWebServer_DRD/data) to a local folder, for example: + +``` +~/Arduino/libraries/ESP8266_W5500_Manager-main/examples/ESP_FSWebServer_DRD/data +``` + +### HOWTO Upload files to ESP8266 (LittleFS or SPIFFS) + +Use one of these methods (preferable first) + +1. Go to http://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/ESP8266_W5500_Manager-main/examples/ESP_FSWebServer_DRD/data +Ubuntu$ for file in \`\ls -A1\`; do curl -F "file=@$PWD/$file" http://esp8266fs.local/edit; done +``` + +--- + +### Demonstrating pictures + +

+ +

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

+ +

+ + diff --git a/examples/ESP_FSWebServer_DRD/data/CanadaFlag_1.png b/examples/ESP_FSWebServer_DRD/data/CanadaFlag_1.png new file mode 100644 index 0000000000000000000000000000000000000000..e3089877a83b0445506ccc764caed7922820b79c GIT binary patch literal 41214 zcmbSycT^Ky*RRr~sDN~k7DS|rQlv&OC`j)ZN~qF7=^bfGhal3s^cFxuhX~RXke(o2 z=>!P9Bm{1JpXdGVx_^FmEkagcGBaoPIeY)gKGE8mFK$t?QeL}u?Ut$vNcY+`qOxn( zuIrPN5&p7q?dRuf*YbN+L5ljmGdnqc?HW_K{yf=Cy9^#{)tAc2Nh$^6+Jz5TRUC>$ z%k`5Bm0t2|=-<=Pi2xKQ-~665WWAOlyLgOSo;Wmd!h9KNSx;?F8^IleVL?9?aNA!_ zW^mbuzefDuGxJzQBxS3p$3=+&lw)J6Ac@6d##-du_xz8VJg$PFKR(q>E*dMj7n0;Z z<&`$i-%6~+@u(60k0UY&F~KA1B32$+Ns~m-D3NnV5Pka38x5uY-%m73p)ddQMoud5 z_Y--+Q{MmQIPLs9|Icv`v?>0-j-xO8=d}Ml-+wRv-}C)@dG7!1asSKV{I7<6&SnjI z^yta$f1i?cL^?CH`AGsXcf{XO3{c#cpI0z%9<6!&-ufB&f9~9!C@Qi4AemaNnElVWz$GPrmE#)i(|F@lhS5m)5c8 z(l@=Ey1x&o21l!BF}Chd1Ea*9qc$(6joZ@{Dpo+|ZP?jO5kF#O_XiDx8&UCg&Gf{Y zm!7~n7zfXM$#se?pJDuC^!^EElJ$FV#%)f<3?OGBr@zX|>7sJ0ckkhmr&ET^si{z# zH^ZwI-IWa;oB|=vuV#s#^lG{9PJQPOPJTA(fDgifVwjlt^;K3zxuJ4?Tu&>F`XwnS z01gfSdH*PJr~BiL)hbW`;KuDJaR9egBdf@khqYdr@Ec!Rh2)G!; zH{LAPAD{i??_gN|^Nbp7URz1K7Y)c_F7Se^u?_*JiRRT+c6q|}KB7J4ooR%VrH+QZ zbl;m&r4sla+KgH{U*|dFzq=SLINngM;#i?#1?W#$i9@F{>L*j>Hz{yOTzq6JCCmu# zorm)fghExxL`k&g23Ngv#=z;KETZ9}oHruL89zBrIBPr2Xj=$^;a$?Qsv*kUzjdHY z2XMMDSO<{CVT(yWtq^U56PDqx4oi1s2S))8%nWb+TON+m5`aH&05i#)b^RS-Y5rXz zHdIDQyNhnZTCEBS3uGX6d4YNdI*$Hc%OGdx+R^yfv5u%Eh1T0n;Q?g)YaLLoyk+_WPCZYutJDg-oIN{4h2} zlp6Z0GHqTHHZr7+IqImnLw<60pcf%L3BO6nGf;55lTs19P$XA=7z$z2tpy!EaYu;NqO76hM>bcwIxQ-~HGT`lol_ zcaRaP9P2!)2WCx;q>R4F%;mn8p`v9_dYhz@JfbvsVFvCi%&WXo7`ue3z**GjD-H19 zL}O@`qQEKoz7_DvV-^FoiBMv1Gb;d5F(uO_j_DYaH%TS(Zq;j;)mZU#hwgmwYCG5y z5>AG95r~R>qoGc}IX%`UN?2i}1*D&7+#Rjs7@*euR%ZS(ph`(Z`cw(>r_bUswjlV7 zyQf^U;Jw;U*aV&xpO-0cF!b10xQvqF-+ajbj&jthm!`^dSOWQD6D(_{h;F>iuB|8# z65IwetZv8AQsmZ;4Ad%#^AJy5n6+Kv(L;H5|IEScnX;sdKU7Y=aq+zk0fBNH{r$@= zlw)b;cg{C>aKQ|pdSfhsqMaK-!e#uYi_}*rN{06C3>qa(<=N|>&s2YQ$guQkX}(jL zLRY?^hN2+U2p2>!U_^n6%05Z(-2wg-kY>i{_ak_S8LFAHmp+DDL3B0}zT$rUsGBch zr3Q$)!j?RcXHOmf)2m$5thDkcmNp(}{az)O5g=$7b#e4jr7O%(yRU!tw7580Jpvm$8rG2n7^}!(h$}dVFgoh7weaYiEH;O^|Xu~4W?OVWUvSYE-zQxdJeM+ z(cP&Me2424vj)9PrT^8=GQt^Rx>EHesSMH+v)vJ(oN%{mc~XCyPjD;;x{rzUa}-F; z3l@0fevgBX?@)&4KZQ|c@~&Le>U7=S)Ll8|5o&g<56+-+vrrkZo_%;KYUzyZZt`-1 z`635`gYpbN>RzuT6gS(>Kx0Ocxbh(U+}T+bP*!Ajk?ODqB!uZ;(jehABw&ueg}ytV zQAr~h=v_6yn?}fJ*K!dT^(qr3NGW~curV;Bmn=L};qpo9v-cJ){$4Bid5^@Pb|2B? z{nBD?>aF#>Si)l5LBuTiAJ;k~)os?)Q=ZQ^QL_+%05?D^*7H=sm%mQbP|5*A85y+; zC)?2tMzY>ZaK1c{V`<7Vu3n~pk{bP!0Y=7Vyv+u-*cqi zsXtbBr~O;k+{py4Nx6c$u^uB{!R6U`72Z1*(b+&?E6_NH1I54V1dEJ1T4!~cAXCdJ zJiVdaGO-;UZ75VR(0<`A=x-)i8>1J5+5274Pk)d3>Vgi5Y+CH|5ay`0Q1lFwDZxGU%m8#Z<)fz7+Xu-1`tov%!l5Sl} z%01oc%v<@HG7L%*l9GX%6EkpVpX%q$)17DCguGN6^!k3FNywGiN?kvfKK0$FYwzGr z9ZH6gW_4D8G;@K2DI>|v;3sM|osjB^WArS_RHrfsH8Q>=V8+B2`?h(F6}EKiz*>I! zCX`y?DP5>&6{WtBuV$Vr-g3&N(8a|3V?+|&ZQ(M)?^wz&6I%VcrGKulYBuYda)$dp z8#JKLvbK=V&&#G`qw7+KWibtZ^hpfAo3*uDxy*>8b>A#qOU)da)KDv?=O+?e9TW|~ zl_FIU$`X(1QWxM(E+icxF(H?McNfQt0Zj`rUNd|ePP_p3es+Lb>NNi1?DMd5K8_G2 zfI*P9o}TjaxZ0qp%LI;iG2{*<)BD7#0P}w`nET6usnq0;%H}}~=*e;B6fFOJGW0yT zkCDxJ_@=Jj??HYmyr7v{DbVAcV3JqGB7@@$XVBs^>gbC-;)tBxSr-B3EXl|RHM+d| zds}ahHpB6z{``+f;yB%^%UbiApXe91ZU9yu4d-#rZYX%3W6^J(4Gc9X$q$TI1jGCC zAvdUFjxcV@68}^eO=COU~f1j)3LI;!gxs?m6wHfS<{Fz8m$#4T*NYb0hoeTcH4F)gNlyy1ya4T*xcwhXHkMN|D+)IA2Is0#p*oHp;)uvFa$+zHB938E0>!cSZ|{<_%UfepmbYhZSln-;YPzRD*wKOu?i zxau_HWU`B;vJZWC=8MZE6vd2(UH36|;y~^dl5Q@3C6%AF<$X~{TfFW^4@xrU%YBR@ zytnO%E9SULxPG(H5u z><%x8Kn~U`Z4F3vDYp*6#gsEwStM567Ib%N-Q-KsnblFT)1WKGPM8SRzd)(LN>|x# z{U>>n3~qZA-?Dr@?^FA{&HDL2WGIFJTunQlUMInt21_R&hu|eHo}g+XN%cyP433m} z0%g6F93N;fTtYX9%jL#mHgH22%J>4nKa}f8}?;w_YMm(DoXyjb?wz{_Iib2_(m#!__|5s(zJfc z?o1?G*v0udUM9nmm;WypCl!z;vnTNnlna!*L4A@+79UOPx6Xbq>#Fo78yUnf4Gnv- zG&WsF;{(K#2yPWTYm9J!I|3?=tg)Tu^7PE<@@xv(o110t4d4~=`M@_%i`;FEjp1|l zk(5swkI_5c0u~6|ZQRWlIWja;uKtzw8Pat8?J_=V63;_lhQ4$cA`q&G6?O6S7bI2> zxvzIuys@0@V4`Jtc#Y_|X>o~?CVoRh>%&8JweTnOp`XT?$p?7VKnl2_&h?r$3%s1? zz-7kz_wYDkH0rZPx<#dVZ~wFGEwQMtL?-#y9ueEWn@SZnjM(z7;XV0fXQ?WWb0)Ee z+lL+_E(PjcOl&N-!1@R*<V4VRK@$3F4;6tM)H*8{os;T=t~wGKp`AtXz( z%SRXe0|ucUoBC49V48W!Kk%sN*EMlthl%@DsMccufEpNAy!MP;euh#>W2zxg8dTmk z&yzSkGNyD5uxG?T+k$nRy}=N^Gi&{;G*N!x+Xv-LaoSCkR*?=5iFNsgJX)yv-iE@r zg8oMVk^-K^C05z=LEEqSx&C3J(L@a3MEUo{sT2mkGn20E7q0>(;y;2(!$*$^9B9si znuCp)w%I9-p^SBvgOk(r;nRs{o8CT)F2Wx_Kext7tRAar9VN_(^Fw#|Ls<^Wvf?xqXt{Q}l;ZQS&(65}!HC#CRGd zcdjEvUIPCuqTb>kIarNSx|4{j5l%{B13{VAf7PP{n0-)X>a!8dlLzQnJ-L&gP~Q1=C=TPsOt#cS7tna{%qU* zOL%R<)65SjTaeW*3tCcm-PIqBnd2ur1H9mZFb3-w%6hxJ$owgh^-kMc=~h73;i%h^p8e54BvA8I?6aGk(?;Erh~EDYn01I!nm0xY?7gY$(-C0 zi!>QH1`}8XF}1Od=0BPE&UFS?N9id~m6|2@F)x9J+w4l>fv@jJWXH5*x%D-ws`@T8 zi4+_j8y*1Gm6MJjc(W-3E?!dDaHegd4$vfW)h>^l6(Z=+aq$RL@q7cbAbfDX zesab`8nNjlVDloeakJE<+=nVBQIZKeFU=k1Cm?loR9gY znPVX_wWXSoVc1~q$D4|RB*th3oN(aZs4z?8TvATJ0pYU^4o{7pX2hwO!_Byyaz7?#GwD@U}q-j0e2JfcnI475NM7yCV??&&w-u6_Gi zrOwK?-6B+_!@p5U-wL1rbA#X(7==N%IgS>}7=)s(Rli-{yI9Mr3tVL|RtDn5^?f($ zfP2^aM0k5mE>j5kc3cbiw+abr)23xRM=n4@6n%?JX7u$0dL|R~@G9TVUsW)u64IQK zc97}vALrol+w4^v`ar{BS?r)FOFxB%*@*ugPXp6Sbm%;!ax85Y&2^la!>zR)yWzSy2+H4 zx7aL5395-qPK*(^@t6BynKKO(UJMim!$U)$NjztWG4x4*EZ=1gQaV`IlYY#WJPFcC{(iA=C z%Tv$1GE5~V2+(blbT6uKx^8Csuj+j>vVyWDQvyl@d3)$r@fCOB0SzVIH=a;ynOGF? zC7|?t`9pQKRda+w*q2tH{zJ_i&@N(e7Xrk@iYE0yNTgMPS94_64vzfC>_Pj=cfZB4 z_+GAj^zF2`o~xA;6IfQG{A57uq5QlFxyAUsv#%wkpRfA9&Qvipj*pL~r{vKjvjuOl z+*5XMps`G%k6x3>kf8d$i*GjksT5fyAr=+SM%%t}%Gt3*q@LK{2Zpkgi(>rM*fQAMpJByitJ?O{o^p zg^I5ItWX6JY#3Ei8jzNeL4Iep@zx*lGFJVuLhrZ-niSkE-%p+r^y(HPKH)M@RXTw& z+N$trHQLIWxgyL~=6zf)b&W_`o#$iZ@>%g5(K?^E=|dVAOGV6Rl8P|j(?(K_=Icqj zbY>fWHRu>Ygbyb59_WB;xr936*`DPSa^KvI3L_?hlw{?(s6f8HHq31=VI;&2b=|dB z%(c*b_+rPS!q0uZGYw!4`T5sk*b=-q%+z%PelITaGiIhE z09yDG<+P_yLr`;kITYef?QD$e(2}(G1`#+{LCKFFU4Bl!={5vD)44+N>(vhBEyhIg zs#OVwMHyws7(4Ah9{Cz#Kq^g0(2vr~2vf{sEI+>u!}tnLX(cGl(xSj7{&b}^rZbrr zT2b!hB*!UEo@&UD2=Jag9BCqwQs9`tn6&}+gPyrk|K*|l z5RMiTHp!dSamwV}()619AMXZwxyM|kyx`fg``OT?JeIGwHs8j>EKr%8`|UmVSO>C+ zx|^Ax>o4&L5WQ`+imbN!1P#3;dnLpfFtnz83|UkRJ0`eQt}VR*JN-Rh&6YCk2!2n$ z|M9Sa;(P(|k1p)5ChF^Yea6rqn6Yxw(lb?&@c%?0mQqxhuVP{m+Vcs_psei?j9D0+ zD|MW@D^5OkkSTPPAWKtK#0#2l&=nJ-DV1Tr!eLZ^yhLM6Om@AS_){Leca-7lxpe2- zkM)BH%P&+FFD!nI)nr(R+I`DRE&1*-N3RWqt~Lbt z;4ZPpmUZ|ww!ikECw^_XjN^DxZvlh{NRD+1S{)x&8ok&vUjI2jK`@6U*;8e2R~mhu zen+mb{K?2d$E$ZYx_Mt(Cr^X?J9`N5FEIe$9lLSd6Lo_2Vn)8hR73rAZR^Z&mh4L!u72P|6>bPVO^40!^-y#r_>4q z{x`$Sosc&_)r2uC++`eobA-MDZF6D@`+Cvf^ubeqe;>KUN-^wP>-RXUy#8RAmk)KC zNgxMIU6A`qDrE!Xz*-qEQ0Jvg`AfSDuJok%6 zmbQUfVh$ksKNfg&R7{OxH1v*>7E~hNpMCjXgZ6ScETO!F6T2&G%otzC*!etuX;9j$ zLIa2a}oHhE=WJgcvQ>)raB*>A~yv>f2@iyu$3L{axgt~|i3_3QD{*bC)MNd^|_@m%8Lc$Z&y{tytS4aWmrl0Qes zs5-MqN`Ohz`>P8mkMeE{pMLvgT9^tI2iUb#JH-&#M0KZI4{xetJMe&;a zd!82$g>$pxJoP*L{pLkt80h%5uce|=g_VEGQqLOI#GyuH26HjXw9LhR;Q1}%Eh1>T zJx;r&UfxjthO~0FZab|z5hCP_vc7J$osrI(Q!pdr{av0%k80b0lUY|7N|d~M9CwVY z?jvZf{n6129-|HX9E)#=Qwb_jkUutBHi0vEPa!c{?Db&klFP*S_VW8%JdhCifcFWX z)ZFXEQ07^9r}Ler9R<%h|C5{S7!{2sllq<$w^LWQtNU6fC&!}&%N`0x>6d5U((A0_ zRbM_T(PX!lbbh!t0vy9MKe4`ZXYZ`*MqSWUMPC)zc4)4pPd%d>gRARfAIwK5#|wXu z0Bci78;m&|5SUivq{DiJflG@zsuf(BIY|VLf1MKKr!8%8XR2*`@O+w245mvmtzE7 zsmIrRPv}(`SKVUp7g)Jhy}eGrtz5tRVa)^}2u|0En9|3krhuFT2o7?6U5*vwNVXlTg*(t~qv>F+bb@rfe~KEUKvtgmiC7`ruC``0u9m#w65mBp<_KMi*tA9v0R!xpDL zy=8O0D+`UJ(u(u?ev9jlqGS1dTgUgUCfCT3@+ghP6%M2GgOhzI&w^Yrq3@(vZF&Ds z@7}GTU1_$1$aq`oSbTmzz18b4hTAE5x;ffxk3{ zsp+~pG|(E>cH2-F6}Hovn-Tp8#`g!TC%Bg_4Txp@bqU%EH_1`!DUp<=y(<&3TJ;KG z(r8R|4&}KR21GFGOE!L-4y!OMkPnD!S?7T9?txzElieIxXern2O(*DDZ&O9^+oV($ z9iG)nHKgOr)`W0U9fyH`A3rL#SbxUgc@~(`{(Aejb zbE!q&enRt&+tn=m5Iknax$xy@jNC~OHUb;4JDYYWvC~$D>~wb)OR_CVmT+8_Kx=qGEhTa%$Wb7ivU}M+t^g&0y-Ub>*1pevfqk z=f(%l8HMI(Ji&t={PI)j(Iuf1Ovvaq+6mQYsCtaAHvMJzYb_vuh-YRM1`5O(ewiYW@#q%WK zF+HG#ivDYzSrA-oM8Rojvb+Ggc2&%vEF74TK`6tV5~h{r^PP+Ed&4>CW7q{uTM(76 zSfH~*O63pB>H*32&A1}uFPNPWe465~=Vh#44=W*wtmDd!MxN)jp;nk6%pMaO8>s0z zq#NAF&DbZtE_JGDK?&i6>ceRP=hL~L#j(gt&hjDLwh86A{{}Vd7pFA%SEmr=xXsb) zBd5E=EU7Z6FuAt?p&~^_Su>x-AoIaJ1pG&75%WZ$GLkWv{dB%9{v7KhX9#(XVnz7C z#BSW4cG(F3(RY&9==;)B>C$@gQAuhCyDTWz|3{~Sm%z-ys&`vM!xHOO4euB{-?pEK zg)Uq`B`@gx%x>RwXK`t4w#RKDZ!dIVw*Ah`gOJuY1t^q0UZy{uu4R?6{RHyj5PeB~ zw-%{cZ3(+9oq6Gt<63$N-O@sXyN=G$umHME#2Mfbvykz-QwOnkzrI*@G0t{e-Fs&bT%d$(@|+Qe_H)ol`;O** zupP7z*Y?oO;D&U2D;$|CcY2P*qI>0*T@R0c0(BnE7$~-)A{l}-P;g)fHaS^k}<@o{{ly!yO zM;Lat4>N6H^1yaiXFLI@^4GwPIqBv_RaNgrMO0(%A=lt~iAJ9%hU3zo65H8+_%pg` z^t}3rpT95gLhPWiq?GN;+s`>-#vQDT$YXRzF#K@+19s-QwOPm-i*>FqQ3f3-uKX1p z%PsM%D%a9Mf)F~~tX*STCSeZqaA7h}ZwvnTcPP{X+$&eY%Cg>H{g0-M0K=IDLhHO~ zOYpdxPA%JI?4Uag2Dt&IfCghD$?hNA};ImHdA@!8B?XLEr!7j1F{OP zyDv}gHdhA)fNY&Qwc)-Fz$qEoH~H|^3b?3gh?P|p=dN8|bQQ!6;^JsEkD1;$5H*HH^T5 z4ad7K>X#P_7fBjf?+tldkCA({mu~H$E|M-k%pu?g^5bI9eiR1g)6ZVEOBb=W8<$9} zVAOBz%%@(9dT9j+B!lzbn_j-FAcu9@fTIdWRJS;MDh;EMC_KbH+Gm!{t-_yplV~M6ihuL&qRAk&E7COYx%xf=qwD^an$hR7Ws zuUb6FmPVdR^7htT;eCYi0`K5-ILDP^>vs{@-QC%BczzpdwZ?40nW`q_ZBnoNgTZ$q z)>c(hr=WEwLT}#AJ!kqd!q1hL48O2-hLqdM596&oFaK5sepq|hqa+#9UlpIkID_qn z*7H7)T{T-Dcik{f;BX;Lj%j*5T(xv`imz_kD-B+W68mCjJs)(+a=4th0F;?GssL78k;NB2dpxa=@L%u{T<%IAag?z;u&*)e*G$k zJ>6Wnu^gZI-A_jC>$)TOz26HvRP?n$lb1dH&yHGW9r96i7rV`&+8G&dw91S|QU|A; z4#(BRI9hW!28&cB%?w}0us?3H2%QywCm=Buu&bx5UGKg0l>CfJWi z=2|h7skJ&HxUa$0C9%|`X&Wy&Rqk=|vR^m9UWb5ubn-bo2%>^=Srk=81s$EW@MA1i znaL7Z<5l6dxKu|VCb9}!S~5-ANAD%q`?t^Ru z)1t(7W^W)$!UPABS?P$omMP!h<9J?FQ5OX)gkRVk2ezRiUlR`u)D~)1uerjjR2JFi zH4`w`^*Xk#O#<_3b=O|1%s9Dq4+!6UI z@F1xNvDoVMtiQ>7XEfL$<{sRbC7geY>-1e!rsfC-%!?-X1EZ9Q&M)WX>X6+M}IF8#kA)hzzw<)EnF1?{i+bSPTm3 zi~m-y$A|M1XygpJ3v02pF%ze8#CjS_#EX?^7if36-h55*{$?F!f~_u;_$s3qJE64` zpO7#piva~=7>r2Ty0!lkNQ&)eq15}f~1=+z~)yznsP5)ShM z;gu89KB*rdS5y4c{!L>}2K?NK6+@u&OZ$RKnCcp_>$2v&58>nNF=xt!2S z_xFM2xv##F$HD@vlOzE4?*Xi8#}1`k$>@dYj(svyvfWmyUE!VCZ+z!tFMbOY>;hUe zvj1l?zfa0}lzN4O*idauXqh0M;Xk{~O{dqGb|{_TAuKo5`Y)2|@m9G=kp<_{Nfm^`M_vT?)e zR;z6>oqwYqI~Qu*nKJsu`67whxp{M~2ZR=QBR7&Gn^P6G1xGDepZ&5cd$LLfD~A=3 z1KLZ~Lt}dnR%@}sW{$Yauf#|n-RcHM9cPrt(G!EA6HFrBsFDnUtT3pXEDNqatSLPC zz^R0PKF`I2f;=i~0pN|J^qQ#qp4zMpGCATC?-3dbEfl?4@ZK0Nw(7{MWVI@`_pQdJ zo>0`w>U9b3F4^$W#_Ax5ySse?_!Nh#WU7g7Xt-+Z{yWBh#z|p2aUa7uf3|vrJ7{M3LD!3EU&-b`PcBTpKy|!hb^o-56@m4+^5*LG+s(!dH%e*ya6}fBUxJ z4+wY_M&+DxxSxL8Af$);nRc*#ZvmwY0j%|;rwUh3{bHXW=uhkrsnForM#&s#fUskR z0pj75i}&^(cFEC@ls%7KcKgs_qPrA5?s4!_HYy1-%OoXX*2;W%iQ6k6bl2%@UiD6+ zFLQ%u1Qq7rm2j!G;xf@ZRYVeP{2d}KJ+050muKp2SAym|5`A9t@DRVEuF$WW)h{PP zw~94yKFLLi{oetv!w^XrvGKg`CT_}Cc7-q|A$#FBHOxN+hCh{n-TQrU-tFGAE(@3C zZ~@aSg?YidiA(_U`hBX3qM~im@^X7ZM;_)9Rki;dhJv|y48|~f?DzI%dnDv2+~#xi zKc)=Qs9wlS^VqXE`ypbMc?`conp{=qQ-IS9p6ZNxRc?-&ild*6287j|m*!F~uFtyl zOS?|fOdNY{EzKC5rdWPcLNI|p4R!pMIaF^y*=>8(=J|hfh=1tTn)rNuZ+ZX*9+Lih z{F<=IYhlmdL?kZaL9 z3kBXH<2x@c#9ub=)}4**zdcP$XZG`-W44y@K3Y47TPc;XjX7lpcDa;kQX8 ztfg=(FW651DFQ3-=m`nMZY0$Xyu3U^{J{wPXPSr$@o-q*S|acvo>P1tCLKUU|Fnb@ zA@Pg(%*1IgYcO4GVcijLc*=spci*}nc%;)V>03Lm(6lOF{M7dIQ(NoLPw_88=$%mD zE~cO3YcWudk$5?Cu-^~Pe7c_9`GW4jop7)wUL(Bp0;4ym{{;Fm)8F~?4~g@DW{XF( z)<4otV=jJt`i#@_{wtW9aIcsLU^+gm)>;-sQi~&A7hPkM$B2BqPim(cEtL2!Xn;TG|%3^LWbhVuk+22OwdQ~dSHz!LC+L9kXxw}(=a0kZX(z>4OB`x8bh zo?`h3e%?6QW?p;DTmpMyJg>o_eWL@NBk6<+CNH>t)~QBQYCdgt&T03fR(sxYFVh>& zjWJ>vHM7MKvU-7wi&j4g`}>ATZ-t`)`bWXC`%xMDU_WR7`J2daj__3Zodx!(HeEgL z+>7?Zgj);P4IZ}>5~JqlJXS}U&NK8Pw`WRYMY=tkQ&CgazgiiPBWuI^8D?!(ao7{( z_tB4k)?U|ub|Ufut%f{CSRPxG)s!oSzo9$DpVE8~pgHaXnQ=CNYS(n8&{F*07aEjX zGsg6dTn~+w-QDQjD@6tVCgs05Yb&HXhCxy}S#05MwyZbTu~xI#OU*{br+r`jW!~fm z;TvaZj6YAT^f6Dgcx zo8sBHIp(<@(yFtKWQ6x)+QUyT&P!1+sWJwBtD*O|x>9Yg8n;BZ%wb+z5w4|$s>)_y z@Wylv*!JTj8k@krQ&&#CFTL*D|Exb?MMYn2T-?U*u)Fw~UfMZvQ$1iHh+9$;eJTuI zVMnL{e8-FSq#XRK$zF}bE3#JSAD&{-zCjpsYYzW`fZI*ZioJqT9?!&o-8fi-_otYI zgg?;!MfjP1p#243TJXnmh?$M#4*wG#{_o&8Ky-_=2MxnQhiqS+K7Wzc*1|m5BNk$+ zJlPYwJeNc87N?(5n3&W&J*&FSO##z$9W_WiYk^@O1>Ig|s(n0}{C&8lqoDr4$)JW$ zG107xs_Mcvxk07Us6jwP)bAcLH3`oNJUh%ME4d_N=@h6^)vaCZ|@z>>SN0n&fKOnMfys7%6~Js2Ha)(p8Av$se;!|3*8paaraLA{WWykV9h;Iv9#I=^_*1TR_WNdho3v$e8^RhO%rv8 zVul!xzW(ZnThn6WFgDS#@g1Y^DCaP`5|y8;HNObuIWaz1snff>ocp?->x6Igz`0TX zcTqd)PfXPmYx4|!i#NL&*^DcU+Bb zA9_)cv#)tzem8RxNy08Y&H$l+#b_9!5wn9F#(_Tx&=l-S3z#zRvhI2hXGVgh;uXEV z*v~V~(c6XKKjAU2M>QsTqPuWo>yDoik4$K7#*lGTSp3`1d!L6Dl4dJa2(0ZN;`W+~ z;i03v7issDQ2@^r4}QN4mX{@N-jlx2(LuYr^@SzHW}bN^#8WuQ@zr>6`L#0LUK6~^ zNG$ldMD2ak$O104su;60RtY7i62aY+wv!Q;-A*&hbtZOdc@m}@W~D?1k!b;eH5Na& zuv6Jt4i3MS)5Owi3>7(R9vQ{6)-tyep{I;Gkl(60)mn32o4z5QA?(|5KQ2|-rMi52 zkI))omsjw$>uA&PZsqYb!#5d5cA2mBSHC|C9goyG2iNpdoi}?u8#EBMjtyfk8ieP z9c^M0)*^1+VS)j}y zCO6B(=cd?{HkqLdAa9zjbkoicEY&Xz30lSQrH?+WUj>D;P4ioP9N4UJT8#4V3?#oi zz(CyEZ{Mv|3<&0&t*W}%nIT=YD6=;T#!sa$2Fv>4XZin|e0i|im&ZmMb*%;wN6oX1 zaEA{KJYqgMYv z(R&CwMO2Fkkt7dscc-7n9H?1@T52&)t`Zz`yfHS%R;?BK<9XeZowYH6We_(8!APuU{6{I0cm8?V>61?OvdPUnGqL{4%VIaVq!FH@z|vu zNPw{Zc4?7uY^B&h*JkRMIRwysm6M^SbvTY?kKN1drhs9@@eBsB(TPFB;#uTnCZ&w~ z_51()vis6lQDG6!IGnr`^YYe-4ktv)Bm9wDE_>yqK8$NnAS+z9?{LjB2SH!P@foaU zF!x@qa@B`|-+Ydd^i99hmVP#mRNK1{@KwV^6{HTxZdClTz;N1QM0xA6#`jMK{z8-l zd*rIUmy&zsED0LAYT_1MWfr^M7uC}f)zkmMm6J0Ob=2`9AxaMWAeZwA*LZ2-z-R&B z!|mvz;%Gu2(Li@30F8>BtceebwcvdFc7Y%ozP_KTS84^E`9MV4j>jJx1uldV6S}TK z2NKu;iNJ*QHlJCA{+_6!(&e{fg~rHg!SUi)!iFnA(;UDZfBbiUBfa43#kBM&{74ob z!D$B6gDmA*Esnm&`}=&nn3;$6NDs79UJAOJhvGG1enn(X$t9Y5-g+KYgB!MqA%=v-#`vgZq#XmI&VwG z!oiW0-v09%?{}L7yf@zU1Fzx))WBJ0J?US5J}NN~gn8+lE}wp!aRay{bsjxL$-~eMF+rIaa9nP}ZkgxC>s}g4}VLrK$bQ|M_I+ zo849&p))Hi^a9y*ei+_=Iq&lfuWjZNimst*Y#K`9%NADo3pFN#MK?14^9>0z_bz10Pt04=XYp{2nxOchxw%Ytw#;&v5gkC(b` ze2aZL->FL1teNeVDy&+;Up2S6JfuF$H!NFmS)sT+A6sAXyXPrkKTr>xqyp01c3Jfz zfvYuW4B*xm∾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 Sn()s7@S}?`(kh4F4F4adf8J^U literal 0 HcmV?d00001 diff --git a/examples/ESP_FSWebServer_DRD/data/CanadaFlag_2.png b/examples/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/ESP_FSWebServer_DRD/data/edit.htm.gz b/examples/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/ESP_FSWebServer_DRD/data/graphs.js.gz b/examples/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/ESP_FSWebServer_DRD/data/index.htm b/examples/ESP_FSWebServer_DRD/data/index.htm new file mode 100644 index 0000000..4e1dc7d --- /dev/null +++ b/examples/ESP_FSWebServer_DRD/data/index.htm @@ -0,0 +1,97 @@ + + + + + + ESP Monitor + + + + +
+ + + + +
+
+
+
+ + \ No newline at end of file diff --git a/examples/ESP_FSWebServer_DRD/pics/async-esp8266fs.local.png b/examples/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/ESP_FSWebServer_DRD/pics/esp8266fs.local.png b/examples/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/ESP_FSWebServer_DRD/pics/esp8266fs.local_edit.png b/examples/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..ac8a81d --- /dev/null +++ b/keywords.txt @@ -0,0 +1,92 @@ +########################################## +# Syntax Coloring Map For ESP_WifiManager +########################################## + +####################################### +# Datatypes (KEYWORD1) +####################################### + +ESP8266_W5500_Manager KEYWORD1 +ESP8266_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 + +ESP8266_W5500_Manager_VERSION LITERAL1 +ESP8266_W5500_Manager_VERSION_MAJOR LITERAL1 +ESP8266_W5500_Manager_VERSION_MINOR LITERAL1 +ESP8266_W5500_Manager_VERSION_PATCH LITERAL1 +ESP8266_W5500_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..cc37a70 --- /dev/null +++ b/library.json @@ -0,0 +1,38 @@ +{ + "name": "ESP8266_W5500_Manager", + "version": "1.0.0", + "keywords": "ethernet, WiFiManager, esp8266, WebServer, Communication, Credentials, Config-Portal, DoubleReset, MultiReset, littlefs, spiffs, dns-server, iot, eeprom", + "description": "(ESP8266 + LwIP W5500) Connection and Credentials Manager, with enhanced GUI and fallback Web ConfigPortal. This Library is used for configuring (ESP8266 + LwIP W5500) 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", + "authors": + { + "name": "Khoi Hoang", + "url": "https://github.com/khoih-prog", + "maintainer": true + }, + "repository": + { + "type": "git", + "url": "https://github.com/khoih-prog/ESP8266_W5500_Manager" + }, + "homepage": "https://github.com/khoih-prog/ESP8266_W5500_Manager", + "export": { + "exclude": [ + "linux", + "extras", + "tests" + ] + }, + "dependencies": [ + { + "owner": "khoih-prog", + "name": "ESP_DoubleResetDetector", + "version": ">=1.3.2", + "platforms": ["espressif8266"] + } + ], + "license": "MIT", + "frameworks": "*", + "platforms": ["espressif8266"], + "examples": "examples/*/*/*.ino", + "headers": ["ESP8266_W5500_Manager.h", "ESP8266_W5500_Manager.hpp"] +} diff --git a/library.properties b/library.properties new file mode 100644 index 0000000..d876286 --- /dev/null +++ b/library.properties @@ -0,0 +1,12 @@ +name=ESP8266_W5500_Manager +version=1.0.0 +author=Khoi Hoang +maintainer=Khoi Hoang +license=MIT +sentence=(ESP8266 + LwIP W5500) Connection and Credentials Manager, with enhanced GUI and fallback Web ConfigPortal. +paragraph=This Library is used for configuring (ESP8266 + LwIP W5500) 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 +category=Communication +url=https://github.com/khoih-prog/ESP8266_W5500_Manager +architectures=esp8266 +depends=ESP_DoubleResetDetector +includes=ESP8266_W5500_Manager.h, ESP8266_W5500_Manager.hpp diff --git a/platformio/platformio.ini b/platformio/platformio.ini new file mode 100644 index 0000000..73bd6c8 --- /dev/null +++ b/platformio/platformio.ini @@ -0,0 +1,136 @@ +;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_DoubleResetDetector@>=1.3.2 + +; PlatformIO 5.x + khoih-prog/ESP_DoubleResetDetector@>=1.3.2 + +build_flags = +; set your build_flags + +[env:ESP8266] +platform = espressif8266 +framework = arduino +; ============================================================ +; Board configuration +; choose your board by uncommenting one of the following lines +; ============================================================ +;board = gen4iod +;board = huzzah +;board = oak +;board = esp_wroom_02 +;board = espduino +;board = espectro +;board = espino +;board = espresso_lite_v1 +;board = espresso_lite_v2 +;board = esp12e +;board = esp01_1m +;board = esp01 +;board = esp07 +;board = esp8285 +;board = heltec_wifi_kit_8 +;board = inventone +;board = nodemcu +board = nodemcuv2 +;board = modwifi +;board = phoenix_v1 +;board = phoenix_v2 +;board = sparkfunBlynk +;board = thing +;board = thingdev +;board = esp210 +;board = espinotee +;board = d1 +;board = d1_mini +;board = d1_mini_lite +;board = d1_mini_pro +;board = wifi_slot +;board = wifiduino +;board = wifinfo +;board = wio_link +;board = wio_node +;board = xinabox_cw01 +;board = esp32doit-devkit-v1 + + +[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/ESP8266_W5500_Manager.h b/src/ESP8266_W5500_Manager.h new file mode 100644 index 0000000..b5075e2 --- /dev/null +++ b/src/ESP8266_W5500_Manager.h @@ -0,0 +1,32 @@ +/**************************************************************************************************************************** + ESP8266_W5500_Manager.h + + For Ethernet shields using ESP8266_W5500 (ESP8266 + LwIP W5500) + + WebServer_ESP8266_W5500 is a library for the ESP8266 with Ethernet W5500 to run WebServer + + Modified from + 1. Tzapu (https://github.com/tzapu/WiFiManager) + 2. Ken Taylor (https://github.com/kentaylor) + 3. Khoi Hoang (https://github.com/khoih-prog/ESP_WiFiManager) + + Built by Khoi Hoang https://github.com/khoih-prog/ESP8266_W5500_Manager + Licensed under MIT license + + Version: 1.0.0 + + Version Modified By Date Comments + ------- ----------- ---------- ----------- + 1.0.0 K Hoang 11/12/2022 Initial coding for ESP8266_W5500 + *****************************************************************************************************************************/ + +#pragma once + +#ifndef ESP8266_W5500_Manager_h +#define ESP8266_W5500_Manager_h + +#include //https://github.com/khoih-prog/ESP8266_W5500_Manager +#include //https://github.com/khoih-prog/ESP8266_W5500_Manager + +#endif // ESP8266_W5500_Manager_h + diff --git a/src/ESP8266_W5500_Manager.hpp b/src/ESP8266_W5500_Manager.hpp new file mode 100644 index 0000000..ccbbae1 --- /dev/null +++ b/src/ESP8266_W5500_Manager.hpp @@ -0,0 +1,719 @@ +/**************************************************************************************************************************** + ESP8266_W5500_Manager.hpp + + For Ethernet shields using ESP8266_W5500 (ESP8266 + LwIP W5500) + + WebServer_ESP8266_W5500 is a library for the ESP8266 with Ethernet W5500 to run WebServer + + Modified from + 1. Tzapu (https://github.com/tzapu/WiFiManager) + 2. Ken Taylor (https://github.com/kentaylor) + 3. Khoi Hoang (https://github.com/khoih-prog/ESP_WiFiManager) + + Built by Khoi Hoang https://github.com/khoih-prog/ESP8266_W5500_Manager + Licensed under MIT license + + Version: 1.0.0 + + Version Modified By Date Comments + ------- ----------- ---------- ----------- + 1.0.0 K Hoang 11/12/2022 Initial coding for ESP8266_W5500 + *****************************************************************************************************************************/ + +#pragma once + +#ifndef ESP8266_W5500_Manager_hpp +#define ESP8266_W5500_Manager_hpp + +#if !( defined(ESP8266) ) + #error This code is intended to run on the (ESP8266 + W5500) platform! Please check your Tools->Board setting. +#endif + +//////////////////////////////////////////////////// + +#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 + +//////////////////////////////////////////////////// + +#define ESP8266_W5500_MANAGER_VERSION "ESP8266_W5500_Manager v1.0.0" + +#define ESP8266_W5500_MANAGER_VERSION_MAJOR 1 +#define ESP8266_W5500_MANAGER_VERSION_MINOR 0 +#define ESP8266_W5500_MANAGER_VERSION_PATCH 0 + +#define ESP8266_W5500_MANAGER_VERSION_INT 1000000 + +//////////////////////////////////////////////////// + +#include "ESP8266_W5500_Manager_Debug.h" + +//////////////////////////////////////////////////// + +#if ( defined(HTTP_PORT) && (HTTP_PORT < 65536) && (HTTP_PORT > 0) ) + #if (_ESP8266_ETH_MGR_LOGLEVEL_ > 3) + #warning Using custom HTTP_PORT + #endif + + #define HTTP_PORT_TO_USE HTTP_PORT +#else + #if (_ESP8266_ETH_MGR_LOGLEVEL_ > 3) + #warning Using default HTTP_PORT = 80 + #endif + + #define HTTP_PORT_TO_USE 80 +#endif + +//////////////////////////////////////////////////// + +#define USING_W5500 true + +#include + +// You can change in sketch +#if !defined(CSPIN) + #define CSPIN 16 // 5 +#endif + +#include "W5500lwIP.h" +#define SHIELD_TYPE "ESP8266_W5500 Ethernet" + +Wiznet5500lwIP 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 = "

    "; + +//////////////////////////////////////////////////// + +// 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 + const char EM_HTTP_SCRIPT_NTP_MSG[] PROGMEM = ""; + const char EM_HTTP_SCRIPT_NTP_HIDDEN[] PROGMEM = ""; + const char EM_HTTP_SCRIPT_NTP[] PROGMEM = ""; +#endif + +//////////////////////////////////////////////////// +//////////////////////////////////////////////////// + +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 ( (_ESP8266_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; +} EMParam_Data; + + +//////////////////////////////////////////////////// +//////////////////////////////////////////////////// + +class ESP8266_EMParameter +{ + public: + + ESP8266_EMParameter(const char *custom); + ESP8266_EMParameter(const char *id, const char *placeholder, const char *defaultValue, const int& length, + const char *custom = "", const int& labelPlacement = WFM_LABEL_BEFORE); + + ESP8266_EMParameter(const EMParam_Data& EMParam_data); + + ~ESP8266_EMParameter(); + + void setEMParam_Data(const EMParam_Data& EMParam_data); + void getEMParam_Data(EMParam_Data& EMParam_data); + + const char *getID(); + const char *getValue(); + const char *getPlaceholder(); + int getValueLength(); + int getLabelPlacement(); + const char *getCustomHTML(); + + private: + + EMParam_Data _EMParam_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 ESP8266_W5500_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 ESP8266_W5500_Manager +{ + public: + + ESP8266_W5500_Manager(const char *iHostname = ""); + + ~ESP8266_W5500_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(ESP8266_EMParameter *p); +#else + //adds a custom parameter + void addParameter(ESP8266_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 + ESP8266_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: + + std::unique_ptr dnsServer; + + std::unique_ptr 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; + bool _shouldBreakAfterConfig = 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 + + void handleRoot(); + void handleETH(); + void handleETHSave(); + void handleServerClose(); + void handleInfo(); + void handleState(); + void handleReset(); + void handleNotFound(); + bool captivePortal(); + + 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; + ESP8266_EMParameter** _params; +#else + ESP8266_EMParameter* _params[ETH_MANAGER_MAX_PARAMS]; +#endif + + //////////////////////////////////////////////////// + + 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 // ESP8266_W5500_Manager_hpp + diff --git a/src/ESP8266_W5500_Manager_Debug.h b/src/ESP8266_W5500_Manager_Debug.h new file mode 100644 index 0000000..69c0251 --- /dev/null +++ b/src/ESP8266_W5500_Manager_Debug.h @@ -0,0 +1,91 @@ +/**************************************************************************************************************************** + ESP8266_W5500_Manager_Debug.h + + For Ethernet shields using ESP8266_W5500 (ESP8266 + LwIP W5500) + + WebServer_ESP8266_W5500 is a library for the ESP8266 with Ethernet W5500 to run WebServer + + Modified from + 1. Tzapu (https://github.com/tzapu/WiFiManager) + 2. Ken Taylor (https://github.com/kentaylor) + 3. Khoi Hoang (https://github.com/khoih-prog/ESP_WiFiManager) + + Built by Khoi Hoang https://github.com/khoih-prog/ESP8266_W5500_Manager + Licensed under MIT license + + Version: 1.0.0 + + Version Modified By Date Comments + ------- ----------- ---------- ----------- + 1.0.0 K Hoang 11/12/2022 Initial coding for ESP8266_W5500 + *****************************************************************************************************************************/ + +#pragma once + +#ifndef ESP8266_W5500_Manager_Debug_H +#define ESP8266_W5500_Manager_Debug_H + +#ifdef ESP8266_ETH_MGR_DEBUG_PORT + #define DBG_PORT_ESP_EM ESP8266_ETH_MGR_DEBUG_PORT +#else + #define DBG_PORT_ESP_EM Serial +#endif + +// Change _ESP8266_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 _ESP8266_ETH_MGR_LOGLEVEL_ + #define _ESP8266_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(_ESP8266_ETH_MGR_LOGLEVEL_>0) { ESP_EM_PRINT_MARK; ESP_EM_PRINTLN(x); } +#define LOGERROR0(x) if(_ESP8266_ETH_MGR_LOGLEVEL_>0) { ESP_EM_PRINT(x); } +#define LOGERROR1(x,y) if(_ESP8266_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(_ESP8266_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(_ESP8266_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(_ESP8266_ETH_MGR_LOGLEVEL_>1) { ESP_EM_PRINT_MARK; ESP_EM_PRINTLN(x); } +#define LOGWARN0(x) if(_ESP8266_ETH_MGR_LOGLEVEL_>1) { ESP_EM_PRINT(x); } +#define LOGWARN1(x,y) if(_ESP8266_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(_ESP8266_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(_ESP8266_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(_ESP8266_ETH_MGR_LOGLEVEL_>2) { ESP_EM_PRINT_MARK; ESP_EM_PRINTLN(x); } +#define LOGINFO0(x) if(_ESP8266_ETH_MGR_LOGLEVEL_>2) { ESP_EM_PRINT(x); } +#define LOGINFO1(x,y) if(_ESP8266_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(_ESP8266_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(_ESP8266_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(_ESP8266_ETH_MGR_LOGLEVEL_>3) { ESP_EM_PRINT_MARK; ESP_EM_PRINTLN(x); } +#define LOGDEBUG0(x) if(_ESP8266_ETH_MGR_LOGLEVEL_>3) { ESP_EM_PRINT(x); } +#define LOGDEBUG1(x,y) if(_ESP8266_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(_ESP8266_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(_ESP8266_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 // ESP8266_W5500_Manager_Debug_H + diff --git a/src/ESP8266_W5500_Manager_Impl.h b/src/ESP8266_W5500_Manager_Impl.h new file mode 100644 index 0000000..1e63d46 --- /dev/null +++ b/src/ESP8266_W5500_Manager_Impl.h @@ -0,0 +1,1180 @@ +/**************************************************************************************************************************** + ESP8266_W5500_Manager_Impl.h + + For Ethernet shields using ESP8266_W5500 (ESP8266 + LwIP W5500) + + WebServer_ESP8266_W5500 is a library for the ESP8266 with Ethernet W5500 to run WebServer + + Modified from + 1. Tzapu (https://github.com/tzapu/WiFiManager) + 2. Ken Taylor (https://github.com/kentaylor) + 3. Khoi Hoang (https://github.com/khoih-prog/ESP_WiFiManager) + + Built by Khoi Hoang https://github.com/khoih-prog/ESP8266_W5500_Manager + Licensed under MIT license + + Version: 1.0.0 + + Version Modified By Date Comments + ------- ----------- ---------- ----------- + 1.0.0 K Hoang 11/12/2022 Initial coding for ESP8266_W5500 + *****************************************************************************************************************************/ + +#pragma once + +#ifndef ESP8266_W5500_Manager_Impl_h +#define ESP8266_W5500_Manager_Impl_h + +////////////////////////////////////////// + +ESP8266_EMParameter::ESP8266_EMParameter(const char *custom) +{ + _EMParam_data._id = NULL; + _EMParam_data._placeholder = NULL; + _EMParam_data._length = 0; + _EMParam_data._value = NULL; + _EMParam_data._labelPlacement = WFM_LABEL_BEFORE; + + _customHTML = custom; +} + +////////////////////////////////////////// + +ESP8266_EMParameter::ESP8266_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 +ESP8266_EMParameter::ESP8266_EMParameter(const EMParam_Data& EMParam_data) +{ + init(EMParam_data._id, EMParam_data._placeholder, EMParam_data._value, + EMParam_data._length, "", EMParam_data._labelPlacement); +} + +////////////////////////////////////////// + +void ESP8266_EMParameter::init(const char *id, const char *placeholder, const char *defaultValue, + const int& length, const char *custom, const int& labelPlacement) +{ + _EMParam_data._id = id; + _EMParam_data._placeholder = placeholder; + _EMParam_data._length = length; + _EMParam_data._labelPlacement = labelPlacement; + + _EMParam_data._value = new char[_EMParam_data._length + 1]; + + if (_EMParam_data._value != NULL) + { + memset(_EMParam_data._value, 0, _EMParam_data._length + 1); + + if (defaultValue != NULL) + { + strncpy(_EMParam_data._value, defaultValue, _EMParam_data._length); + } + } + + _customHTML = custom; +} + +////////////////////////////////////////// + +ESP8266_EMParameter::~ESP8266_EMParameter() +{ + if (_EMParam_data._value != NULL) + { + delete[] _EMParam_data._value; + } +} + +////////////////////////////////////////// + +// Using Struct to get/set whole data at once +void ESP8266_EMParameter::setEMParam_Data(const EMParam_Data& EMParam_data) +{ + LOGINFO(F("setEMParam_Data")); + + memcpy(&_EMParam_data, &EMParam_data, sizeof(_EMParam_data)); +} + +////////////////////////////////////////// + +void ESP8266_EMParameter::getEMParam_Data(EMParam_Data& EMParam_data) +{ + LOGINFO(F("getEMParam_Data")); + + memcpy(&EMParam_data, &_EMParam_data, sizeof(EMParam_data)); +} + +////////////////////////////////////////// + +const char* ESP8266_EMParameter::getValue() +{ + return _EMParam_data._value; +} + +////////////////////////////////////////// + +const char* ESP8266_EMParameter::getID() +{ + return _EMParam_data._id; +} + +////////////////////////////////////////// + +const char* ESP8266_EMParameter::getPlaceholder() +{ + return _EMParam_data._placeholder; +} + +////////////////////////////////////////// + +int ESP8266_EMParameter::getValueLength() +{ + return _EMParam_data._length; +} + +////////////////////////////////////////// + +int ESP8266_EMParameter::getLabelPlacement() +{ + return _EMParam_data._labelPlacement; +} + +////////////////////////////////////////// + +const char* ESP8266_EMParameter::getCustomHTML() +{ + return _customHTML; +} + + +////////////////////////////////////////// +////////////////////////////////////////// + +/** + [getParameters description] + @access public +*/ +ESP8266_EMParameter** ESP8266_W5500_Manager::getParameters() +{ + return _params; +} + +////////////////////////////////////////// + +/** + [getParametersCount description] + @access public +*/ +int ESP8266_W5500_Manager::getParametersCount() +{ + return _paramsCount; +} + +////////////////////////////////////////// + +char* ESP8266_W5500_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; +} + +////////////////////////////////////////// + +ESP8266_W5500_Manager::ESP8266_W5500_Manager(const char *iHostname) +{ +#if USE_DYNAMIC_PARAMS + _max_params = ETH_MANAGER_MAX_PARAMS; + _params = (ESP8266_EMParameter**) malloc(_max_params * sizeof(ESP8266_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(); +} + +////////////////////////////////////////// + +ESP8266_W5500_Manager::~ESP8266_W5500_Manager() +{ +#if USE_DYNAMIC_PARAMS + + if (_params != NULL) + { + LOGINFO(F("freeing allocated params!")); + + free(_params); + } + +#endif +} + +////////////////////////////////////////// + +#if USE_DYNAMIC_PARAMS + bool ESP8266_W5500_Manager::addParameter(ESP8266_EMParameter *p) +#else + void ESP8266_W5500_Manager::addParameter(ESP8266_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); + + ESP8266_EMParameter** new_params = (ESP8266_EMParameter**) realloc(_params, _max_params * sizeof(ESP8266_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 ESP8266_W5500_Manager::setupConfigPortal() +{ + stopConfigPortal = false; //Signal not to close config portal + + dnsServer.reset(new DNSServer()); + + server.reset(new ESP8266WebServer(HTTP_PORT_TO_USE)); + + /* Setup the DNS server redirecting all the domains to the apIP */ + if (dnsServer) + { + dnsServer->setErrorReplyCode(DNSReplyCode::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")); + } + } + else + { + // No space available + LOGERROR(F("Can't initiate DNS Server. No enough space")); + } + + _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(&ESP8266_W5500_Manager::handleRoot, this)); + server->on("/eth", std::bind(&ESP8266_W5500_Manager::handleETH, this)); + server->on("/ethsave", std::bind(&ESP8266_W5500_Manager::handleETHSave, this)); + server->on("/close", std::bind(&ESP8266_W5500_Manager::handleServerClose, this)); + server->on("/i", std::bind(&ESP8266_W5500_Manager::handleInfo, this)); + server->on("/r", std::bind(&ESP8266_W5500_Manager::handleReset, this)); + server->on("/state", std::bind(&ESP8266_W5500_Manager::handleState, this)); + //Microsoft captive portal. Maybe not needed. Might be handled by notFound handler. + server->on("/fwlink", std::bind(&ESP8266_W5500_Manager::handleRoot, this)); + server->onNotFound( std::bind(&ESP8266_W5500_Manager::handleNotFound, this)); + + server->begin(); // Web server start + + LOGWARN(F("HTTP server started")); +} + +////////////////////////////////////////// + +bool ESP8266_W5500_Manager::startConfigPortal() +{ + connect = false; + + setupConfigPortal(); + + bool TimedOut = true; + + LOGINFO("startConfigPortal : Enter loop"); + + while (true) + { + //DNS + dnsServer->processNextRequest(); + //HTTP + server->handleClient(); + + 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->stop(); + server.reset(); + dnsServer->stop(); + dnsServer.reset(); + + return (eth.connected()); +} + +////////////////////////////////////////// + +void ESP8266_W5500_Manager::setTimeout(const unsigned long& seconds) +{ + setConfigPortalTimeout(seconds); +} + +////////////////////////////////////////// + +void ESP8266_W5500_Manager::setConfigPortalTimeout(const unsigned long& seconds) +{ + _configPortalTimeout = seconds * 1000; +} + +////////////////////////////////////////// + +void ESP8266_W5500_Manager::setConnectTimeout(const unsigned long& seconds) +{ + _connectTimeout = seconds * 1000; +} + +////////////////////////////////////////// + +void ESP8266_W5500_Manager::setDebugOutput(bool debug) +{ + _debug = debug; +} + +////////////////////////////////////////// + +void ESP8266_W5500_Manager::setBreakAfterConfig(bool shouldBreak) +{ + _shouldBreakAfterConfig = shouldBreak; +} + +////////////////////////////////////////// + +void ESP8266_W5500_Manager::reportStatus(String& page) +{ + page += FPSTR(EM_HTTP_SCRIPT_NTP_MSG); +} + +////////////////////////////////////////// + +void ESP8266_W5500_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 ESP8266_W5500_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 ESP8266_W5500_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 ESP8266_W5500_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 ESP8266_W5500_Manager::handleRoot() +{ + LOGDEBUG(F("handleRoot")); + + // Disable _configPortalTimeout when someone accessing Portal to give some time to config + _configPortalTimeout = 0; + + if (captivePortal()) + { + LOGDEBUG(F("handleRoot: captive portal exit")); + + // If captive portal redirect instead of displaying the error page. + return; + } + + server->sendHeader(FPSTR(EM_HTTP_CACHE_CONTROL), FPSTR(EM_HTTP_NO_STORE)); + +#if USING_CORS_FEATURE + // For configure CORS Header, default to EM_HTTP_CORS_ALLOW_ALL = "*" + server->sendHeader(FPSTR(EM_HTTP_CORS), _CORS_Header); +#endif + + server->sendHeader(FPSTR(EM_HTTP_PRAGMA), FPSTR(EM_HTTP_NO_CACHE)); + server->sendHeader(FPSTR(EM_HTTP_EXPIRES), "-1"); + + 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_HTTP_PORTAL_OPTIONS); + page += F("
    "); + reportStatus(page); + page += F("
    "); + page += FPSTR(EM_HTTP_END); + + server->send(200, "text/html", page); +} + +////////////////////////////////////////// + +// ETH config page handler +void ESP8266_W5500_Manager::handleETH() +{ + LOGDEBUG(F("Handle ETH")); + + // Disable _configPortalTimeout when someone accessing Portal to give some time to config + _configPortalTimeout = 0; + + server->sendHeader(FPSTR(EM_HTTP_CACHE_CONTROL), FPSTR(EM_HTTP_NO_STORE)); + +#if USING_CORS_FEATURE + // For configure CORS Header, default to EM_HTTP_CORS_ALLOW_ALL = "*" + server->sendHeader(FPSTR(EM_HTTP_CORS), _CORS_Header); +#endif + + server->sendHeader(FPSTR(EM_HTTP_PRAGMA), FPSTR(EM_HTTP_NO_CACHE)); + server->sendHeader(FPSTR(EM_HTTP_EXPIRES), "-1"); + + 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); + + server->send(200, "text/html", page); + + LOGDEBUG(F("Sent config page")); +} + +////////////////////////////////////////// + +// Handle the WLAN save form and redirect to WLAN config page again +void ESP8266_W5500_Manager::handleETHSave() +{ + LOGDEBUG(F("ETH save")); + +#if USING_CORS_FEATURE + // For configuring CORS Header, default to EM_HTTP_CORS_ALLOW_ALL = "*" + server->sendHeader(FPSTR(EM_HTTP_CORS), _CORS_Header); +#endif + +#if USE_ESP_ETH_MANAGER_NTP + + if (server->arg("timezone") != "") + { + _timezoneName = server->arg("timezone"); + LOGDEBUG1(F("TZ name ="), _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 = server->arg(_params[i]->getID()).c_str(); + + //store it in array + value.toCharArray(_params[i]->_EMParam_data._value, _params[i]->_EMParam_data._length); + + LOGDEBUG2(F("Parameter and value :"), _params[i]->getID(), value); + } + + + if (server->arg("ip") != "") + { + String ip = server->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 (server->arg("gw") != "") + { + String gw = server->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 (server->arg("sn") != "") + { + String sn = server->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 (server->arg("dns1") != "") + { + String dns1 = server->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 (server->arg("dns2") != "") + { + String dns2 = server->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); + + server->send(200, "text/html", page); + + LOGDEBUG(F("Sent eth save page")); + + connect = true; //signal ready to connect/reset + + stopConfigPortal = true; //signal ready to shutdown config portal + + // Restore when Press Save WiFi + _configPortalTimeout = DEFAULT_PORTAL_TIMEOUT; +} + +////////////////////////////////////////// + +// Handle shut down the server page +void ESP8266_W5500_Manager::handleServerClose() +{ + LOGDEBUG(F("Server Close")); + + server->sendHeader(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 = "*" + server->sendHeader(FPSTR(EM_HTTP_CORS), _CORS_Header); +#endif + + server->sendHeader(FPSTR(EM_HTTP_PRAGMA), FPSTR(EM_HTTP_NO_CACHE)); + server->sendHeader(FPSTR(EM_HTTP_EXPIRES), "-1"); + + 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 += FPSTR(EM_HTTP_END); + + server->send(200, "text/html", page); + + stopConfigPortal = true; //signal ready to shutdown config portal + + LOGDEBUG(F("Sent server close page")); + + // Restore when Press Save WiFi + _configPortalTimeout = DEFAULT_PORTAL_TIMEOUT; +} + +////////////////////////////////////////// + +// Handle the info page +void ESP8266_W5500_Manager::handleInfo() +{ + LOGDEBUG(F("Info")); + + // Disable _configPortalTimeout when someone accessing Portal to give some time to config + _configPortalTimeout = 0; + + server->sendHeader(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 = "*" + server->sendHeader(FPSTR(EM_HTTP_CORS), _CORS_Header); +#endif + + server->sendHeader(FPSTR(EM_HTTP_PRAGMA), FPSTR(EM_HTTP_NO_CACHE)); + server->sendHeader(FPSTR(EM_HTTP_EXPIRES), "-1"); + + 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); //ESP.getFlashChipId(); + + 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 ESP8266_W5500_Manager at"); + page += F("

    https://github.com/khoih-prog/ESP8266_W5500_Manager"); + page += FPSTR(EM_HTTP_END); + + server->send(200, "text/html", page); + + LOGDEBUG(F("Sent info page")); +} + +////////////////////////////////////////// + +// Handle the state page +void ESP8266_W5500_Manager::handleState() +{ + LOGDEBUG(F("State-Json")); + + server->sendHeader(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 = "*" + server->sendHeader(FPSTR(EM_HTTP_CORS), _CORS_Header); +#endif + + server->sendHeader(FPSTR(EM_HTTP_PRAGMA), FPSTR(EM_HTTP_NO_CACHE)); + server->sendHeader(FPSTR(EM_HTTP_EXPIRES), "-1"); + + String page = F("{\"Station_IP\":\""); + page += F("\",\"Station_MAC\":\""); + page += F("\"}"); + + server->send(200, "application/json", page); + + LOGDEBUG(F("Sent state page in json format")); +} + +////////////////////////////////////////// + +// Handle the reset page +void ESP8266_W5500_Manager::handleReset() +{ + LOGDEBUG(F("Reset")); + + server->sendHeader("Cache-Control", "no-cache, no-store, must-revalidate"); + server->sendHeader("Pragma", "no-cache"); + server->sendHeader("Expires", "-1"); + + String page = FPSTR(EM_HTTP_HEAD_START); + + page.replace("{v}", "ETH 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); + + server->send(200, "text/html", page); + + LOGDEBUG(F("Sent reset page")); + delay(5000); + + ESP.reset(); + + delay(2000); +} + +////////////////////////////////////////// + +void ESP8266_W5500_Manager::handleNotFound() +{ + if (captivePortal()) + { + 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 += server->uri(); + message += "\nMethod: "; + message += (server->method() == HTTP_GET) ? "GET" : "POST"; + message += "\nArguments: "; + message += server->args(); + message += "\n"; + + for (uint8_t i = 0; i < server->args(); i++) + { + message += " " + server->argName(i) + ": " + server->arg(i) + "\n"; + } + + server->sendHeader("Cache-Control", "no-cache, no-store, must-revalidate"); + server->sendHeader("Pragma", "no-cache"); + server->sendHeader("Expires", "-1"); + + server->send(404, "text/plain", message); +} + +////////////////////////////////////////// + +/** + 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 ESP8266_W5500_Manager::captivePortal() +{ + LOGDEBUG1(F("captivePortal: hostHeader = "), server->hostHeader()); + + if (!isIp(server->hostHeader())) + { + LOGINFO1(F("Request redirected to captive portal : "), server->client().localIP()); + + server->sendHeader(F("Location"), (String)F("http://") + toStringIp(server->client().localIP()), true); + + // Empty content inhibits Content-length header so we have to close the socket ourselves. + server->send(302, FPSTR(EM_HTTP_HEAD_CT2), ""); + + server->client().stop(); // Stop is needed because we sent no content length + + return true; + } + + return false; +} + +////////////////////////////////////////// + +// start up save config callback +void ESP8266_W5500_Manager::setSaveConfigCallback(void(*func)()) +{ + _savecallback = func; +} + +////////////////////////////////////////// + +// sets a custom element to add to head, like a new style tag +void ESP8266_W5500_Manager::setCustomHeadElement(const char* element) +{ + _customHeadElement = element; +} + +////////////////////////////////////////// + +// Is this an IP? +bool ESP8266_W5500_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 ESP8266_W5500_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 // ESP8266_W5500_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 +

-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 bTcrO3aTg>i|DHbE00000NkvXXu0mjf(cl1P literal 0 HcmV?d00001 diff --git a/changelog.md b/changelog.md new file mode 100644 index 0000000..b3514a3 --- /dev/null +++ b/changelog.md @@ -0,0 +1,33 @@ +# ESP8266_W5500_Manager Library + +[![arduino-library-badge](https://www.ardu-badge.com/badge/ESP8266_W5500_Manager.svg?)](https://www.ardu-badge.com/ESP8266_W5500_Manager) +[![GitHub release](https://img.shields.io/github/release/khoih-prog/ESP8266_W5500_Manager.svg)](https://github.com/khoih-prog/ESP8266_W5500_Manager/releases) +[![GitHub](https://img.shields.io/github/license/mashape/apistatus.svg)](https://github.com/khoih-prog/ESP8266_W5500_Manager/blob/main/LICENSE) +[![contributions welcome](https://img.shields.io/badge/contributions-welcome-brightgreen.svg?style=flat)](#Contributing) +[![GitHub issues](https://img.shields.io/github/issues/khoih-prog/ESP8266_W5500_Manager.svg)](http://github.com/khoih-prog/ESP8266_W5500_Manager/issues) + +Donate 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 `synchronous` [ESP_WiFiManager](https://github.com/khoih-prog/ESP_WiFiManager) to ESP8266 boards using `LwIP W5500 Ethernet`. +2. Use `allman astyle` + + diff --git a/examples/ConfigOnDoubleReset/ConfigOnDoubleReset.ino b/examples/ConfigOnDoubleReset/ConfigOnDoubleReset.ino new file mode 100644 index 0000000..e73e557 --- /dev/null +++ b/examples/ConfigOnDoubleReset/ConfigOnDoubleReset.ino @@ -0,0 +1,665 @@ +/**************************************************************************************************************************** + ConfigOnDoubleReset.ino + For Ethernet shields using ESP8266_W5500 (ESP8266 + LwIP W5500) + + WebServer_ESP8266_W5500 is a library for the ESP8266 with Ethernet W5500 to run WebServer + + Modified from + 1. Tzapu (https://github.com/tzapu/WiFiManager) + 2. Ken Taylor (https://github.com/kentaylor) + 3. Khoi Hoang (https://github.com/khoih-prog/ESP_WiFiManager) + + Built by Khoi Hoang https://github.com/khoih-prog/ESP8266_W5500_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 ESP8266, 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 + LwIP W5500) platform! Please check your Tools->Board setting. +#endif + +// Use from 0 to 4. Higher number, more debugging messages and memory usage. +#define _ESP8266_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 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 (_ESP8266_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 (_ESP8266_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/ESP8266_W5500_Manager + +#define HTTP_PORT 80 + +/////////////////////////////////////////// + +/****************************************** + // Defined in ESP8266_W5500_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 ConfigOnDoubleReset using ")); + Serial.print(FS_Name); + Serial.print(F(" on ")); + Serial.print(ARDUINO_BOARD); + Serial.print(F(" with ")); + Serial.println(SHIELD_TYPE); + Serial.println(ESP8266_W5500_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 + //ESP8266_W5500_Manager ESP8266_W5500_manager; + // Use this to personalize DHCP hostname (RFC952 conformed) + ESP8266_W5500_Manager ESP8266_W5500_manager("ConfigOnDoubleReset"); + +#if !USE_DHCP_IP + // Set (static IP, Gateway, Subnetmask, DNS1 and DNS2) or (IP, Gateway, Subnetmask) + ESP8266_W5500_manager.setSTAStaticIPConfig(EthSTA_IPconfig); +#endif + +#if USING_CORS_FEATURE + ESP8266_W5500_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. + ESP8266_W5500_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 + } + + ////////////////////////////////// + + // Connect ETH now if using STA + initEthernet(); + + ////////////////////////////////// + + if (drd->detectDoubleReset()) + { + // DRD, disable timeout. + ESP8266_W5500_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. + //ESP8266_W5500_manager.setConfigPortalTimeout(600); + + // Starts an access point + if (!ESP8266_W5500_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 = ESP8266_W5500_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 = ESP8266_W5500_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 + + ESP8266_W5500_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/ConfigOnDoubleReset_TZ/ConfigOnDoubleReset_TZ.ino b/examples/ConfigOnDoubleReset_TZ/ConfigOnDoubleReset_TZ.ino new file mode 100644 index 0000000..11fa781 --- /dev/null +++ b/examples/ConfigOnDoubleReset_TZ/ConfigOnDoubleReset_TZ.ino @@ -0,0 +1,676 @@ +/**************************************************************************************************************************** + ConfigOnDoubleReset_TZ.ino + For Ethernet shields using ESP8266_W5500 (ESP8266 + LwIP W5500) + + WebServer_ESP8266_W5500 is a library for the ESP8266 with Ethernet W5500 to run WebServer + + Modified from + 1. Tzapu (https://github.com/tzapu/WiFiManager) + 2. Ken Taylor (https://github.com/kentaylor) + 3. Khoi Hoang (https://github.com/khoih-prog/ESP_WiFiManager) + + Built by Khoi Hoang https://github.com/khoih-prog/ESP8266_W5500_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 ESP8266, 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 + LwIP W5500) platform! Please check your Tools->Board setting. +#endif + +// Use from 0 to 4. Higher number, more debugging messages and memory usage. +#define _ESP8266_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 + +// 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 (_ESP8266_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 (_ESP8266_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/ESP8266_W5500_Manager + +#define HTTP_PORT 80 + +////////////////////////////////////////////////////////////// + +/****************************************** + // Defined in ESP8266_W5500_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 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(ESP8266_W5500_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 + //ESP8266_W5500_Manager ESP8266_W5500_manager; + // Use this to personalize DHCP hostname (RFC952 conformed) + ESP8266_W5500_Manager ESP8266_W5500_manager("ConfigOnDoubleReset_TZ"); + +#if !USE_DHCP_IP + // Set (static IP, Gateway, Subnetmask, DNS1 and DNS2) or (IP, Gateway, Subnetmask) + ESP8266_W5500_manager.setSTAStaticIPConfig(EthSTA_IPconfig); +#endif + +#if USING_CORS_FEATURE + ESP8266_W5500_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. + ESP8266_W5500_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. + ESP8266_W5500_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. + //ESP8266_W5500_manager.setConfigPortalTimeout(600); + + // Starts an access point + if (!ESP8266_W5500_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 = ESP8266_W5500_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 = ESP8266_W5500_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 + + ESP8266_W5500_manager.getSTAStaticIPConfig(EthSTA_IPconfig); + + saveConfigData(); + } + + 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/ConfigOnSwitch/ConfigOnSwitch.ino b/examples/ConfigOnSwitch/ConfigOnSwitch.ino new file mode 100644 index 0000000..b650c83 --- /dev/null +++ b/examples/ConfigOnSwitch/ConfigOnSwitch.ino @@ -0,0 +1,786 @@ +/**************************************************************************************************************************** + ConfigOnSwitch.ino + For Ethernet shields using ESP8266_W5500 (ESP8266 + LwIP W5500) + + WebServer_ESP8266_W5500 is a library for the ESP8266 with Ethernet W5500 to run WebServer + + Modified from + 1. Tzapu (https://github.com/tzapu/WiFiManager) + 2. Ken Taylor (https://github.com/kentaylor) + 3. Khoi Hoang (https://github.com/khoih-prog/ESP_WiFiManager) + + Built by Khoi Hoang https://github.com/khoih-prog/ESP8266_W5500_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 + LwIP W5500) platform! Please check your Tools->Board setting. +#endif + +////////////////////////////////////////////////////////////// + +// Use from 0 to 4. Higher number, more debugging messages and memory usage. +#define _ESP8266_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 + +// 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 (_ESP8266_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 (_ESP8266_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/ESP8266_W5500_Manager + +#define HTTP_PORT 80 + +////////////////////////////////////////////////////////////// + +/****************************************** + // Defined in ESP8266_W5500_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 ConfigOnSwitch using ")); + Serial.print(FS_Name); + Serial.print(F(" on ")); + Serial.print(ARDUINO_BOARD); + Serial.print(F(" with ")); + Serial.println(SHIELD_TYPE); + Serial.println(ESP8266_W5500_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 ESP8266-XXXXXX + //ESP8266_W5500_Manager ESP8266_W5500_manager; + // Use this to personalize DHCP hostname (RFC952 conformed) + ESP8266_W5500_Manager ESP8266_W5500_manager("ConfigOnSwitch"); + + ESP8266_W5500_manager.setDebugOutput(true); + +#if !USE_DHCP_IP + // Set (static IP, Gateway, Subnetmask, DNS1 and DNS2) or (IP, Gateway, Subnetmask) + ESP8266_W5500_manager.setSTAStaticIPConfig(EthSTA_IPconfig); +#endif + +#if USING_CORS_FEATURE + ESP8266_W5500_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. + ESP8266_W5500_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. + //ESP8266_W5500_manager.setConfigPortalTimeout(600); + + // Starts an access point + if (!ESP8266_W5500_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 = ESP8266_W5500_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 = ESP8266_W5500_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 + + ESP8266_W5500_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 ESP8266-XXXXXX + //ESP8266_W5500_Manager ESP8266_W5500_manager; + // Use this to personalize DHCP hostname (RFC952 conformed) + ESP8266_W5500_Manager ESP8266_W5500_manager("ConfigOnSwitch"); + +#if !USE_DHCP_IP +#if USE_CONFIGURABLE_DNS + // Set static IP, Gateway, Subnetmask, DNS1 and DNS2 + ESP8266_W5500_manager.setSTAStaticIPConfig(stationIP, gatewayIP, netMask, dns1IP, dns2IP); +#else + // Set static IP, Gateway, Subnetmask, Use auto DNS1 and DNS2. + ESP8266_W5500_manager.setSTAStaticIPConfig(stationIP, gatewayIP, netMask); +#endif +#endif + +#if USING_CORS_FEATURE + ESP8266_W5500_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()) + { + //If no access point name has been previously entered disable timeout. + ESP8266_W5500_manager.setConfigPortalTimeout(120); + + Serial.println(F("Got stored Credentials. Timeout 120s for Config Portal")); + } + else + { + // Enter CP only if no stored SSID on flash and file + ESP8266_W5500_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 (!ESP8266_W5500_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 = ESP8266_W5500_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 = ESP8266_W5500_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 + + ESP8266_W5500_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/ConfigOnSwitchFS/ConfigOnSwitchFS.ino b/examples/ConfigOnSwitchFS/ConfigOnSwitchFS.ino new file mode 100644 index 0000000..001cc93 --- /dev/null +++ b/examples/ConfigOnSwitchFS/ConfigOnSwitchFS.ino @@ -0,0 +1,995 @@ +/**************************************************************************************************************************** + ConfigOnSwitchFS.ino + For Ethernet shields using ESP8266_W5500 (ESP8266 + LwIP W5500) + + WebServer_ESP8266_W5500 is a library for the ESP8266 with Ethernet W5500 to run WebServer + + Modified from + 1. Tzapu (https://github.com/tzapu/WiFiManager) + 2. Ken Taylor (https://github.com/kentaylor) + 3. Khoi Hoang (https://github.com/khoih-prog/ESP_WiFiManager) + + Built by Khoi Hoang https://github.com/khoih-prog/ESP8266_W5500_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 ESP8266, 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 + LwIP W5500) platform! Please check your Tools->Board setting. +#endif + +////////////////////////////////////////////////////////////// + +// Use from 0 to 4. Higher number, more debugging messages and memory usage. +#define _ESP8266_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 (_ESP8266_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 (_ESP8266_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/ESP8266_W5500_Manager + +#define HTTP_PORT 80 + +////////////////////////////////////////////////////////////// + +/****************************************** + // Defined in ESP8266_W5500_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 ConfigOnSwichFS using ")); + Serial.print(FS_Name); + Serial.print(F(" on ")); + Serial.print(ARDUINO_BOARD); + Serial.print(F(" with ")); + Serial.println(SHIELD_TYPE); + Serial.println(ESP8266_W5500_MANAGER_VERSION); + + // Initialize the LED digital pin as an output. + pinMode(LED_BUILTIN, 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 ESP8266-XXXXXX + //ESP8266_W5500_Manager ESP8266_W5500_manager; + // Use this to personalize DHCP hostname (RFC952 conformed) + ESP8266_W5500_Manager ESP8266_W5500_manager("ConfigOnSwitchFS"); + + ESP8266_W5500_manager.setDebugOutput(true); + +#if !USE_DHCP_IP + // Set (static IP, Gateway, Subnetmask, DNS1 and DNS2) or (IP, Gateway, Subnetmask) + ESP8266_W5500_manager.setSTAStaticIPConfig(EthSTA_IPconfig); +#endif + +#if USING_CORS_FEATURE + ESP8266_W5500_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. + ESP8266_W5500_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. + //ESP8266_W5500_manager.setConfigPortalTimeout(600); + + // Starts an access point + if (!ESP8266_W5500_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 = ESP8266_W5500_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 = ESP8266_W5500_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 + + ESP8266_W5500_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 ESP8266-XXXXXX + //ESP8266_W5500_Manager ESP8266_W5500_manager; + // Use this to personalize DHCP hostname (RFC952 conformed) + ESP8266_W5500_Manager ESP8266_W5500_manager("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()) + { + //If no access point name has been previously entered disable timeout. + ESP8266_W5500_manager.setConfigPortalTimeout(120); + + 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: