From ac3e2ab3e1fe97861bbaee7be10492a1cdf56f8c Mon Sep 17 00:00:00 2001 From: Khoi Hoang <57012152+khoih-prog@users.noreply.github.com> Date: Thu, 15 Dec 2022 23:59:18 -0500 Subject: [PATCH] v1.0.0 for `ESP32_S3 + LwIP ENC28J60` #### Releases v1.0.0 1. Initial coding to port `synchronous` [ESP_WiFiManager](https://github.com/khoih-prog/ESP_WiFiManager) to `ESP32_S2/S3/C3` boards using `LwIP ENC28J60 Ethernet`. 2. Use `allman astyle` --- .codespellrc | 7 + CONTRIBUTING.md | 80 + Images/Configuration_AIO_MQTT.png | Bin 0 -> 36319 bytes Images/Configuration_Standard.png | Bin 0 -> 17154 bytes Images/ENC28J60.png | Bin 0 -> 143496 bytes Images/ESP32S3_DEV.png | Bin 0 -> 300581 bytes Images/Info.png | Bin 0 -> 69245 bytes Images/Main.png | Bin 0 -> 13218 bytes Images/Saved.png | Bin 0 -> 2478 bytes changelog.md | 33 + .../ConfigOnDoubleReset.ino | 723 ++++++++ .../ConfigOnDoubleReset_TZ.ino | 750 ++++++++ examples/ConfigOnSwitch/ConfigOnSwitch.ino | 908 ++++++++++ .../ConfigOnSwitchFS/ConfigOnSwitchFS.ino | 1115 ++++++++++++ .../ConfigPortalParamsOnSwitch.ino | 1011 +++++++++++ .../ESP32_FSWebServer/ESP32_FSWebServer.ino | 1058 ++++++++++++ examples/ESP32_FSWebServer/README.md | 69 + .../ESP32_FSWebServer/data/CanadaFlag_1.png | Bin 0 -> 41214 bytes .../ESP32_FSWebServer/data/CanadaFlag_2.png | Bin 0 -> 8311 bytes .../ESP32_FSWebServer/data/CanadaFlag_3.jpg | Bin 0 -> 11156 bytes examples/ESP32_FSWebServer/data/edit.htm.gz | Bin 0 -> 4116 bytes examples/ESP32_FSWebServer/data/favicon.ico | Bin 0 -> 1150 bytes examples/ESP32_FSWebServer/data/graphs.js.gz | Bin 0 -> 1971 bytes examples/ESP32_FSWebServer/data/index.htm | 97 ++ .../ESP32_FSWebServer/pics/esp32fs.local.png | Bin 0 -> 20520 bytes .../pics/esp32fs.local_edit.png | Bin 0 -> 76964 bytes .../ESP32_FSWebServer_DRD.ino | 1112 ++++++++++++ examples/ESP32_FSWebServer_DRD/README.md | 70 + .../data/CanadaFlag_1.png | Bin 0 -> 41214 bytes .../data/CanadaFlag_2.png | Bin 0 -> 8311 bytes .../data/CanadaFlag_3.jpg | Bin 0 -> 11156 bytes .../ESP32_FSWebServer_DRD/data/edit.htm.gz | Bin 0 -> 4116 bytes .../ESP32_FSWebServer_DRD/data/favicon.ico | Bin 0 -> 1150 bytes .../ESP32_FSWebServer_DRD/data/graphs.js.gz | Bin 0 -> 1971 bytes examples/ESP32_FSWebServer_DRD/data/index.htm | 97 ++ .../pics/esp32fs.local.png | Bin 0 -> 20520 bytes .../pics/esp32fs.local_edit.png | Bin 0 -> 76964 bytes keywords.txt | 92 + library.json | 44 + library.properties | 12 + platformio/platformio.ini | 165 ++ src/ESP32_SC_ENC_Manager.h | 30 + src/ESP32_SC_ENC_Manager.hpp | 628 +++++++ src/ESP32_SC_ENC_Manager_Debug.h | 89 + src/ESP32_SC_ENC_Manager_Impl.h | 1217 +++++++++++++ src/utils/TZ.h | 1526 +++++++++++++++++ travis/common.sh | 51 + utils/astyle_library.conf | 70 + utils/restyle.sh | 6 + 49 files changed, 11060 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/ENC28J60.png create mode 100644 Images/ESP32S3_DEV.png create mode 100644 Images/Info.png create mode 100644 Images/Main.png create mode 100644 Images/Saved.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/ESP32_FSWebServer/ESP32_FSWebServer.ino create mode 100644 examples/ESP32_FSWebServer/README.md create mode 100644 examples/ESP32_FSWebServer/data/CanadaFlag_1.png create mode 100644 examples/ESP32_FSWebServer/data/CanadaFlag_2.png create mode 100644 examples/ESP32_FSWebServer/data/CanadaFlag_3.jpg create mode 100644 examples/ESP32_FSWebServer/data/edit.htm.gz create mode 100644 examples/ESP32_FSWebServer/data/favicon.ico create mode 100644 examples/ESP32_FSWebServer/data/graphs.js.gz create mode 100644 examples/ESP32_FSWebServer/data/index.htm create mode 100644 examples/ESP32_FSWebServer/pics/esp32fs.local.png create mode 100644 examples/ESP32_FSWebServer/pics/esp32fs.local_edit.png create mode 100644 examples/ESP32_FSWebServer_DRD/ESP32_FSWebServer_DRD.ino create mode 100644 examples/ESP32_FSWebServer_DRD/README.md create mode 100644 examples/ESP32_FSWebServer_DRD/data/CanadaFlag_1.png create mode 100644 examples/ESP32_FSWebServer_DRD/data/CanadaFlag_2.png create mode 100644 examples/ESP32_FSWebServer_DRD/data/CanadaFlag_3.jpg create mode 100644 examples/ESP32_FSWebServer_DRD/data/edit.htm.gz create mode 100644 examples/ESP32_FSWebServer_DRD/data/favicon.ico create mode 100644 examples/ESP32_FSWebServer_DRD/data/graphs.js.gz create mode 100644 examples/ESP32_FSWebServer_DRD/data/index.htm create mode 100644 examples/ESP32_FSWebServer_DRD/pics/esp32fs.local.png create mode 100644 examples/ESP32_FSWebServer_DRD/pics/esp32fs.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/ESP32_SC_ENC_Manager.h create mode 100644 src/ESP32_SC_ENC_Manager.hpp create mode 100644 src/ESP32_SC_ENC_Manager_Debug.h create mode 100644 src/ESP32_SC_ENC_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..8b2e519 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,80 @@ +## Contributing to ESP32_SC_ENC_Manager + +### Reporting Bugs + +Please report bugs in ESP32_SC_ENC_Manager if you find them. + +However, before reporting a bug please check through the following: + +* [Existing Open Issues](https://github.com/khoih-prog/ESP32_SC_ENC_Manager/issues) - someone might have already encountered this. + +If you don't find anything, please [open a new issue](https://github.com/khoih-prog/ESP32_SC_ENC_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 Type (e.g. ESP32S3_DEV, ESP32S2_DEV, ESP32C3_DEV) +* Board Core Version (e.g. ESP32 core v2.0.5) +* 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 +ESP32S3_DEV board +ESP32 core v2.0.5 +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/ESP32_SC_ENC_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/ESP32_SC_ENC_Manager_GitHub/ +xy@xy-Inspiron-3593:~/Arduino/xy/ESP32_SC_ENC_Manager_GitHub$ +``` + +2. Issue astyle command + +``` +xy@xy-Inspiron-3593:~/Arduino/xy/ESP32_SC_ENC_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/ENC28J60.png b/Images/ENC28J60.png new file mode 100644 index 0000000000000000000000000000000000000000..dfaf18b92ab43cc71831124739ef2c30be7a32f1 GIT binary patch literal 143496 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℘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ⅆRSb7`lpe75cFB(BH}0 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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 ESP32_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 [ESP32_FSWebServer data](https://github.com/khoih-prog/ESP32_ENC_Manager/tree/main/examples/ESP32_FSWebServer/data) to a local folder, for example: + +``` +~/Arduino/libraries/ESP32_ENC_Manager-main/examples/ESP32_FSWebServer/data +``` + +### HOWTO Upload files to ESP32 (SPIFFS or FFat) + +Use one of these methods (preferable first) + +1. Go to http://esp32fs.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 upload the contents of a folder by running the following commands: +``` +Ubuntu$ cd ~/Arduino/libraries/ESP32_ENC_Manager-main/examples/ESP32_FSWebServer/data +Ubuntu$ for file in \`\ls -A1\`; do curl -F "file=@$PWD/$file" http://esp32fs.local/edit; done +``` + +--- + +### Demonstrating pictures + +

+ +

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

+ +

+ + diff --git a/examples/ESP32_FSWebServer/data/CanadaFlag_1.png b/examples/ESP32_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/ESP32_FSWebServer/data/CanadaFlag_2.png b/examples/ESP32_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/ESP32_FSWebServer/data/edit.htm.gz b/examples/ESP32_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/ESP32_FSWebServer/data/graphs.js.gz b/examples/ESP32_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/ESP32_FSWebServer/data/index.htm b/examples/ESP32_FSWebServer/data/index.htm new file mode 100644 index 0000000..9cb560c --- /dev/null +++ b/examples/ESP32_FSWebServer/data/index.htm @@ -0,0 +1,97 @@ + + + + + + ESP Monitor + + + + +
+ + + + +
+
+
+
+ + \ No newline at end of file diff --git a/examples/ESP32_FSWebServer/pics/esp32fs.local.png b/examples/ESP32_FSWebServer/pics/esp32fs.local.png new file mode 100644 index 0000000000000000000000000000000000000000..05e9f2474a25de0c6111edc9a26040d4b430b5d6 GIT binary patch literal 20520 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 T6qn6}hxb-a6;Lem;q(6mKu|tN literal 0 HcmV?d00001 diff --git a/examples/ESP32_FSWebServer/pics/esp32fs.local_edit.png b/examples/ESP32_FSWebServer/pics/esp32fs.local_edit.png new file mode 100644 index 0000000000000000000000000000000000000000..7deb17a4b9445b89f4c0e9836cdd83774429e06f GIT binary patch literal 76964 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 E1&k*zmjD0& literal 0 HcmV?d00001 diff --git a/examples/ESP32_FSWebServer_DRD/ESP32_FSWebServer_DRD.ino b/examples/ESP32_FSWebServer_DRD/ESP32_FSWebServer_DRD.ino new file mode 100644 index 0000000..0808f8f --- /dev/null +++ b/examples/ESP32_FSWebServer_DRD/ESP32_FSWebServer_DRD.ino @@ -0,0 +1,1112 @@ +/**************************************************************************************************************************** + ESP32_FSWebServer_DRD - Example WebServer with SPIFFS backend for ESP32 + For Ethernet shields using ESP32_SC_ENC (ESP32_S2/S3/C3 + LwIP ENC28J60) + + 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/ESP32_SC_ENC_Manager + Licensed under MIT license + *****************************************************************************************************************************/ +/***************************************************************************************************************************** + How To Upload Files: + 1) Go to http://async-esp32fs.local/edit, then "Choose file" -> "Upload" + 2) or Upload the contents of the data folder with MkSPIFFS Tool ("ESP8266 Sketch Data Upload" in Tools menu in Arduino IDE) + 3) or you can upload the contents of a folder if you CD in that folder and run the following command: + for file in `\ls -A1`; do curl -F "file=@$PWD/$file" esp8266fs.local/edit; done + + How To Use: + 1) access the sample web page at http://async-esp32fs.local + 2) edit the page by going to http://async-esp32fs.local/edit + 3. Use configurable user/password to login. Default is admin/admin +*****************************************************************************************************************************/ + +#if !( defined(ESP32) ) + #error This code is designed for (ESP32_S2/3, ESP32_C3 + ENC28J60) to run on ESP32 platform! Please check your Tools->Board setting. +#endif + +////////////////////////////////////////////////////////////// + +// Use from 0 to 4. Higher number, more debugging messages and memory usage. +#define _ESP32_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 + +////////////////////////////////////////////////////////////// + +// Enter a MAC address and IP address for your controller below. +#define NUMBER_OF_MAC 20 + +byte mac[][NUMBER_OF_MAC] = +{ + { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0x01 }, + { 0xDE, 0xAD, 0xBE, 0xEF, 0xBE, 0x02 }, + { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0x03 }, + { 0xDE, 0xAD, 0xBE, 0xEF, 0xBE, 0x04 }, + { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0x05 }, + { 0xDE, 0xAD, 0xBE, 0xEF, 0xBE, 0x06 }, + { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0x07 }, + { 0xDE, 0xAD, 0xBE, 0xEF, 0xBE, 0x08 }, + { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0x09 }, + { 0xDE, 0xAD, 0xBE, 0xEF, 0xBE, 0x0A }, + { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0x0B }, + { 0xDE, 0xAD, 0xBE, 0xEF, 0xBE, 0x0C }, + { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0x0D }, + { 0xDE, 0xAD, 0xBE, 0xEF, 0xBE, 0x0E }, + { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0x0F }, + { 0xDE, 0xAD, 0xBE, 0xEF, 0xBE, 0x10 }, + { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0x11 }, + { 0xDE, 0xAD, 0xBE, 0xEF, 0xBE, 0x12 }, + { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0x13 }, + { 0xDE, 0xAD, 0xBE, 0xEF, 0xBE, 0x14 }, +}; + +////////////////////////////////////////////////////////// + +// For ENC28J60 & ESP32-S3 +// Optional values to override default settings +// Don't change unless you know what you're doing +//#define SPI_HOST SPI2_HOST +//#define SPI_CLOCK_MHZ 8 + +// Must connect INT to GPIOxx or not working +//#define INT_GPIO 4 + +//#define MISO_GPIO 13 +//#define MOSI_GPIO 11 +//#define SCK_GPIO 12 +//#define CS_GPIO 10 + +////////////////////////////////////////////////////////// + +#include + +#include + +////////////////////////////////////////////////////////////// + +// You only need to format the filesystem once +//#define FORMAT_FILESYSTEM true +#define FORMAT_FILESYSTEM false + +////////////////////////////////////////////////////////////// + +// LittleFS has higher priority than SPIFFS +#if ( defined(ESP_ARDUINO_VERSION_MAJOR) && (ESP_ARDUINO_VERSION_MAJOR >= 2) ) + #define USE_LITTLEFS true + #define USE_SPIFFS false +#elif defined(ARDUINO_ESP32C3_DEV) + // For core v1.0.6-, ESP32-C3 only supporting SPIFFS and EEPROM. To use v2.0.0+ for LittleFS + #define USE_LITTLEFS false + #define USE_SPIFFS true +#endif + +#if USE_LITTLEFS + // Use LittleFS + #include "FS.h" + + // Check cores/esp32/esp_arduino_version.h and cores/esp32/core_version.h + //#if ( ESP_ARDUINO_VERSION >= ESP_ARDUINO_VERSION_VAL(2, 0, 0) ) //(ESP_ARDUINO_VERSION_MAJOR >= 2) + #if ( defined(ESP_ARDUINO_VERSION_MAJOR) && (ESP_ARDUINO_VERSION_MAJOR >= 2) ) + #if (_ESP32_ETH_MGR_LOGLEVEL_ > 3) + #warning Using ESP32 Core 1.0.6 or 2.0.0+ + #endif + + // The library has been merged into esp32 core from release 1.0.6 + #include // https://github.com/espressif/arduino-esp32/tree/master/libraries/LittleFS + + FS* filesystem = &LittleFS; + #define FileFS LittleFS + #define FS_Name "LittleFS" + #else + #if (_ESP32_ETH_MGR_LOGLEVEL_ > 3) + #warning Using ESP32 Core 1.0.5-. You must install LITTLEFS library + #endif + + // The library has been merged into esp32 core from release 1.0.6 + #include // https://github.com/lorol/LITTLEFS + + FS* filesystem = &LITTLEFS; + #define FileFS LITTLEFS + #define FS_Name "LittleFS" + #endif + +#elif USE_SPIFFS + #include + FS* filesystem = &SPIFFS; + #define FileFS SPIFFS + #define FS_Name "SPIFFS" +#else + // Use FFat + #include + FS* filesystem = &FFat; + #define FileFS FFat + #define FS_Name "FFat" +#endif + +#define LED_BUILTIN 2 +#define LED_ON HIGH +#define LED_OFF LOW + +#include + +////////////////////////////////////////////////////////////// + +// 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 +#if USE_LITTLEFS + #define ESP_DRD_USE_LITTLEFS true + #define ESP_DRD_USE_SPIFFS false + #define ESP_DRD_USE_EEPROM false +#elif USE_SPIFFS + #define ESP_DRD_USE_LITTLEFS false + #define ESP_DRD_USE_SPIFFS true + #define ESP_DRD_USE_EEPROM false +#else + #define ESP_DRD_USE_LITTLEFS false + #define ESP_DRD_USE_SPIFFS false + #define ESP_DRD_USE_EEPROM true +#endif + +#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 = NULL; + +////////////////////////////////////////////////////////////// + +// 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 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 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 (_ESP32_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 (_ESP32_ETH_MGR_LOGLEVEL_ > 3) + #warning Using static IP + #endif + + IPAddress stationIP = IPAddress(192, 168, 2, 232); + IPAddress gatewayIP = IPAddress(192, 168, 2, 1); + IPAddress netMask = IPAddress(255, 255, 255, 0); +#endif + +////////////////////////////////////////////////////////////// + +#define USE_CONFIGURABLE_DNS true + +IPAddress dns1IP = gatewayIP; +IPAddress dns2IP = IPAddress(8, 8, 8, 8); + +////////////////////////////////////////////////////////////// + +// To eliminate WebServer.h conflicts when using AsyncWebServer +#define WEBSERVER_H + +#include //https://github.com/khoih-prog/ESP32_SC_ENC_Manager + +const char* host = "esp32-fs-browser"; + +#define HTTP_PORT 80 + +WebServer server(HTTP_PORT); + +//holds the current upload +File fsUploadFile; + +String http_username = "admin"; +String http_password = "admin"; + +String separatorLine = "==============================================================="; + +////////////////////////////////////////////////////////////// + +/****************************************** + // Defined in ESP32_SC_ENC_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); + + File root = filesystem->open(path); + path = String(); + + String output = "["; + + if (root.isDirectory()) + { + File file = root.openNextFile(); + + while (file) + { + if (output != "[") + { + output += ','; + } + + output += "{\"type\":\""; + output += (file.isDirectory()) ? "dir" : "file"; + output += "\",\"name\":\""; + //output += String(file.name()).substring(1); + output += String(file.name()).substring(0); + output += "\"}"; + file = root.openNextFile(); + } + } + + output += "]"; + + Serial.println("handleFileList: " + 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() +{ + struct tm timeinfo; + + getLocalTime( &timeinfo ); + + // Valid only if year > 2000. + // You can get from timeinfo : tm_year, tm_mon, tm_mday, tm_hour, tm_min, tm_sec + if (timeinfo.tm_year > 100 ) + { + Serial.print("Local Date/Time: "); + Serial.print( asctime( &timeinfo ) ); + } +} +#endif + +////////////////////////////////////////////////////////////// + +void heartBeatPrint() +{ +#if USE_ESP_ETH_MANAGER_NTP + printLocalTime(); +#else + static int num = 1; + + if (ESP32_ENC_isConnected()) + 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 beginEthernet() +{ + LOGWARN(F("Default SPI pinout:")); + LOGWARN1(F("SPI_HOST:"), SPI_HOST); + LOGWARN1(F("MOSI:"), MOSI_GPIO); + LOGWARN1(F("MISO:"), MISO_GPIO); + LOGWARN1(F("SCK:"), SCK_GPIO); + LOGWARN1(F("CS:"), CS_GPIO); + LOGWARN1(F("INT:"), INT_GPIO); + LOGWARN1(F("SPI Clock (MHz):"), SPI_CLOCK_MHZ); + LOGWARN(F("=========================")); + + /////////////////////////////////// + + // To be called before ETH.begin() + ESP32_ENC_onEvent(); + + // start the ethernet connection and the server: + // Use DHCP dynamic IP and random mac + uint16_t index = millis() % NUMBER_OF_MAC; + + //bool begin(int MISO_GPIO, int MOSI_GPIO, int SCLK_GPIO, int CS_GPIO, int INT_GPIO, int SPI_CLOCK_MHZ, + // int SPI_HOST, uint8_t *ENC28J60_Mac = ENC28J60_Default_Mac); + //ETH.begin( MISO_GPIO, MOSI_GPIO, SCK_GPIO, CS_GPIO, INT_GPIO, SPI_CLOCK_MHZ, SPI_HOST ); + ETH.begin( MISO_GPIO, MOSI_GPIO, SCK_GPIO, CS_GPIO, INT_GPIO, SPI_CLOCK_MHZ, SPI_HOST, mac[index] ); +} + +////////////////////////////////////////////////////////////// + +void initEthernet() +{ +#if !( USE_DHCP_IP ) + displayIPConfigStruct(EthSTA_IPconfig); + + // Static IP, leave without this line to get IP via DHCP + //bool config(IPAddress local_ip, IPAddress gateway, IPAddress subnet, IPAddress dns1 = 0, IPAddress dns2 = 0); + //ETH.config(stationIP, gatewayIP, netMask, dns1IP, dns2IP); + ETH.config(EthSTA_IPconfig._sta_static_ip, EthSTA_IPconfig._sta_static_gw, EthSTA_IPconfig._sta_static_sn, + EthSTA_IPconfig._sta_static_dns1); +#endif + + ESP32_ENC_waitForConnect(); +} + +////////////////////////////////////////////////////////////// + +void setup() +{ + //set led pin as output + pinMode(LED_BUILTIN, OUTPUT); + + Serial.begin(115200); + + while (!Serial && millis() < 5000); + + delay(500); + + Serial.print(F("\nStarting ESP32_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(ESP32_SC_ENC_MANAGER_VERSION); + Serial.println(ESP_DOUBLE_RESET_DETECTOR_VERSION); + + Serial.setDebugOutput(false); + + if (FORMAT_FILESYSTEM) + FileFS.format(); + + // Format FileFS if not yet + if (!FileFS.begin(true)) + { + 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); + } + } + } + + File root = FileFS.open("/"); + File file = root.openNextFile(); + + while (file) + { + String fileName = file.name(); + size_t fileSize = file.size(); + Serial.printf("FS File: %s, size: %s\n", fileName.c_str(), formatBytes(fileSize).c_str()); + file = root.openNextFile(); + } + + Serial.println(); + + drd = new DoubleResetDetector(DRD_TIMEOUT, DRD_ADDRESS); + + if (!drd) + Serial.println(F("Can't instantiate. Disable DRD feature")); + + unsigned long startedAt = millis(); + + beginEthernet(); + + 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 ESP32-XXXXXX + //ESP32_SC_ENC_Manager ESP32_SC_ENC_manager; + // Use this to personalize DHCP hostname (RFC952 conformed) + ESP32_SC_ENC_Manager ESP32_SC_ENC_manager("ESP32-FSWebServer_DRD"); + +#if !USE_DHCP_IP + // Set (static IP, Gateway, Subnetmask, DNS1 and DNS2) or (IP, Gateway, Subnetmask) + ESP32_SC_ENC_manager.setSTAStaticIPConfig(EthSTA_IPconfig); +#endif + +#if USING_CORS_FEATURE + ESP32_SC_ENC_manager.setCORSHeader("Your Access-Control-Allow-Origin"); +#endif + + bool configDataLoaded = loadConfigData(); + + ////////////////////////////////// + + // Connect ETH now if using STA + initEthernet(); + + ////////////////////////////////// + + if (configDataLoaded) + { + //If no access point name has been previously entered disable timeout. + ESP32_SC_ENC_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("Saving current TZ_Name ="), Ethconfig.TZ_Name, F(", TZ = "), Ethconfig.TZ); + + //configTzTime(Ethconfig.TZ, "pool.ntp.org" ); + configTzTime(Ethconfig.TZ, "time.nist.gov", "0.pool.ntp.org", "1.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; + } + + if (drd->detectDoubleReset()) + { + // DRD, disable timeout. + ESP32_SC_ENC_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()); + + //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. + //ESP32_SC_ENC_manager.setConfigPortalTimeout(600); + + // Starts an access point + if (!ESP32_SC_ENC_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 = ESP32_SC_ENC_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 = ESP32_SC_ENC_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); + + //configTzTime(Ethconfig.TZ, "pool.ntp.org" ); + configTzTime(Ethconfig.TZ, "time.nist.gov", "0.pool.ntp.org", "1.pool.ntp.org"); + } + else + { + LOGERROR(F("Current Timezone Name is not set. Enter Config Portal to set.")); + } + +#endif + + ESP32_SC_ENC_manager.getSTAStaticIPConfig(EthSTA_IPconfig); + + saveConfigData(); + } + + startedAt = millis(); + + Serial.print(F("After waiting ")); + Serial.print((float) (millis() - startedAt) / 1000); + Serial.print(F(" secs more in setup(), connection result is ")); + + if (ESP32_ENC_isConnected()) + { + Serial.print(F("connected. Local IP: ")); + Serial.println(ETH.localIP()); + } + + //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(); + + Serial.print(F("HTTP server started @ ")); + Serial.println(WiFi.localIP()); + + 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 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(); +} diff --git a/examples/ESP32_FSWebServer_DRD/README.md b/examples/ESP32_FSWebServer_DRD/README.md new file mode 100644 index 0000000..7c0851f --- /dev/null +++ b/examples/ESP32_FSWebServer_DRD/README.md @@ -0,0 +1,70 @@ +# ESP32_FSWebServer_DRD Example + + +## First, how Config Portal works? + +Connect to Config Portal @ the localIP address, e.g. `192.168.2.232` + + +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 ESP32_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 [ESP32_FSWebServer_DRD data](https://github.com/khoih-prog/ESP32_ENC_Manager/tree/main/examples/ESP32_FSWebServer_DRD/data) to a local folder, for example: + +``` +~/Arduino/libraries/ESP32_ENC_Manager-main/examples/ESP32_FSWebServer_DRD/data +``` + +### HOWTO Upload files to ESP32 (SPIFFS or FFat) + +Use one of these methods (preferable first) + +1. Go to http://esp32fs.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 upload the contents of a folder by running the following commands: +``` +Ubuntu$ cd ~/Arduino/libraries/ESP32_ENC_Manager-main/examples/ESP32_FSWebServer_DRD/data +Ubuntu$ for file in \`\ls -A1\`; do curl -F "file=@$PWD/$file" http://esp32fs.local/edit; done +``` + +--- + +### Demonstrating pictures + +

+ +

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

+ +

+ + diff --git a/examples/ESP32_FSWebServer_DRD/data/CanadaFlag_1.png b/examples/ESP32_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/ESP32_FSWebServer_DRD/data/CanadaFlag_2.png b/examples/ESP32_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/ESP32_FSWebServer_DRD/data/edit.htm.gz b/examples/ESP32_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/ESP32_FSWebServer_DRD/data/graphs.js.gz b/examples/ESP32_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/ESP32_FSWebServer_DRD/data/index.htm b/examples/ESP32_FSWebServer_DRD/data/index.htm new file mode 100644 index 0000000..9cb560c --- /dev/null +++ b/examples/ESP32_FSWebServer_DRD/data/index.htm @@ -0,0 +1,97 @@ + + + + + + ESP Monitor + + + + +
+ + + + +
+
+
+
+ + \ No newline at end of file diff --git a/examples/ESP32_FSWebServer_DRD/pics/esp32fs.local.png b/examples/ESP32_FSWebServer_DRD/pics/esp32fs.local.png new file mode 100644 index 0000000000000000000000000000000000000000..05e9f2474a25de0c6111edc9a26040d4b430b5d6 GIT binary patch literal 20520 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 T6qn6}hxb-a6;Lem;q(6mKu|tN literal 0 HcmV?d00001 diff --git a/examples/ESP32_FSWebServer_DRD/pics/esp32fs.local_edit.png b/examples/ESP32_FSWebServer_DRD/pics/esp32fs.local_edit.png new file mode 100644 index 0000000000000000000000000000000000000000..7deb17a4b9445b89f4c0e9836cdd83774429e06f GIT binary patch literal 76964 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
q(8#tZ`282vcnoZ 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 E1&k*zmjD0& literal 0 HcmV?d00001 diff --git a/keywords.txt b/keywords.txt new file mode 100644 index 0000000..669ca71 --- /dev/null +++ b/keywords.txt @@ -0,0 +1,92 @@ +########################################## +# Syntax Coloring Map For ESP_WifiManager +########################################## + +####################################### +# Datatypes (KEYWORD1) +####################################### + +ESP32_SC_ENC_Manager KEYWORD1 +ESP32_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 + +ESP32_SC_ENC_MANAGER_VERSION LITERAL1 +ESP32_SC_ENC_MANAGER_VERSION_MAJOR LITERAL1 +ESP32_SC_ENC_MANAGER_VERSION_MINOR LITERAL1 +ESP32_SC_ENC_MANAGER_VERSION_PATCH LITERAL1 +ESP32_SC_ENC_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..a38f07b --- /dev/null +++ b/library.json @@ -0,0 +1,44 @@ +{ + "name": "ESP32_SC_ENC_Manager", + "version": "1.0.0", + "keywords": "ethernet, WiFiManager, esp32, esp32-s2, esp32-s3, esp32-c3, WebServer, Communication, Credentials, Config-Portal, DoubleReset, MultiReset, littlefs, spiffs, dns-server, iot, lwip, enc28j60", + "description": "ESP32_S2/S3/C3 + LwIP ENC28J60 Connection and Credentials Manager, with enhanced GUI and fallback Web ConfigPortal. This Library is used for configuring ESP32_S2/S3/C3 + LwIP ENC28J60 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. Now using correct ESP32 chipIP", + "authors": + { + "name": "Khoi Hoang", + "url": "https://github.com/khoih-prog", + "maintainer": true + }, + "repository": + { + "type": "git", + "url": "https://github.com/khoih-prog/ESP32_SC_ENC_Manager" + }, + "homepage": "https://github.com/khoih-prog/ESP32_SC_ENC_Manager", + "export": { + "exclude": [ + "linux", + "extras", + "tests" + ] + }, + "dependencies": [ + { + "owner": "khoih-prog", + "name": "WebServer_ESP32_SC_ENC", + "version": ">=1.0.0", + "platforms": ["espressif32"] + }, + { + "owner": "khoih-prog", + "name": "ESP_DoubleResetDetector", + "version": ">=1.3.2", + "platforms": ["espressif32"] + } + ], + "license": "MIT", + "frameworks": "*", + "platforms": ["espressif32"], + "examples": "examples/*/*/*.ino", + "headers": ["ESP32_SC_ENC_Manager.h", "ESP32_SC_ENC_Manager.hpp"] +} diff --git a/library.properties b/library.properties new file mode 100644 index 0000000..bf418e7 --- /dev/null +++ b/library.properties @@ -0,0 +1,12 @@ +name=ESP32_SC_ENC_Manager +version=1.0.0 +author=Khoi Hoang +maintainer=Khoi Hoang +license=MIT +sentence=ESP32_S2/S3/C3 + LwIP ENC28J60 Connection and Credentials Manager, with enhanced GUI and fallback Web ConfigPortal. +paragraph=This Library is used for configuring ESP32_S2/S3/C3 + LwIP ENC28J60 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. Now using correct ESP32 chipIP +category=Communication +url=https://github.com/khoih-prog/ESP32_SC_ENC_Manager +architectures=esp32 +depends=ESP_DoubleResetDetector, WebServer_ESP32_SC_ENC +includes=ESP32_SC_ENC_Manager.h, ESP32_SC_ENC_Manager.hpp diff --git a/platformio/platformio.ini b/platformio/platformio.ini new file mode 100644 index 0000000..c25f19d --- /dev/null +++ b/platformio/platformio.ini @@ -0,0 +1,165 @@ +;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: +; ESP32 +; esp32s2 +; esp32s3 +; esp32c3 + +; ============================================================ +default_envs = esp32s3 + +; ============================================================ +[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 +; WebServer_ESP32_SC_ENC@>=1.0.0 +; PlatformIO 5.x + khoih-prog/ESP_DoubleResetDetector@>=1.3.2 + khoih-prog/WebServer_ESP32_SC_ENC@>=1.0.0 + +; ============================================================ +build_flags = +; set your build_flags + +; ============================================================ +[env:ESP32] +platform = espressif32 +framework = arduino + +; ============================================================ +; Board configuration +; choose your board by uncommenting one of the following lines +; ============================================================ +;board = esp32cam +;board = alksesp32 +;board = featheresp32 +;board = espea32 +;board = bpi-bit +;board = d-duino-32 +board = esp32doit-devkit-v1 +;board = pocket_32 +;board = fm-devkit +;board = pico32 +;board = esp32-evb +;board = esp32-gateway +;board = esp32-pro +;board = esp32-poe +;board = oroca_edubot +;board = onehorse32dev +;board = lopy +;board = lopy4 +;board = wesp32 +;board = esp32thing +;board = sparkfun_lora_gateway_1-channel +;board = ttgo-lora32-v1 +;board = ttgo-t-beam +;board = turta_iot_node +;board = lolin_d32 +;board = lolin_d32_pro +;board = lolin32 +;board = wemosbat +;board = widora-air +;board = xinabox_cw02 +;board = iotbusio +;board = iotbusproteus +;board = nina_w10 + +; ============================================================ +[env:esp32s2] +platform = espressif32 +framework = arduino + +; toolchain download links see +; refer "name": "xtensa-esp32s2-elf-gcc","version": "gcc8_4_0-esp-2021r1" section of +; https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_dev_index.json +; e.g. Windows: https://github.com/espressif/crosstool-NG/releases/download/esp-2021r1/xtensa-esp32s2-elf-gcc8_4_0-esp-2021r1-win32.zip +platform_packages = + toolchain-xtensa32s2@file://C:\Users\Max\Downloads\xtensa-esp32s2-elf + framework-arduinoespressif32@https://github.com/espressif/arduino-esp32.git#a4118ea88987c28aac3a49bcb9cc5d6c0acc6f3f + platformio/tool-esptoolpy @ ~1.30100 +framework = arduino +board = esp32dev +board_build.mcu = esp32s2 +board_build.partitions = huge_app.csv +board_build.variant = esp32s2 +board_build.f_cpu = 240000000L +board_build.f_flash = 80000000L +board_build.flash_mode = qio +board_build.arduino.ldscript = esp32s2_out.ld +build_unflags = + -DARDUINO_ESP32_DEV + -DARDUINO_VARIANT="esp32" +build_flags = + -DARDUINO_ESP32S2_DEV + -DARDUINO_VARIANT="esp32s2" + + +; ============================================================ +[env:esp32s3] +platform = espressif32 +framework = arduino + +board_build.mcu = esp32s3 +board_build.partitions = huge_app.csv +board_build.variant = esp32s3 +board_build.f_cpu = 240000000L +board_build.f_flash = 80000000L +board_build.flash_mode = qio +board_build.arduino.ldscript = esp32s3_out.ld +build_unflags = + -DARDUINO_ESP32_DEV + -DARDUINO_VARIANT="esp32" +build_flags = + -DARDUINO_ESP32S3_DEV + -DARDUINO_VARIANT="esp32s3" + + +; ============================================================ +[env:esp32c3] +platform = espressif32 +framework = arduino + +board_build.mcu = esp32c3 +board_build.partitions = huge_app.csv +board_build.variant = esp32c3 +board_build.f_cpu = 160000000L +board_build.f_flash = 80000000L +board_build.flash_mode = qio +board_build.arduino.ldscript = esp32c3_out.ld +build_unflags = + -DARDUINO_ESP32_DEV + -DARDUINO_VARIANT="esp32" +build_flags = + -DARDUINO_ESP32S3_DEV + -DARDUINO_VARIANT="esp32c3" + + +; ============================================================ diff --git a/src/ESP32_SC_ENC_Manager.h b/src/ESP32_SC_ENC_Manager.h new file mode 100644 index 0000000..9610bf3 --- /dev/null +++ b/src/ESP32_SC_ENC_Manager.h @@ -0,0 +1,30 @@ +/**************************************************************************************************************************** + ESP32_SC_ENC_Manager.h + + For Ethernet shields using ESP32_SC_ENC (ESP32_S2/S3/C3 + LwIP ENC28J60) + + 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/ESP32_SC_ENC_Manager + Licensed under MIT license + + Version: 1.0.0 + + Version Modified By Date Comments + ------- ----------- ---------- ----------- + 1.0.0 K Hoang 15/12/2022 Initial coding for ESP32_S3_ENC28J60 (ESP32_S3 + LwIP ENC28J60) + *****************************************************************************************************************************/ + +#pragma once + +#ifndef ESP32_SC_ENC_Manager_h +#define ESP32_SC_ENC_Manager_h + +#include //https://github.com/khoih-prog/ESP32_SC_ENC_Manager +#include //https://github.com/khoih-prog/ESP32_SC_ENC_Manager + +#endif // ESP32_SC_ENC_Manager_h + diff --git a/src/ESP32_SC_ENC_Manager.hpp b/src/ESP32_SC_ENC_Manager.hpp new file mode 100644 index 0000000..a34ee13 --- /dev/null +++ b/src/ESP32_SC_ENC_Manager.hpp @@ -0,0 +1,628 @@ +/**************************************************************************************************************************** + ESP32_SC_ENC_Manager.hpp + + For Ethernet shields using ESP32_SC_ENC (ESP32_S2/S3/C3 + LwIP ENC28J60) + + 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/ESP32_SC_ENC_Manager + Licensed under MIT license + + Version: 1.0.0 + + Version Modified By Date Comments + ------- ----------- ---------- ----------- + 1.0.0 K Hoang 15/12/2022 Initial coding for ESP32_S3_ENC28J60 (ESP32_S3 + LwIP ENC28J60) + *****************************************************************************************************************************/ + +#pragma once + +#ifndef ESP32_SC_ENC_Manager_hpp +#define ESP32_SC_ENC_Manager_hpp + +//////////////////////////////////////////////////// + +#if !( defined(ESP32) ) + #error This code is intended to run on the ESP32 platform! Please check your Tools->Board setting. +#elif ( ARDUINO_ESP32S2_DEV || ARDUINO_FEATHERS2 || ARDUINO_ESP32S2_THING_PLUS || ARDUINO_MICROS2 || \ + ARDUINO_METRO_ESP32S2 || ARDUINO_MAGTAG29_ESP32S2 || ARDUINO_FUNHOUSE_ESP32S2 || \ + ARDUINO_ADAFRUIT_FEATHER_ESP32S2_NOPSRAM ) + #if (_ESP32_ETH_MGR_LOGLEVEL_ > 3) + #warning Using ESP32_S2. To follow library instructions to install esp32-s2 core and WebServer Patch + #warning You have to select HUGE APP or 1.9-2.0 MB APP to be able to run Config Portal. Must use PSRAM + #endif + + #define USING_ESP32_S2 true + +#elif ( ARDUINO_ESP32C3_DEV ) + #if (_ESP32_ETH_MGR_LOGLEVEL_ > 3) + #if ( defined(ESP_ARDUINO_VERSION_MAJOR) && (ESP_ARDUINO_VERSION_MAJOR >= 2) ) + #warning Using ESP32_C3 using core v2.0.0+. Either LittleFS, SPIFFS or EEPROM OK + #else + #warning Using ESP32_C3 using core v1.0.6-. To follow library instructions to install esp32-c3 core. Only SPIFFS and EEPROM OK + #endif + + #warning You have to select Flash size 2MB and Minimal APP (1.3MB + 700KB) for some boards + + #endif + + #define USING_ESP32_C3 true + +#elif ( defined(ARDUINO_ESP32S3_DEV) || defined(ARDUINO_ESP32_S3_BOX) || defined(ARDUINO_TINYS3) || \ + defined(ARDUINO_PROS3) || defined(ARDUINO_FEATHERS3) ) + + #if (_ESP32_ETH_MGR_LOGLEVEL_ > 3) + #warning Using ESP32_S3. To install esp32-s3-support branch if using core v2.0.2- + #endif + + #define USING_ESP32_S3 true +#endif + +//////////////////////////////////////////////////// + +#define ESP32_SC_ENC_MANAGER_VERSION "ESP32_SC_ENC_Manager v1.0.0" + +#define ESP32_SC_ENC_MANAGER_VERSION_MAJOR 1 +#define ESP32_SC_ENC_MANAGER_VERSION_MINOR 0 +#define ESP32_SC_ENC_MANAGER_VERSION_PATCH 0 + +#define ESP32_SC_ENC_MANAGER_VERSION_INT 1000000 + +//////////////////////////////////////////////////// + +#include "ESP32_SC_ENC_Manager_Debug.h" + +//////////////////////////////////////////////////// + +#if ( defined(HTTP_PORT) && (HTTP_PORT < 65536) && (HTTP_PORT > 0) ) + #if (_ESP32_ETH_MGR_LOGLEVEL_ > 3) + #warning Using custom HTTP_PORT + #endif + + #define HTTP_PORT_TO_USE HTTP_PORT +#else + #if (_ESP32_ETH_MGR_LOGLEVEL_ > 3) + #warning Using default HTTP_PORT = 80 + #endif + + #define HTTP_PORT_TO_USE 80 +#endif + +//////////////////////////////////////////////////// + +//#include +#include + +#include + +#include + +#include +#undef min +#undef max + +#include + +//////////////////////////////////////////////////// + +//KH, for ESP32 +#include + +uint32_t getChipID(); +uint32_t getChipOUI(); + +#if defined(ESP_getChipId) + #undef ESP_getChipId +#endif + +#define ESP_getChipId() getChipID() +#define ESP_getChipOUI() getChipOUI() + +//////////////////////////////////////////////////// + +// 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 ( (_ESP32_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 ESP32_EMParameter +{ + public: + + ESP32_EMParameter(const char *custom); + ESP32_EMParameter(const char *id, const char *placeholder, const char *defaultValue, const int& length, + const char *custom = "", const int& labelPlacement = WFM_LABEL_BEFORE); + + ESP32_EMParameter(const EMParam_Data& EMParam_data); + + ~ESP32_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 ESP32_SC_ENC_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 ESP32_SC_ENC_Manager +{ + public: + + ESP32_SC_ENC_Manager(const char *iHostname = ""); + + ~ESP32_SC_ENC_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(ESP32_EMParameter *p); +#else + //adds a custom parameter + void addParameter(ESP32_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 + ESP32_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; + int _minimumQuality = -1; + bool _removeDuplicateAPs = true; + bool _shouldBreakAfterConfig = false; + bool _tryWPS = false; + + const char* _customHeadElement = ""; + + int status = WL_IDLE_STATUS; + + // For configuring CORS Header, default to EM_HTTP_CORS_ALLOW_ALL = "*" +#if USING_CORS_FEATURE + const char* _CORS_Header = EM_HTTP_CORS_ALLOW_ALL; //"*"; +#endif + + wl_status_t waitForConnectResult(); + + void setInfo(); + String networkListAsString(); + + void handleRoot(); + 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; + ESP32_EMParameter** _params; +#else + ESP32_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 // ESP32_SC_ENC_Manager_hpp + diff --git a/src/ESP32_SC_ENC_Manager_Debug.h b/src/ESP32_SC_ENC_Manager_Debug.h new file mode 100644 index 0000000..1052865 --- /dev/null +++ b/src/ESP32_SC_ENC_Manager_Debug.h @@ -0,0 +1,89 @@ +/**************************************************************************************************************************** + ESP32_SC_ENC_Manager_Debug.h + + For Ethernet shields using ESP32_SC_ENC (ESP32_S2/S3/C3 + LwIP ENC28J60) + + 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/ESP32_SC_ENC_Manager + Licensed under MIT license + + Version: 1.0.0 + + Version Modified By Date Comments + ------- ----------- ---------- ----------- + 1.0.0 K Hoang 15/12/2022 Initial coding for ESP32_S3_ENC28J60 (ESP32_S3 + LwIP ENC28J60) + *****************************************************************************************************************************/ + +#pragma once + +#ifndef ESP32_SC_ENC_Manager_Debug_H +#define ESP32_SC_ENC_Manager_Debug_H + +#ifdef ESP32_ETH_MGR_DEBUG_PORT + #define DBG_PORT_ESP_EM ESP32_ETH_MGR_DEBUG_PORT +#else + #define DBG_PORT_ESP_EM Serial +#endif + +// Change _ESP32_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 _ESP32_ETH_MGR_LOGLEVEL_ + #define _ESP32_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(_ESP32_ETH_MGR_LOGLEVEL_>0) { ESP_EM_PRINT_MARK; ESP_EM_PRINTLN(x); } +#define LOGERROR0(x) if(_ESP32_ETH_MGR_LOGLEVEL_>0) { ESP_EM_PRINT(x); } +#define LOGERROR1(x,y) if(_ESP32_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(_ESP32_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(_ESP32_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(_ESP32_ETH_MGR_LOGLEVEL_>1) { ESP_EM_PRINT_MARK; ESP_EM_PRINTLN(x); } +#define LOGWARN0(x) if(_ESP32_ETH_MGR_LOGLEVEL_>1) { ESP_EM_PRINT(x); } +#define LOGWARN1(x,y) if(_ESP32_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(_ESP32_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(_ESP32_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(_ESP32_ETH_MGR_LOGLEVEL_>2) { ESP_EM_PRINT_MARK; ESP_EM_PRINTLN(x); } +#define LOGINFO0(x) if(_ESP32_ETH_MGR_LOGLEVEL_>2) { ESP_EM_PRINT(x); } +#define LOGINFO1(x,y) if(_ESP32_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(_ESP32_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(_ESP32_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(_ESP32_ETH_MGR_LOGLEVEL_>3) { ESP_EM_PRINT_MARK; ESP_EM_PRINTLN(x); } +#define LOGDEBUG0(x) if(_ESP32_ETH_MGR_LOGLEVEL_>3) { ESP_EM_PRINT(x); } +#define LOGDEBUG1(x,y) if(_ESP32_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(_ESP32_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(_ESP32_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 // ESP32_SC_ENC_Manager_Debug_H + diff --git a/src/ESP32_SC_ENC_Manager_Impl.h b/src/ESP32_SC_ENC_Manager_Impl.h new file mode 100644 index 0000000..866e19d --- /dev/null +++ b/src/ESP32_SC_ENC_Manager_Impl.h @@ -0,0 +1,1217 @@ +/**************************************************************************************************************************** + ESP32_SC_ENC_Manager_Impl.h + + For Ethernet shields using ESP32_SC_ENC (ESP32_S2/S3/C3 + LwIP ENC28J60) + + 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/ESP32_SC_ENC_Manager + Licensed under MIT license + + Version: 1.0.0 + + Version Modified By Date Comments + ------- ----------- ---------- ----------- + 1.0.0 K Hoang 15/12/2022 Initial coding for ESP32_S3_ENC28J60 (ESP32_S3 + LwIP ENC28J60) + *****************************************************************************************************************************/ + +#pragma once + +#ifndef ESP32_SC_ENC_Manager_Impl_h +#define ESP32_SC_ENC_Manager_Impl_h + +////////////////////////////////////////// + +ESP32_EMParameter::ESP32_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; +} + +////////////////////////////////////////// + +ESP32_EMParameter::ESP32_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 +ESP32_EMParameter::ESP32_EMParameter(const EMParam_Data& EMParam_data) +{ + init(EMParam_data._id, EMParam_data._placeholder, EMParam_data._value, + EMParam_data._length, "", EMParam_data._labelPlacement); +} + +////////////////////////////////////////// + +void ESP32_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; +} + +////////////////////////////////////////// + +ESP32_EMParameter::~ESP32_EMParameter() +{ + if (_EMParam_data._value != NULL) + { + delete[] _EMParam_data._value; + } +} + +////////////////////////////////////////// + +// Using Struct to get/set whole data at once +void ESP32_EMParameter::setEMParam_Data(const EMParam_Data& EMParam_data) +{ + LOGINFO(F("setEMParam_Data")); + + memcpy(&_EMParam_data, &EMParam_data, sizeof(_EMParam_data)); +} + +////////////////////////////////////////// + +void ESP32_EMParameter::getEMParam_Data(EMParam_Data& EMParam_data) +{ + LOGINFO(F("getEMParam_Data")); + + memcpy(&EMParam_data, &_EMParam_data, sizeof(EMParam_data)); +} + +////////////////////////////////////////// + +const char* ESP32_EMParameter::getValue() +{ + return _EMParam_data._value; +} + +////////////////////////////////////////// + +const char* ESP32_EMParameter::getID() +{ + return _EMParam_data._id; +} + +////////////////////////////////////////// + +const char* ESP32_EMParameter::getPlaceholder() +{ + return _EMParam_data._placeholder; +} + +////////////////////////////////////////// + +int ESP32_EMParameter::getValueLength() +{ + return _EMParam_data._length; +} + +////////////////////////////////////////// + +int ESP32_EMParameter::getLabelPlacement() +{ + return _EMParam_data._labelPlacement; +} + +////////////////////////////////////////// + +const char* ESP32_EMParameter::getCustomHTML() +{ + return _customHTML; +} + +////////////////////////////////////////// + +/** + [getParameters description] + @access public +*/ +ESP32_EMParameter** ESP32_SC_ENC_Manager::getParameters() +{ + return _params; +} + +////////////////////////////////////////// +////////////////////////////////////////// + +/** + [getParametersCount description] + @access public +*/ +int ESP32_SC_ENC_Manager::getParametersCount() +{ + return _paramsCount; +} + +////////////////////////////////////////// + +char* ESP32_SC_ENC_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; +} + +////////////////////////////////////////// + +ESP32_SC_ENC_Manager::ESP32_SC_ENC_Manager(const char *iHostname) +{ + + //server = webserver; + //dnsServer = dnsserver; + +#if USE_DYNAMIC_PARAMS + _max_params = ETH_MANAGER_MAX_PARAMS; + _params = (ESP32_EMParameter**) malloc(_max_params * sizeof(ESP32_EMParameter*)); +#endif + + if (iHostname[0] == 0) + { + String _hostname = "ESP32-" + 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(); +} + +////////////////////////////////////////// + +ESP32_SC_ENC_Manager::~ESP32_SC_ENC_Manager() +{ +#if USE_DYNAMIC_PARAMS + + if (_params != NULL) + { + LOGINFO(F("freeing allocated params!")); + + free(_params); + } + +#endif +} + +////////////////////////////////////////// + +#if USE_DYNAMIC_PARAMS + bool ESP32_SC_ENC_Manager::addParameter(ESP32_EMParameter *p) +#else + void ESP32_SC_ENC_Manager::addParameter(ESP32_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); + + ESP32_EMParameter** new_params = (ESP32_EMParameter**) realloc(_params, _max_params * sizeof(ESP32_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 ESP32_SC_ENC_Manager::setupConfigPortal() +{ + stopConfigPortal = false; //Signal not to close config portal + + dnsServer.reset(new DNSServer()); + + server.reset(new WebServer(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(&ESP32_SC_ENC_Manager::handleRoot, this)); + server->on("/eth", std::bind(&ESP32_SC_ENC_Manager::handleETH, this)); + server->on("/ethsave", std::bind(&ESP32_SC_ENC_Manager::handleETHSave, this)); + server->on("/close", std::bind(&ESP32_SC_ENC_Manager::handleServerClose, this)); + server->on("/i", std::bind(&ESP32_SC_ENC_Manager::handleInfo, this)); + server->on("/r", std::bind(&ESP32_SC_ENC_Manager::handleReset, this)); + server->on("/state", std::bind(&ESP32_SC_ENC_Manager::handleState, this)); + //Microsoft captive portal. Maybe not needed. Might be handled by notFound handler. + server->on("/fwlink", std::bind(&ESP32_SC_ENC_Manager::handleRoot, this)); + server->onNotFound( std::bind(&ESP32_SC_ENC_Manager::handleNotFound, this)); + + server->begin(); // Web server start + + LOGWARN(F("HTTP server started")); +} + +////////////////////////////////////////// + +bool ESP32_SC_ENC_Manager::startConfigPortal() +{ + connect = false; + + setupConfigPortal(); + + bool TimedOut = true; + + LOGINFO("startConfigPortal : Enter loop"); + + while (true) + { + //DNS + dnsServer->processNextRequest(); + //HTTP + server->handleClient(); + +#if ( USING_ESP32_S2 || USING_ESP32_C3 ) + // Fix ESP32-S2 issue with WebServer (https://github.com/espressif/arduino-esp32/issues/4348) + delay(1); +#endif + + 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 + + vTaskDelay(TIME_BETWEEN_CONFIG_PORTAL_LOOP / portTICK_PERIOD_MS); + } + + //LOGDEBUG3("startConfigPortal: exit, _configPortalTimeout =", _configPortalTimeout, "millis() =", millis()); + + server->stop(); + server.reset(); + dnsServer->stop(); + dnsServer.reset(); + + return (ESP32_ENC_isConnected()); +} + +////////////////////////////////////////// + +void ESP32_SC_ENC_Manager::setTimeout(const unsigned long& seconds) +{ + setConfigPortalTimeout(seconds); +} + +////////////////////////////////////////// + +void ESP32_SC_ENC_Manager::setConfigPortalTimeout(const unsigned long& seconds) +{ + _configPortalTimeout = seconds * 1000; +} + +////////////////////////////////////////// + +void ESP32_SC_ENC_Manager::setConnectTimeout(const unsigned long& seconds) +{ + _connectTimeout = seconds * 1000; +} + +void ESP32_SC_ENC_Manager::setDebugOutput(bool debug) +{ + _debug = debug; +} + +////////////////////////////////////////// + +void ESP32_SC_ENC_Manager::setBreakAfterConfig(bool shouldBreak) +{ + _shouldBreakAfterConfig = shouldBreak; +} + +////////////////////////////////////////// + +void ESP32_SC_ENC_Manager::reportStatus(String& page) +{ + page += FPSTR(EM_HTTP_SCRIPT_NTP_MSG); +} + + + +////////////////////////////////////////// + +void ESP32_SC_ENC_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 ESP32_SC_ENC_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 ESP32_SC_ENC_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 ESP32_SC_ENC_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 ESP32_SC_ENC_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 ESP32_SC_ENC_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 ESP32_SC_ENC_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 ESP32_SC_ENC_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 += F("Push button on device to restart configuration server!"); + + 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 ESP32_SC_ENC_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(""); + + page += F(""); + + page += F(""); + page += F("
NameValue
Chip ID"); + + page += String(ESP_getChipId(), HEX); + page += F("
Chip OUI"); + page += F("0x"); + page += String(getChipOUI(), HEX); + page += F("
Chip Model"); + page += ESP.getChipModel(); + page += F(" Rev"); + page += ESP.getChipRevision(); + + page += F("
Flash Chip ID"); + + // TODO + page += F("TODO"); + + page += F("
IDE Flash Size"); + page += ESP.getFlashChipSize(); + page += F(" bytes
Real Flash Size"); + + // TODO + page += F("TODO"); + + page += F(" bytes
Station IP"); + page += ETH.localIP().toString(); + page += F("
Station MAC"); + page += ETH.macAddress(); + 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 ESP32_SC_ENC_Manager at"); + page += F("

https://github.com/khoih-prog/ESP32_SC_ENC_Manager"); + page += FPSTR(EM_HTTP_END); + + server->send(200, "text/html", page); + + LOGDEBUG(F("Sent info page")); +} + +////////////////////////////////////////// + +// Handle the state page +void ESP32_SC_ENC_Manager::handleState() +{ + LOGDEBUG(F("State-Json")); + + LOGDEBUG(F("Sent state page in json format")); +} + +////////////////////////////////////////// + +// Handle the reset page +void ESP32_SC_ENC_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.restart(); + + delay(2000); +} + +////////////////////////////////////////// + +void ESP32_SC_ENC_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 ESP32_SC_ENC_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 ESP32_SC_ENC_Manager::setSaveConfigCallback(void(*func)()) +{ + _savecallback = func; +} + +////////////////////////////////////////// + +// sets a custom element to add to head, like a new style tag +void ESP32_SC_ENC_Manager::setCustomHeadElement(const char* element) +{ + _customHeadElement = element; +} + +////////////////////////////////////////// + +// Is this an IP? +bool ESP32_SC_ENC_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 ESP32_SC_ENC_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; +} + +////////////////////////////////////////// + +uint32_t getChipID() +{ + uint64_t chipId64 = 0; + + for (int i = 0; i < 6; i++) + { + chipId64 |= ( ( (uint64_t) ESP.getEfuseMac() >> (40 - (i * 8)) ) & 0xff ) << (i * 8); + } + + return (uint32_t) (chipId64 & 0xFFFFFF); +} + +////////////////////////////////////////// + +uint32_t getChipOUI() +{ + uint64_t chipId64 = 0; + + for (int i = 0; i < 6; i++) + { + chipId64 |= ( ( (uint64_t) ESP.getEfuseMac() >> (40 - (i * 8)) ) & 0xff ) << (i * 8); + } + + return (uint32_t) (chipId64 >> 24); +} + +////////////////////////////////////////// + +#endif // ESP32_SC_ENC_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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 Xc7n&B*-idN00000NkvXXu0mjf`ZKjs literal 0 HcmV?d00001 diff --git a/Images/Info.png b/Images/Info.png new file mode 100644 index 0000000000000000000000000000000000000000..0b562c0d00bfd664c17992a3c03c3369043dad9a GIT binary patch literal 69245 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 I&MBb@0G`BKlK=n! 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/changelog.md b/changelog.md new file mode 100644 index 0000000..b0fed80 --- /dev/null +++ b/changelog.md @@ -0,0 +1,33 @@ +# ESP32_SC_ENC_Manager Library + +[![arduino-library-badge](https://www.ardu-badge.com/badge/ESP32_SC_ENC_Manager.svg?)](https://www.ardu-badge.com/ESP32_SC_ENC_Manager) +[![GitHub release](https://img.shields.io/github/release/khoih-prog/ESP32_SC_ENC_Manager.svg)](https://github.com/khoih-prog/ESP32_SC_ENC_Manager/releases) +[![GitHub](https://img.shields.io/github/license/mashape/apistatus.svg)](https://github.com/khoih-prog/ESP32_SC_ENC_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/ESP32_SC_ENC_Manager.svg)](http://github.com/khoih-prog/ESP32_SC_ENC_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 `ESP32_S2/S3/C3` boards using `LwIP ENC28J60 Ethernet`. +2. Use `allman astyle` + + diff --git a/examples/ConfigOnDoubleReset/ConfigOnDoubleReset.ino b/examples/ConfigOnDoubleReset/ConfigOnDoubleReset.ino new file mode 100644 index 0000000..058eebd --- /dev/null +++ b/examples/ConfigOnDoubleReset/ConfigOnDoubleReset.ino @@ -0,0 +1,723 @@ +/**************************************************************************************************************************** + ConfigOnDoubleReset.ino + For Ethernet shields using ESP32_SC_ENC (ESP32_S2/S3/C3 + LwIP ENC28J60) + + 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/ESP32_SC_ENC_Manager + Licensed under MIT license + *****************************************************************************************************************************/ +/**************************************************************************************************************************** + This example will open a configuration portal when the reset button is pressed twice. + This method works well on Wemos boards which have a single reset button on board. It avoids using a pin for launching the configuration portal. + + Settings + There are two values to be set in the sketch. + + DRD_TIMEOUT - Number of seconds to wait for the second reset. Set to 10 in the example. + DRD_ADDRESS - The address in ESP8266 RTC RAM to store the flag. This memory must not be used for other purposes in the same sketch. Set to 0 in the example. + + This example, originally relied on the Double Reset Detector library from https://github.com/datacute/DoubleResetDetector + To support ESP32, use ESP_DoubleResetDetector library from //https://github.com/khoih-prog/ESP_DoubleResetDetector + *****************************************************************************************************************************/ + +#if !( defined(ESP32) ) + #error This code is designed for (ESP32_S2/3, ESP32_C3 + ENC28J60) to run on ESP32 platform! Please check your Tools->Board setting. +#endif + +// Use from 0 to 4. Higher number, more debugging messages and memory usage. +#define _ESP32_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 + +////////////////////////////////////////////////////////////// + +// Enter a MAC address and IP address for your controller below. +#define NUMBER_OF_MAC 20 + +byte mac[][NUMBER_OF_MAC] = +{ + { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0x01 }, + { 0xDE, 0xAD, 0xBE, 0xEF, 0xBE, 0x02 }, + { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0x03 }, + { 0xDE, 0xAD, 0xBE, 0xEF, 0xBE, 0x04 }, + { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0x05 }, + { 0xDE, 0xAD, 0xBE, 0xEF, 0xBE, 0x06 }, + { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0x07 }, + { 0xDE, 0xAD, 0xBE, 0xEF, 0xBE, 0x08 }, + { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0x09 }, + { 0xDE, 0xAD, 0xBE, 0xEF, 0xBE, 0x0A }, + { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0x0B }, + { 0xDE, 0xAD, 0xBE, 0xEF, 0xBE, 0x0C }, + { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0x0D }, + { 0xDE, 0xAD, 0xBE, 0xEF, 0xBE, 0x0E }, + { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0x0F }, + { 0xDE, 0xAD, 0xBE, 0xEF, 0xBE, 0x10 }, + { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0x11 }, + { 0xDE, 0xAD, 0xBE, 0xEF, 0xBE, 0x12 }, + { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0x13 }, + { 0xDE, 0xAD, 0xBE, 0xEF, 0xBE, 0x14 }, +}; + +////////////////////////////////////////////////////////// + +// For ENC28J60 & ESP32-S3 +// Optional values to override default settings +// Don't change unless you know what you're doing +//#define SPI_HOST SPI2_HOST +//#define SPI_CLOCK_MHZ 8 + +// Must connect INT to GPIOxx or not working +//#define INT_GPIO 4 + +//#define MISO_GPIO 13 +//#define MOSI_GPIO 11 +//#define SCK_GPIO 12 +//#define CS_GPIO 10 + +////////////////////////////////////////////////////////// + +#include + +//Ported to ESP32 +#include + +// LittleFS has higher priority than SPIFFS +#if ( defined(ESP_ARDUINO_VERSION_MAJOR) && (ESP_ARDUINO_VERSION_MAJOR >= 2) ) + #define USE_LITTLEFS true + #define USE_SPIFFS false +#elif defined(ARDUINO_ESP32C3_DEV) + // For core v1.0.6-, ESP32-C3 only supporting SPIFFS and EEPROM. To use v2.0.0+ for LittleFS + #define USE_LITTLEFS false + #define USE_SPIFFS true +#endif + +#if USE_LITTLEFS + // Use LittleFS + #include "FS.h" + + // Check cores/esp32/esp_arduino_version.h and cores/esp32/core_version.h + //#if ( ESP_ARDUINO_VERSION >= ESP_ARDUINO_VERSION_VAL(2, 0, 0) ) //(ESP_ARDUINO_VERSION_MAJOR >= 2) + #if ( defined(ESP_ARDUINO_VERSION_MAJOR) && (ESP_ARDUINO_VERSION_MAJOR >= 2) ) + #if (_ESP32_ETH_MGR_LOGLEVEL_ > 3) + #warning Using ESP32 Core 1.0.6 or 2.0.0+ + #endif + + // The library has been merged into esp32 core from release 1.0.6 + #include // https://github.com/espressif/arduino-esp32/tree/master/libraries/LittleFS + + FS* filesystem = &LittleFS; + #define FileFS LittleFS + #define FS_Name "LittleFS" + #else + #if (_ESP32_ETH_MGR_LOGLEVEL_ > 3) + #warning Using ESP32 Core 1.0.5-. You must install LITTLEFS library + #endif + + // The library has been merged into esp32 core from release 1.0.6 + #include // https://github.com/lorol/LITTLEFS + + FS* filesystem = &LITTLEFS; + #define FileFS LITTLEFS + #define FS_Name "LittleFS" + #endif + +#elif USE_SPIFFS + #include + FS* filesystem = &SPIFFS; + #define FileFS SPIFFS + #define FS_Name "SPIFFS" +#else + // +Use FFat + #include + FS* filesystem = &FFat; + #define FileFS FFat + #define FS_Name "FFat" +#endif +////// + +#define LED_BUILTIN 2 +#define LED_ON HIGH +#define LED_OFF LOW + +// 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 + +// 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 +#if USE_LITTLEFS + #define ESP_DRD_USE_LITTLEFS true + #define ESP_DRD_USE_SPIFFS false + #define ESP_DRD_USE_EEPROM false +#elif USE_SPIFFS + #define ESP_DRD_USE_LITTLEFS false + #define ESP_DRD_USE_SPIFFS true + #define ESP_DRD_USE_EEPROM false +#else + #define ESP_DRD_USE_LITTLEFS false + #define ESP_DRD_USE_SPIFFS false + #define ESP_DRD_USE_EEPROM true +#endif + +#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 (_ESP32_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 (_ESP32_ETH_MGR_LOGLEVEL_ > 3) + #warning Using static IP + #endif + + IPAddress stationIP = IPAddress(192, 168, 2, 232); + IPAddress gatewayIP = IPAddress(192, 168, 2, 1); + IPAddress netMask = IPAddress(255, 255, 255, 0); +#endif + +//////////////////////////////////////////// + + +#define USE_CONFIGURABLE_DNS true + +IPAddress dns1IP = gatewayIP; +IPAddress dns2IP = IPAddress(8, 8, 8, 8); + +#include //https://github.com/khoih-prog/ESP32_SC_ENC_Manager + +#define HTTP_PORT 80 + +/////////////////////////////////////////// +/****************************************** + // Defined in ESP32_SC_ENC_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() +{ + struct tm timeinfo; + + getLocalTime( &timeinfo ); + + // Valid only if year > 2000. + // You can get from timeinfo : tm_year, tm_mon, tm_mday, tm_hour, tm_min, tm_sec + if (timeinfo.tm_year > 100 ) + { + Serial.print("Local Date/Time: "); + Serial.print( asctime( &timeinfo ) ); + } +} + +#endif + +void heartBeatPrint() +{ +#if USE_ESP_ETH_MANAGER_NTP + printLocalTime(); +#else + static int num = 1; + + if (ESP32_ENC_isConnected()) + 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 beginEthernet() +{ + LOGWARN(F("Default SPI pinout:")); + LOGWARN1(F("SPI_HOST:"), SPI_HOST); + LOGWARN1(F("MOSI:"), MOSI_GPIO); + LOGWARN1(F("MISO:"), MISO_GPIO); + LOGWARN1(F("SCK:"), SCK_GPIO); + LOGWARN1(F("CS:"), CS_GPIO); + LOGWARN1(F("INT:"), INT_GPIO); + LOGWARN1(F("SPI Clock (MHz):"), SPI_CLOCK_MHZ); + LOGWARN(F("=========================")); + + /////////////////////////////////// + + // To be called before ETH.begin() + ESP32_ENC_onEvent(); + + // start the ethernet connection and the server: + // Use DHCP dynamic IP and random mac + uint16_t index = millis() % NUMBER_OF_MAC; + + //bool begin(int MISO_GPIO, int MOSI_GPIO, int SCLK_GPIO, int CS_GPIO, int INT_GPIO, int SPI_CLOCK_MHZ, + // int SPI_HOST, uint8_t *ENC28J60_Mac = ENC28J60_Default_Mac); + //ETH.begin( MISO_GPIO, MOSI_GPIO, SCK_GPIO, CS_GPIO, INT_GPIO, SPI_CLOCK_MHZ, SPI_HOST ); + ETH.begin( MISO_GPIO, MOSI_GPIO, SCK_GPIO, CS_GPIO, INT_GPIO, SPI_CLOCK_MHZ, SPI_HOST, mac[index] ); +} + +////////////////////////////////////////////////////////////// + +void initEthernet() +{ +#if !( USE_DHCP_IP ) + displayIPConfigStruct(EthSTA_IPconfig); + + // Static IP, leave without this line to get IP via DHCP + //bool config(IPAddress local_ip, IPAddress gateway, IPAddress subnet, IPAddress dns1 = 0, IPAddress dns2 = 0); + //ETH.config(stationIP, gatewayIP, netMask, dns1IP, dns2IP); + ETH.config(EthSTA_IPconfig._sta_static_ip, EthSTA_IPconfig._sta_static_gw, EthSTA_IPconfig._sta_static_sn, + EthSTA_IPconfig._sta_static_dns1); +#endif + + ESP32_ENC_waitForConnect(); +} + +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(500); + + 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(ESP32_SC_ENC_MANAGER_VERSION); + Serial.println(ESP_DOUBLE_RESET_DETECTOR_VERSION); + + Serial.setDebugOutput(false); + + if (FORMAT_FILESYSTEM) + FileFS.format(); + + // Format FileFS if not yet + if (!FileFS.begin(true)) + { + 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(); + + beginEthernet(); + + 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 ESP32-XXXXXX + //ESP32_SC_ENC_Manager ESP32_SC_ENC_manager; + // Use this to personalize DHCP hostname (RFC952 conformed) + ESP32_SC_ENC_Manager ESP32_SC_ENC_manager("ConfigOnDoubleReset"); + +#if !USE_DHCP_IP + // Set (static IP, Gateway, Subnetmask, DNS1 and DNS2) or (IP, Gateway, Subnetmask) + ESP32_SC_ENC_manager.setSTAStaticIPConfig(EthSTA_IPconfig); +#endif + +#if USING_CORS_FEATURE + ESP32_SC_ENC_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. + ESP32_SC_ENC_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); + + //configTzTime(Ethconfig.TZ, "pool.ntp.org" ); + configTzTime(Ethconfig.TZ, "time.nist.gov", "0.pool.ntp.org", "1.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. + ESP32_SC_ENC_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. + //ESP32_SC_ENC_manager.setConfigPortalTimeout(600); + + // Starts an access point + if (!ESP32_SC_ENC_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 = ESP32_SC_ENC_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 = ESP32_SC_ENC_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); + + //configTzTime(Ethconfig.TZ, "pool.ntp.org" ); + configTzTime(Ethconfig.TZ, "time.nist.gov", "0.pool.ntp.org", "1.pool.ntp.org"); + } + else + { + LOGERROR(F("Current Timezone Name is not set. Enter Config Portal to set.")); + } + +#endif + + ESP32_SC_ENC_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.restart(); + 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 (ESP32_ENC_isConnected()) + { + 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..8296f70 --- /dev/null +++ b/examples/ConfigOnDoubleReset_TZ/ConfigOnDoubleReset_TZ.ino @@ -0,0 +1,750 @@ +/**************************************************************************************************************************** + ConfigOnDoubleReset_TZ.ino + For Ethernet shields using ESP32_SC_ENC (ESP32_S2/S3/C3 + LwIP ENC28J60) + + 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/ESP32_SC_ENC_Manager + Licensed under MIT license + *****************************************************************************************************************************/ +/**************************************************************************************************************************** + This example will open a configuration portal when the reset button is pressed twice. + This method works well on Wemos boards which have a single reset button on board. It avoids using a pin for launching the configuration portal. + + Settings + There are two values to be set in the sketch. + + DRD_TIMEOUT - Number of seconds to wait for the second reset. Set to 10 in the example. + DRD_ADDRESS - The address in ESP8266 RTC RAM to store the flag. This memory must not be used for other purposes in the same sketch. Set to 0 in the example. + + This example, originally relied on the Double Reset Detector library from https://github.com/datacute/DoubleResetDetector + To support ESP32, use ESP_DoubleResetDetector library from //https://github.com/khoih-prog/ESP_DoubleResetDetector + *****************************************************************************************************************************/ + +#if !( defined(ESP32) ) + #error This code is designed for (ESP32_S2/3, ESP32_C3 + ENC28J60) to run on ESP32 platform! Please check your Tools->Board setting. +#endif + +// Use from 0 to 4. Higher number, more debugging messages and memory usage. +#define _ESP32_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 + +////////////////////////////////////////////////////////////// + +// Enter a MAC address and IP address for your controller below. +#define NUMBER_OF_MAC 20 + +byte mac[][NUMBER_OF_MAC] = +{ + { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0x01 }, + { 0xDE, 0xAD, 0xBE, 0xEF, 0xBE, 0x02 }, + { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0x03 }, + { 0xDE, 0xAD, 0xBE, 0xEF, 0xBE, 0x04 }, + { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0x05 }, + { 0xDE, 0xAD, 0xBE, 0xEF, 0xBE, 0x06 }, + { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0x07 }, + { 0xDE, 0xAD, 0xBE, 0xEF, 0xBE, 0x08 }, + { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0x09 }, + { 0xDE, 0xAD, 0xBE, 0xEF, 0xBE, 0x0A }, + { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0x0B }, + { 0xDE, 0xAD, 0xBE, 0xEF, 0xBE, 0x0C }, + { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0x0D }, + { 0xDE, 0xAD, 0xBE, 0xEF, 0xBE, 0x0E }, + { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0x0F }, + { 0xDE, 0xAD, 0xBE, 0xEF, 0xBE, 0x10 }, + { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0x11 }, + { 0xDE, 0xAD, 0xBE, 0xEF, 0xBE, 0x12 }, + { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0x13 }, + { 0xDE, 0xAD, 0xBE, 0xEF, 0xBE, 0x14 }, +}; + +////////////////////////////////////////////////////////// + +// For ENC28J60 & ESP32-S3 +// Optional values to override default settings +// Don't change unless you know what you're doing +//#define SPI_HOST SPI2_HOST +//#define SPI_CLOCK_MHZ 8 + +// Must connect INT to GPIOxx or not working +//#define INT_GPIO 4 + +//#define MISO_GPIO 13 +//#define MOSI_GPIO 11 +//#define SCK_GPIO 12 +//#define CS_GPIO 10 + +////////////////////////////////////////////////////////// + +#include + +//Ported to ESP32 +#include + +// LittleFS has higher priority than SPIFFS +#if ( defined(ESP_ARDUINO_VERSION_MAJOR) && (ESP_ARDUINO_VERSION_MAJOR >= 2) ) + #define USE_LITTLEFS true + #define USE_SPIFFS false +#elif defined(ARDUINO_ESP32C3_DEV) + // For core v1.0.6-, ESP32-C3 only supporting SPIFFS and EEPROM. To use v2.0.0+ for LittleFS + #define USE_LITTLEFS false + #define USE_SPIFFS true +#endif + +#if USE_LITTLEFS + // Use LittleFS + #include "FS.h" + + // Check cores/esp32/esp_arduino_version.h and cores/esp32/core_version.h + //#if ( ESP_ARDUINO_VERSION >= ESP_ARDUINO_VERSION_VAL(2, 0, 0) ) //(ESP_ARDUINO_VERSION_MAJOR >= 2) + #if ( defined(ESP_ARDUINO_VERSION_MAJOR) && (ESP_ARDUINO_VERSION_MAJOR >= 2) ) + #if (_ESP32_ETH_MGR_LOGLEVEL_ > 3) + #warning Using ESP32 Core 1.0.6 or 2.0.0+ + #endif + + // The library has been merged into esp32 core from release 1.0.6 + #include // https://github.com/espressif/arduino-esp32/tree/master/libraries/LittleFS + + FS* filesystem = &LittleFS; + #define FileFS LittleFS + #define FS_Name "LittleFS" + #else + #if (_ESP32_ETH_MGR_LOGLEVEL_ > 3) + #warning Using ESP32 Core 1.0.5-. You must install LITTLEFS library + #endif + + // The library has been merged into esp32 core from release 1.0.6 + #include // https://github.com/lorol/LITTLEFS + + FS* filesystem = &LITTLEFS; + #define FileFS LITTLEFS + #define FS_Name "LittleFS" + #endif + +#elif USE_SPIFFS + #include + FS* filesystem = &SPIFFS; + #define FileFS SPIFFS + #define FS_Name "SPIFFS" +#else + // +Use FFat + #include + FS* filesystem = &FFat; + #define FileFS FFat + #define FS_Name "FFat" +#endif + +////////////////////////////////////////////////////////////// + +#define LED_BUILTIN 2 +#define LED_ON HIGH +#define LED_OFF LOW + +////////////////////////////////////////////////////////////// + +// 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 +#if USE_LITTLEFS + #define ESP_DRD_USE_LITTLEFS true + #define ESP_DRD_USE_SPIFFS false + #define ESP_DRD_USE_EEPROM false +#elif USE_SPIFFS + #define ESP_DRD_USE_LITTLEFS false + #define ESP_DRD_USE_SPIFFS true + #define ESP_DRD_USE_EEPROM false +#else + #define ESP_DRD_USE_LITTLEFS false + #define ESP_DRD_USE_SPIFFS false + #define ESP_DRD_USE_EEPROM true +#endif + +#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 (_ESP32_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 (_ESP32_ETH_MGR_LOGLEVEL_ > 3) + #warning Using static IP + #endif + + IPAddress stationIP = IPAddress(192, 168, 2, 232); + IPAddress gatewayIP = IPAddress(192, 168, 2, 1); + IPAddress netMask = IPAddress(255, 255, 255, 0); +#endif + +////////////////////////////////////////////////////////////// + +#define USE_CONFIGURABLE_DNS true + +IPAddress dns1IP = gatewayIP; +IPAddress dns2IP = IPAddress(8, 8, 8, 8); + +#include //https://github.com/khoih-prog/ESP32_SC_ENC_Manager + +#define HTTP_PORT 80 + +////////////////////////////////////////////////////////////// + +/****************************************** + // Defined in ESP32_SC_ENC_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() +{ + struct tm timeinfo; + + getLocalTime( &timeinfo ); + + // Valid only if year > 2000. + // You can get from timeinfo : tm_year, tm_mon, tm_mday, tm_hour, tm_min, tm_sec + if (timeinfo.tm_year > 100 ) + { + Serial.print("Local Date/Time: "); + Serial.print( asctime( &timeinfo ) ); + } +} +#endif + +////////////////////////////////////////////////////////////// + +void heartBeatPrint() +{ +#if USE_ESP_ETH_MANAGER_NTP + printLocalTime(); +#else + static int num = 1; + + if (ESP32_ENC_isConnected()) + 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 beginEthernet() +{ + LOGWARN(F("Default SPI pinout:")); + LOGWARN1(F("SPI_HOST:"), SPI_HOST); + LOGWARN1(F("MOSI:"), MOSI_GPIO); + LOGWARN1(F("MISO:"), MISO_GPIO); + LOGWARN1(F("SCK:"), SCK_GPIO); + LOGWARN1(F("CS:"), CS_GPIO); + LOGWARN1(F("INT:"), INT_GPIO); + LOGWARN1(F("SPI Clock (MHz):"), SPI_CLOCK_MHZ); + LOGWARN(F("=========================")); + + /////////////////////////////////// + + // To be called before ETH.begin() + ESP32_ENC_onEvent(); + + // start the ethernet connection and the server: + // Use DHCP dynamic IP and random mac + uint16_t index = millis() % NUMBER_OF_MAC; + + //bool begin(int MISO_GPIO, int MOSI_GPIO, int SCLK_GPIO, int CS_GPIO, int INT_GPIO, int SPI_CLOCK_MHZ, + // int SPI_HOST, uint8_t *ENC28J60_Mac = ENC28J60_Default_Mac); + //ETH.begin( MISO_GPIO, MOSI_GPIO, SCK_GPIO, CS_GPIO, INT_GPIO, SPI_CLOCK_MHZ, SPI_HOST ); + ETH.begin( MISO_GPIO, MOSI_GPIO, SCK_GPIO, CS_GPIO, INT_GPIO, SPI_CLOCK_MHZ, SPI_HOST, mac[index] ); +} + +////////////////////////////////////////////////////////////// + +void initEthernet() +{ +#if !( USE_DHCP_IP ) + displayIPConfigStruct(EthSTA_IPconfig); + + // Static IP, leave without this line to get IP via DHCP + //bool config(IPAddress local_ip, IPAddress gateway, IPAddress subnet, IPAddress dns1 = 0, IPAddress dns2 = 0); + //ETH.config(stationIP, gatewayIP, netMask, dns1IP, dns2IP); + ETH.config(EthSTA_IPconfig._sta_static_ip, EthSTA_IPconfig._sta_static_gw, EthSTA_IPconfig._sta_static_sn, + EthSTA_IPconfig._sta_static_dns1); +#endif + + ESP32_ENC_waitForConnect(); +} + +////////////////////////////////////////////////////////////// + +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(500); + + 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(ESP32_SC_ENC_MANAGER_VERSION); + Serial.println(ESP_DOUBLE_RESET_DETECTOR_VERSION); + + Serial.setDebugOutput(false); + + if (FORMAT_FILESYSTEM) + FileFS.format(); + + // Format FileFS if not yet +#ifdef ESP32 + + if (!FileFS.begin(true)) +#else + if (!FileFS.begin()) +#endif + { +#ifdef ESP8266 + FileFS.format(); +#endif + + 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(); + + beginEthernet(); + + 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 ESP32-XXXXXX + //ESP32_SC_ENC_Manager ESP32_SC_ENC_manager; + // Use this to personalize DHCP hostname (RFC952 conformed) + ESP32_SC_ENC_Manager ESP32_SC_ENC_manager("ConfigOnDoubleReset_TZ"); + +#if !USE_DHCP_IP + // Set (static IP, Gateway, Subnetmask, DNS1 and DNS2) or (IP, Gateway, Subnetmask) + ESP32_SC_ENC_manager.setSTAStaticIPConfig(EthSTA_IPconfig); +#endif + +#if USING_CORS_FEATURE + ESP32_SC_ENC_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. + ESP32_SC_ENC_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); + + //configTzTime(Ethconfig.TZ, "pool.ntp.org" ); + configTzTime(Ethconfig.TZ, "time.nist.gov", "0.pool.ntp.org", "1.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. + ESP32_SC_ENC_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. + //ESP32_SC_ENC_manager.setConfigPortalTimeout(600); + + // Starts an access point + if (!ESP32_SC_ENC_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 = ESP32_SC_ENC_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 = ESP32_SC_ENC_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); + + //configTzTime(Ethconfig.TZ, "pool.ntp.org" ); + configTzTime(Ethconfig.TZ, "time.nist.gov", "0.pool.ntp.org", "1.pool.ntp.org"); + } + else + { + LOGERROR(F("Current Timezone Name is not set. Enter Config Portal to set.")); + } + +#endif + + ESP32_SC_ENC_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 (ESP32_ENC_isConnected()) + { + 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..9fc8369 --- /dev/null +++ b/examples/ConfigOnSwitch/ConfigOnSwitch.ino @@ -0,0 +1,908 @@ +/**************************************************************************************************************************** + ConfigOnSwitch.ino + For Ethernet shields using ESP32_SC_ENC (ESP32_S2/S3/C3 + LwIP ENC28J60) + + 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/ESP32_SC_ENC_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(ESP32) ) + #error This code is designed for (ESP32_S2/3, ESP32_C3 + ENC28J60) to run on ESP32 platform! Please check your Tools->Board setting. +#endif + +////////////////////////////////////////////////////////////// + +// Use from 0 to 4. Higher number, more debugging messages and memory usage. +#define _ESP32_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 + +////////////////////////////////////////////////////////////// + +// Enter a MAC address and IP address for your controller below. +#define NUMBER_OF_MAC 20 + +byte mac[][NUMBER_OF_MAC] = +{ + { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0x01 }, + { 0xDE, 0xAD, 0xBE, 0xEF, 0xBE, 0x02 }, + { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0x03 }, + { 0xDE, 0xAD, 0xBE, 0xEF, 0xBE, 0x04 }, + { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0x05 }, + { 0xDE, 0xAD, 0xBE, 0xEF, 0xBE, 0x06 }, + { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0x07 }, + { 0xDE, 0xAD, 0xBE, 0xEF, 0xBE, 0x08 }, + { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0x09 }, + { 0xDE, 0xAD, 0xBE, 0xEF, 0xBE, 0x0A }, + { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0x0B }, + { 0xDE, 0xAD, 0xBE, 0xEF, 0xBE, 0x0C }, + { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0x0D }, + { 0xDE, 0xAD, 0xBE, 0xEF, 0xBE, 0x0E }, + { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0x0F }, + { 0xDE, 0xAD, 0xBE, 0xEF, 0xBE, 0x10 }, + { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0x11 }, + { 0xDE, 0xAD, 0xBE, 0xEF, 0xBE, 0x12 }, + { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0x13 }, + { 0xDE, 0xAD, 0xBE, 0xEF, 0xBE, 0x14 }, +}; + +////////////////////////////////////////////////////////// + +// For ENC28J60 & ESP32-S3 +// Optional values to override default settings +// Don't change unless you know what you're doing +//#define SPI_HOST SPI2_HOST +//#define SPI_CLOCK_MHZ 8 + +// Must connect INT to GPIOxx or not working +//#define INT_GPIO 4 + +//#define MISO_GPIO 13 +//#define MOSI_GPIO 11 +//#define SCK_GPIO 12 +//#define CS_GPIO 10 + +////////////////////////////////////////////////////////// + +//For ESP32, To use ESP32 Dev Module, QIO, Flash 4MB/80MHz, Upload 921600 + +//Ported to ESP32 +#include + +////////////////////////////////////////////////////////////// + +// LittleFS has higher priority than SPIFFS +#if ( defined(ESP_ARDUINO_VERSION_MAJOR) && (ESP_ARDUINO_VERSION_MAJOR >= 2) ) + #define USE_LITTLEFS true + #define USE_SPIFFS false +#elif defined(ARDUINO_ESP32C3_DEV) + // For core v1.0.6-, ESP32-C3 only supporting SPIFFS and EEPROM. To use v2.0.0+ for LittleFS + #define USE_LITTLEFS false + #define USE_SPIFFS true +#endif + +#if USE_LITTLEFS + // Use LittleFS + #include "FS.h" + + // Check cores/esp32/esp_arduino_version.h and cores/esp32/core_version.h + //#if ( ESP_ARDUINO_VERSION >= ESP_ARDUINO_VERSION_VAL(2, 0, 0) ) //(ESP_ARDUINO_VERSION_MAJOR >= 2) + #if ( defined(ESP_ARDUINO_VERSION_MAJOR) && (ESP_ARDUINO_VERSION_MAJOR >= 2) ) + #if (_ESP32_ETH_MGR_LOGLEVEL_ > 3) + #warning Using ESP32 Core 1.0.6 or 2.0.0+ + #endif + + // The library has been merged into esp32 core from release 1.0.6 + #include // https://github.com/espressif/arduino-esp32/tree/master/libraries/LittleFS + + FS* filesystem = &LittleFS; + #define FileFS LittleFS + #define FS_Name "LittleFS" + #else + #if (_ESP32_ETH_MGR_LOGLEVEL_ > 3) + #warning Using ESP32 Core 1.0.5-. You must install LITTLEFS library + #endif + + // The library has been merged into esp32 core from release 1.0.6 + #include // https://github.com/lorol/LITTLEFS + + FS* filesystem = &LITTLEFS; + #define FileFS LITTLEFS + #define FS_Name "LittleFS" + #endif + +#elif USE_SPIFFS + #include + FS* filesystem = &SPIFFS; + #define FileFS SPIFFS + #define FS_Name "SPIFFS" +#else + // Use FFat + #include + FS* filesystem = &FFat; + #define FileFS FFat + #define FS_Name "FFat" +#endif + +////////////////////////////////////////////////////////////// + +#define LED_BUILTIN 2 +#define LED_ON HIGH +#define LED_OFF LOW + +//See file .../hardware/espressif/esp32/variants/(esp32|doitESP32devkitV1)/pins_arduino.h +#define LED_BUILTIN 2 // Pin D2 mapped to pin GPIO2/ADC12 of ESP32, control on-board LED +#define LED_BUILTIN 2 // Pin D2 mapped to pin GPIO2/ADC12 of ESP32, control on-board LED + +#define PIN_D0 0 // Pin D0 mapped to pin GPIO0/BOOT/ADC11/TOUCH1 of ESP32 +#define PIN_D1 1 // Pin D1 mapped to pin GPIO1/TX0 of ESP32 +#define PIN_D2 2 // Pin D2 mapped to pin GPIO2/ADC12/TOUCH2 of ESP32 +#define PIN_D3 3 // Pin D3 mapped to pin GPIO3/RX0 of ESP32 +#define PIN_D4 4 // Pin D4 mapped to pin GPIO4/ADC10/TOUCH0 of ESP32 +#define PIN_D5 5 // Pin D5 mapped to pin GPIO5/SPISS/VSPI_SS of ESP32 +#define PIN_D6 6 // Pin D6 mapped to pin GPIO6/FLASH_SCK of ESP32 +#define PIN_D7 7 // Pin D7 mapped to pin GPIO7/FLASH_D0 of ESP32 +#define PIN_D8 8 // Pin D8 mapped to pin GPIO8/FLASH_D1 of ESP32 +#define PIN_D9 9 // Pin D9 mapped to pin GPIO9/FLASH_D2 of ESP32 + +#define PIN_D10 10 // Pin D10 mapped to pin GPIO10/FLASH_D3 of ESP32 +#define PIN_D11 11 // Pin D11 mapped to pin GPIO11/FLASH_CMD of ESP32 +#define PIN_D12 12 // Pin D12 mapped to pin GPIO12/HSPI_MISO/ADC15/TOUCH5/TDI of ESP32 +#define PIN_D13 13 // Pin D13 mapped to pin GPIO13/HSPI_MOSI/ADC14/TOUCH4/TCK of ESP32 +#define PIN_D14 14 // Pin D14 mapped to pin GPIO14/HSPI_SCK/ADC16/TOUCH6/TMS of ESP32 +#define PIN_D15 15 // Pin D15 mapped to pin GPIO15/HSPI_SS/ADC13/TOUCH3/TDO of ESP32 +#define PIN_D16 16 // Pin D16 mapped to pin GPIO16/TX2 of ESP32 +#define PIN_D17 17 // Pin D17 mapped to pin GPIO17/RX2 of ESP32 +#define PIN_D18 18 // Pin D18 mapped to pin GPIO18/VSPI_SCK of ESP32 +#define PIN_D19 19 // Pin D19 mapped to pin GPIO19/VSPI_MISO of ESP32 + +#define PIN_D21 21 // Pin D21 mapped to pin GPIO21/SDA of ESP32 +#define PIN_D22 22 // Pin D22 mapped to pin GPIO22/SCL of ESP32 +#define PIN_D23 23 // Pin D23 mapped to pin GPIO23/VSPI_MOSI of ESP32 +#define PIN_D24 24 // Pin D24 mapped to pin GPIO24 of ESP32 +#define PIN_D25 25 // Pin D25 mapped to pin GPIO25/ADC18/DAC1 of ESP32 +#define PIN_D26 26 // Pin D26 mapped to pin GPIO26/ADC19/DAC2 of ESP32 +#define PIN_D27 27 // Pin D27 mapped to pin GPIO27/ADC17/TOUCH7 of ESP32 + +#define PIN_D32 32 // Pin D32 mapped to pin GPIO32/ADC4/TOUCH9 of ESP32 +#define PIN_D33 33 // Pin D33 mapped to pin GPIO33/ADC5/TOUCH8 of ESP32 +#define PIN_D34 34 // Pin D34 mapped to pin GPIO34/ADC6 of ESP32 + +//Only GPIO pin < 34 can be used as output. Pins >= 34 can be only inputs +//See .../cores/esp32/esp32-hal-gpio.h/c +//#define digitalPinIsValid(pin) ((pin) < 40 && esp32_gpioMux[(pin)].reg) +//#define digitalPinCanOutput(pin) ((pin) < 34 && esp32_gpioMux[(pin)].reg) +//#define digitalPinToRtcPin(pin) (((pin) < 40)?esp32_gpioMux[(pin)].rtc:-1) +//#define digitalPinToAnalogChannel(pin) (((pin) < 40)?esp32_gpioMux[(pin)].adc:-1) +//#define digitalPinToTouchChannel(pin) (((pin) < 40)?esp32_gpioMux[(pin)].touch:-1) +//#define digitalPinToDacChannel(pin) (((pin) == 25)?0:((pin) == 26)?1:-1) + +#define PIN_D35 35 // Pin D35 mapped to pin GPIO35/ADC7 of ESP32 +#define PIN_D36 36 // Pin D36 mapped to pin GPIO36/ADC0/SVP of ESP32 +#define PIN_D39 39 // Pin D39 mapped to pin GPIO39/ADC3/SVN of ESP32 + +#define PIN_RX0 3 // Pin RX0 mapped to pin GPIO3/RX0 of ESP32 +#define PIN_TX0 1 // Pin TX0 mapped to pin GPIO1/TX0 of ESP32 + +#define PIN_SCL 22 // Pin SCL mapped to pin GPIO22/SCL of ESP32 +#define PIN_SDA 21 // Pin SDA mapped to pin GPIO21/SDA of ESP32 + +////////////////////////////////////////////////////////////// + +/* Trigger for inititating config mode is Pin D3 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. +*/ +#if ( USING_ESP32_S2 || USING_ESP32_C3 ) + + const int TRIGGER_PIN = PIN_D3; // Pin D3 mapped to pin GPIO03/ADC1-2/TOUCH3 of ESP32-S2 + /* + 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_D4; // Pin D4 mapped to pin GPIO04/ADC1_3/TOUCH4 of ESP32-S2 + +#else + const int TRIGGER_PIN = PIN_D0; // Pin D0 mapped to pin GPIO0/BOOT/ADC11/TOUCH1 of ESP32 + /* + 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_D25; // Pin D25 mapped to pin GPIO25/ADC18/DAC1 of ESP32 +#endif + +////////////////////////////////////////////////////////////// + +// 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 (_ESP32_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 (_ESP32_ETH_MGR_LOGLEVEL_ > 3) + #warning Using static IP + #endif + + IPAddress stationIP = IPAddress(192, 168, 2, 232); + IPAddress gatewayIP = IPAddress(192, 168, 2, 1); + IPAddress netMask = IPAddress(255, 255, 255, 0); +#endif + +////////////////////////////////////////////////////////////// + +#define USE_CONFIGURABLE_DNS true + +IPAddress dns1IP = gatewayIP; +IPAddress dns2IP = IPAddress(8, 8, 8, 8); + +#include //https://github.com/khoih-prog/ESP32_SC_ENC_Manager + +#define HTTP_PORT 80 + +////////////////////////////////////////////////////////////// + +/****************************************** + // Defined in ESP32_SC_ENC_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() +{ + struct tm timeinfo; + + getLocalTime( &timeinfo ); + + // Valid only if year > 2000. + // You can get from timeinfo : tm_year, tm_mon, tm_mday, tm_hour, tm_min, tm_sec + if (timeinfo.tm_year > 100 ) + { + Serial.print("Local Date/Time: "); + Serial.print( asctime( &timeinfo ) ); + } +} +#endif + +////////////////////////////////////////////////////////////// + +void heartBeatPrint() +{ +#if USE_ESP_ETH_MANAGER_NTP + printLocalTime(); +#else + static int num = 1; + + if (ESP32_ENC_isConnected()) + 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 beginEthernet() +{ + LOGWARN(F("Default SPI pinout:")); + LOGWARN1(F("SPI_HOST:"), SPI_HOST); + LOGWARN1(F("MOSI:"), MOSI_GPIO); + LOGWARN1(F("MISO:"), MISO_GPIO); + LOGWARN1(F("SCK:"), SCK_GPIO); + LOGWARN1(F("CS:"), CS_GPIO); + LOGWARN1(F("INT:"), INT_GPIO); + LOGWARN1(F("SPI Clock (MHz):"), SPI_CLOCK_MHZ); + LOGWARN(F("=========================")); + + /////////////////////////////////// + + // To be called before ETH.begin() + ESP32_ENC_onEvent(); + + // start the ethernet connection and the server: + // Use DHCP dynamic IP and random mac + uint16_t index = millis() % NUMBER_OF_MAC; + + //bool begin(int MISO_GPIO, int MOSI_GPIO, int SCLK_GPIO, int CS_GPIO, int INT_GPIO, int SPI_CLOCK_MHZ, + // int SPI_HOST, uint8_t *ENC28J60_Mac = ENC28J60_Default_Mac); + //ETH.begin( MISO_GPIO, MOSI_GPIO, SCK_GPIO, CS_GPIO, INT_GPIO, SPI_CLOCK_MHZ, SPI_HOST ); + ETH.begin( MISO_GPIO, MOSI_GPIO, SCK_GPIO, CS_GPIO, INT_GPIO, SPI_CLOCK_MHZ, SPI_HOST, mac[index] ); +} + +////////////////////////////////////////////////////////////// + +void initEthernet() +{ +#if !( USE_DHCP_IP ) + displayIPConfigStruct(EthSTA_IPconfig); + + // Static IP, leave without this line to get IP via DHCP + //bool config(IPAddress local_ip, IPAddress gateway, IPAddress subnet, IPAddress dns1 = 0, IPAddress dns2 = 0); + //ETH.config(stationIP, gatewayIP, netMask, dns1IP, dns2IP); + ETH.config(EthSTA_IPconfig._sta_static_ip, EthSTA_IPconfig._sta_static_gw, EthSTA_IPconfig._sta_static_sn, + EthSTA_IPconfig._sta_static_dns1); +#endif + + ESP32_ENC_waitForConnect(); +} + +////////////////////////////////////////////////////////////// + +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(500); + + 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(ESP32_SC_ENC_MANAGER_VERSION); + + Serial.setDebugOutput(false); + + if (FORMAT_FILESYSTEM) + FileFS.format(); + + // Format FileFS if not yet +#ifdef ESP32 + + if (!FileFS.begin(true)) +#else + if (!FileFS.begin()) +#endif + { +#ifdef ESP8266 + FileFS.format(); +#endif + + 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(); + + beginEthernet(); + + initSTAIPConfigStruct(EthSTA_IPconfig); + + digitalWrite(LED_BUILTIN, LED_ON); // turn the LED on by making the voltage LOW to tell us we are in configuration mode. + + //Local intialization. Once its business is done, there is no need to keep it around + // Use this to default DHCP hostname to ESP32-XXXXXX + //ESP32_SC_ENC_Manager ESP32_SC_ENC_manager; + // Use this to personalize DHCP hostname (RFC952 conformed) + ESP32_SC_ENC_Manager ESP32_SC_ENC_manager("ConfigOnSwitch"); + + ESP32_SC_ENC_manager.setDebugOutput(true); + +#if !USE_DHCP_IP + // Set (static IP, Gateway, Subnetmask, DNS1 and DNS2) or (IP, Gateway, Subnetmask) + ESP32_SC_ENC_manager.setSTAStaticIPConfig(EthSTA_IPconfig); +#endif + +#if USING_CORS_FEATURE + ESP32_SC_ENC_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. + ESP32_SC_ENC_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); + + //configTzTime(Ethconfig.TZ, "pool.ntp.org" ); + configTzTime(Ethconfig.TZ, "time.nist.gov", "0.pool.ntp.org", "1.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. + //ESP32_SC_ENC_manager.setConfigPortalTimeout(600); + + // Starts an access point + if (!ESP32_SC_ENC_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 = ESP32_SC_ENC_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 = ESP32_SC_ENC_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); + + //configTzTime(Ethconfig.TZ, "pool.ntp.org" ); + configTzTime(Ethconfig.TZ, "time.nist.gov", "0.pool.ntp.org", "1.pool.ntp.org"); + } + else + { + LOGERROR(F("Current Timezone Name is not set. Enter Config Portal to set.")); + } + +#endif + + ESP32_SC_ENC_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 (ESP32_ENC_isConnected()) + { + Serial.print(F("connected. Local IP: ")); + Serial.println(ETH.localIP()); + } +} + +////////////////////////////////////////////////////////////// + +void loop() +{ + // is configuration portal requested? + if ((digitalRead(TRIGGER_PIN) == LOW) || (digitalRead(TRIGGER_PIN2) == LOW)) + { + Serial.println(F("\nConfiguration portal requested.")); + digitalWrite(LED_BUILTIN, LED_ON); // turn the LED on by making the voltage LOW to tell us we are in configuration mode. + + //Local intialization. Once its business is done, there is no need to keep it around + // Use this to default DHCP hostname to ESP32-XXXXXX + //ESP32_SC_ENC_Manager ESP32_SC_ENC_manager; + // Use this to personalize DHCP hostname (RFC952 conformed) + ESP32_SC_ENC_Manager ESP32_SC_ENC_manager("ConfigOnSwitch"); + +#if !USE_DHCP_IP +#if USE_CONFIGURABLE_DNS + // Set static IP, Gateway, Subnetmask, DNS1 and DNS2 + ESP32_SC_ENC_manager.setSTAStaticIPConfig(stationIP, gatewayIP, netMask, dns1IP, dns2IP); +#else + // Set static IP, Gateway, Subnetmask, Use auto DNS1 and DNS2. + ESP32_SC_ENC_manager.setSTAStaticIPConfig(stationIP, gatewayIP, netMask); +#endif +#endif + +#if USING_CORS_FEATURE + ESP32_SC_ENC_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. + ESP32_SC_ENC_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 + ESP32_SC_ENC_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 (!ESP32_SC_ENC_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 = ESP32_SC_ENC_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 = ESP32_SC_ENC_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); + + //configTzTime(Ethconfig.TZ, "pool.ntp.org" ); + configTzTime(Ethconfig.TZ, "time.nist.gov", "0.pool.ntp.org", "1.pool.ntp.org"); + } + else + { + LOGERROR(F("Current Timezone Name is not set. Enter Config Portal to set.")); + } + +#endif + + ESP32_SC_ENC_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.restart(); + 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..ca5e886 --- /dev/null +++ b/examples/ConfigOnSwitchFS/ConfigOnSwitchFS.ino @@ -0,0 +1,1115 @@ +/**************************************************************************************************************************** + ConfigOnSwitchFS.ino + For Ethernet shields using ESP32_SC_ENC (ESP32_S2/S3/C3 + LwIP ENC28J60) + + 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/ESP32_SC_ENC_Manager + Licensed under MIT license + *****************************************************************************************************************************/ +/**************************************************************************************************************************** + This example will open a configuration portal when the reset button is pressed twice. + This method works well on Wemos boards which have a single reset button on board. It avoids using a pin for launching the configuration portal. + + Settings + There are two values to be set in the sketch. + + DRD_TIMEOUT - Number of seconds to wait for the second reset. Set to 10 in the example. + DRD_ADDRESS - The address in ESP8266 RTC RAM to store the flag. This memory must not be used for other purposes in the same sketch. Set to 0 in the example. + + This example, originally relied on the Double Reset Detector library from https://github.com/datacute/DoubleResetDetector + To support ESP32, use ESP_DoubleResetDetector library from //https://github.com/khoih-prog/ESP_DoubleResetDetector + *****************************************************************************************************************************/ +/**************************************************************************************************************************** + This example will open a configuration portal when no configuration has been previously entered or when a button is pushed. + It is the easiest scenario for configuration but requires a pin and a button on the ESP8266 device. + The Flash button is convenient for this on NodeMCU devices. + + Also in this example a password is required to connect to the configuration portal + network. This is inconvenient but means that only those who know the password or those + already connected to the target network can access the configuration portal and + the network credentials will be sent from the browser over an encrypted connection and + can not be read by observers. + *****************************************************************************************************************************/ + +#if !( defined(ESP32) ) + #error This code is designed for (ESP32_S2/3, ESP32_C3 + ENC28J60) to run on ESP32 platform! Please check your Tools->Board setting. +#endif + +////////////////////////////////////////////////////////////// + +// Use from 0 to 4. Higher number, more debugging messages and memory usage. +#define _ESP32_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 + +////////////////////////////////////////////////////////////// + +// Enter a MAC address and IP address for your controller below. +#define NUMBER_OF_MAC 20 + +byte mac[][NUMBER_OF_MAC] = +{ + { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0x01 }, + { 0xDE, 0xAD, 0xBE, 0xEF, 0xBE, 0x02 }, + { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0x03 }, + { 0xDE, 0xAD, 0xBE, 0xEF, 0xBE, 0x04 }, + { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0x05 }, + { 0xDE, 0xAD, 0xBE, 0xEF, 0xBE, 0x06 }, + { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0x07 }, + { 0xDE, 0xAD, 0xBE, 0xEF, 0xBE, 0x08 }, + { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0x09 }, + { 0xDE, 0xAD, 0xBE, 0xEF, 0xBE, 0x0A }, + { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0x0B }, + { 0xDE, 0xAD, 0xBE, 0xEF, 0xBE, 0x0C }, + { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0x0D }, + { 0xDE, 0xAD, 0xBE, 0xEF, 0xBE, 0x0E }, + { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0x0F }, + { 0xDE, 0xAD, 0xBE, 0xEF, 0xBE, 0x10 }, + { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0x11 }, + { 0xDE, 0xAD, 0xBE, 0xEF, 0xBE, 0x12 }, + { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0x13 }, + { 0xDE, 0xAD, 0xBE, 0xEF, 0xBE, 0x14 }, +}; + +////////////////////////////////////////////////////////// + +// For ENC28J60 & ESP32-S3 +// Optional values to override default settings +// Don't change unless you know what you're doing +//#define SPI_HOST SPI2_HOST +//#define SPI_CLOCK_MHZ 8 + +// Must connect INT to GPIOxx or not working +//#define INT_GPIO 4 + +//#define MISO_GPIO 13 +//#define MOSI_GPIO 11 +//#define SCK_GPIO 12 +//#define CS_GPIO 10 + +////////////////////////////////////////////////////////// + +#include +// Now support ArduinoJson 6.0.0+ ( tested with v6.14.1 ) +#include // get it from https://arduinojson.org/ or install via Arduino library manager + +//For ESP32, To use ESP32 Dev Module, QIO, Flash 4MB/80MHz, Upload 921600 +//Ported to ESP32 +#include + +////////////////////////////////////////////////////////////// + +// LittleFS has higher priority than SPIFFS +#if ( defined(ESP_ARDUINO_VERSION_MAJOR) && (ESP_ARDUINO_VERSION_MAJOR >= 2) ) + #define USE_LITTLEFS true + #define USE_SPIFFS false +#elif defined(ARDUINO_ESP32C3_DEV) + // For core v1.0.6-, ESP32-C3 only supporting SPIFFS and EEPROM. To use v2.0.0+ for LittleFS + #define USE_LITTLEFS false + #define USE_SPIFFS true +#endif + +#if USE_LITTLEFS + // Use LittleFS + #include "FS.h" + + // Check cores/esp32/esp_arduino_version.h and cores/esp32/core_version.h + //#if ( ESP_ARDUINO_VERSION >= ESP_ARDUINO_VERSION_VAL(2, 0, 0) ) //(ESP_ARDUINO_VERSION_MAJOR >= 2) + #if ( defined(ESP_ARDUINO_VERSION_MAJOR) && (ESP_ARDUINO_VERSION_MAJOR >= 2) ) + #if (_ESP32_ETH_MGR_LOGLEVEL_ > 3) + #warning Using ESP32 Core 1.0.6 or 2.0.0+ + #endif + + // The library has been merged into esp32 core from release 1.0.6 + #include // https://github.com/espressif/arduino-esp32/tree/master/libraries/LittleFS + + FS* filesystem = &LittleFS; + #define FileFS LittleFS + #define FS_Name "LittleFS" + #else + #if (_ESP32_ETH_MGR_LOGLEVEL_ > 3) + #warning Using ESP32 Core 1.0.5-. You must install LITTLEFS library + #endif + + // The library has been merged into esp32 core from release 1.0.6 + #include // https://github.com/lorol/LITTLEFS + + FS* filesystem = &LITTLEFS; + #define FileFS LITTLEFS + #define FS_Name "LittleFS" + #endif + +#elif USE_SPIFFS + #include + FS* filesystem = &SPIFFS; + #define FileFS SPIFFS + #define FS_Name "SPIFFS" +#else + // +Use FFat + #include + FS* filesystem = &FFat; + #define FileFS FFat + #define FS_Name "FFat" +#endif + +////////////////////////////////////////////////////////////// + +#define LED_BUILTIN 2 +#define LED_ON HIGH +#define LED_OFF LOW + +////////////////////////////////////////////////////////////// + +//See file .../hardware/espressif/esp32/variants/(esp32|doitESP32devkitV1)/pins_arduino.h +#define LED_BUILTIN 2 // Pin D2 mapped to pin GPIO2/ADC12 of ESP32, control on-board LED +#define PIN_LED 2 // Pin D2 mapped to pin GPIO2/ADC12 of ESP32, control on-board LED + +#define PIN_D0 0 // Pin D0 mapped to pin GPIO0/BOOT/ADC11/TOUCH1 of ESP32 +#define PIN_D1 1 // Pin D1 mapped to pin GPIO1/TX0 of ESP32 +#define PIN_D2 2 // Pin D2 mapped to pin GPIO2/ADC12/TOUCH2 of ESP32 +#define PIN_D3 3 // Pin D3 mapped to pin GPIO3/RX0 of ESP32 +#define PIN_D4 4 // Pin D4 mapped to pin GPIO4/ADC10/TOUCH0 of ESP32 +#define PIN_D5 5 // Pin D5 mapped to pin GPIO5/SPISS/VSPI_SS of ESP32 +#define PIN_D6 6 // Pin D6 mapped to pin GPIO6/FLASH_SCK of ESP32 +#define PIN_D7 7 // Pin D7 mapped to pin GPIO7/FLASH_D0 of ESP32 +#define PIN_D8 8 // Pin D8 mapped to pin GPIO8/FLASH_D1 of ESP32 +#define PIN_D9 9 // Pin D9 mapped to pin GPIO9/FLASH_D2 of ESP32 + +#define PIN_D10 10 // Pin D10 mapped to pin GPIO10/FLASH_D3 of ESP32 +#define PIN_D11 11 // Pin D11 mapped to pin GPIO11/FLASH_CMD of ESP32 +#define PIN_D12 12 // Pin D12 mapped to pin GPIO12/HSPI_MISO/ADC15/TOUCH5/TDI of ESP32 +#define PIN_D13 13 // Pin D13 mapped to pin GPIO13/HSPI_MOSI/ADC14/TOUCH4/TCK of ESP32 +#define PIN_D14 14 // Pin D14 mapped to pin GPIO14/HSPI_SCK/ADC16/TOUCH6/TMS of ESP32 +#define PIN_D15 15 // Pin D15 mapped to pin GPIO15/HSPI_SS/ADC13/TOUCH3/TDO of ESP32 +#define PIN_D16 16 // Pin D16 mapped to pin GPIO16/TX2 of ESP32 +#define PIN_D17 17 // Pin D17 mapped to pin GPIO17/RX2 of ESP32 +#define PIN_D18 18 // Pin D18 mapped to pin GPIO18/VSPI_SCK of ESP32 +#define PIN_D19 19 // Pin D19 mapped to pin GPIO19/VSPI_MISO of ESP32 + +#define PIN_D21 21 // Pin D21 mapped to pin GPIO21/SDA of ESP32 +#define PIN_D22 22 // Pin D22 mapped to pin GPIO22/SCL of ESP32 +#define PIN_D23 23 // Pin D23 mapped to pin GPIO23/VSPI_MOSI of ESP32 +#define PIN_D24 24 // Pin D24 mapped to pin GPIO24 of ESP32 +#define PIN_D25 25 // Pin D25 mapped to pin GPIO25/ADC18/DAC1 of ESP32 +#define PIN_D26 26 // Pin D26 mapped to pin GPIO26/ADC19/DAC2 of ESP32 +#define PIN_D27 27 // Pin D27 mapped to pin GPIO27/ADC17/TOUCH7 of ESP32 + +#define PIN_D32 32 // Pin D32 mapped to pin GPIO32/ADC4/TOUCH9 of ESP32 +#define PIN_D33 33 // Pin D33 mapped to pin GPIO33/ADC5/TOUCH8 of ESP32 +#define PIN_D34 34 // Pin D34 mapped to pin GPIO34/ADC6 of ESP32 + +//Only GPIO pin < 34 can be used as output. Pins >= 34 can be only inputs +//See .../cores/esp32/esp32-hal-gpio.h/c +//#define digitalPinIsValid(pin) ((pin) < 40 && esp32_gpioMux[(pin)].reg) +//#define digitalPinCanOutput(pin) ((pin) < 34 && esp32_gpioMux[(pin)].reg) +//#define digitalPinToRtcPin(pin) (((pin) < 40)?esp32_gpioMux[(pin)].rtc:-1) +//#define digitalPinToAnalogChannel(pin) (((pin) < 40)?esp32_gpioMux[(pin)].adc:-1) +//#define digitalPinToTouchChannel(pin) (((pin) < 40)?esp32_gpioMux[(pin)].touch:-1) +//#define digitalPinToDacChannel(pin) (((pin) == 25)?0:((pin) == 26)?1:-1) + +#define PIN_D35 35 // Pin D35 mapped to pin GPIO35/ADC7 of ESP32 +#define PIN_D36 36 // Pin D36 mapped to pin GPIO36/ADC0/SVP of ESP32 +#define PIN_D39 39 // Pin D39 mapped to pin GPIO39/ADC3/SVN of ESP32 + +#define PIN_RX0 3 // Pin RX0 mapped to pin GPIO3/RX0 of ESP32 +#define PIN_TX0 1 // Pin TX0 mapped to pin GPIO1/TX0 of ESP32 + +#define PIN_SCL 22 // Pin SCL mapped to pin GPIO22/SCL of ESP32 +#define PIN_SDA 21 // Pin SDA mapped to pin GPIO21/SDA of ESP32 + +////////////////////////////////////////////////////////////// + +/* Trigger for inititating config mode is Pin D3 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_D0; // Pin D0 mapped to pin GPIO0/BOOT of ESP32_S3 +/* + 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. +*/ +#if ( ARDUINO_ESP32C3_DEV ) + const int TRIGGER_PIN2 = PIN_D8; // Pin D8 mapped to pin GPIO8/FLASH_D1 of ESP32 +#else + const int TRIGGER_PIN2 = PIN_D7; // Pin D7 mapped to pin GPIO7/ADC1_6/TOUCH7 of ESP32_S3 +#endif + +int pinSda = PIN_SDA; // Pin SDA mapped to pin GPIO21/SDA of ESP32 +int pinScl = PIN_SCL; // Pin SCL mapped to pin GPIO22/SCL of ESP32 + +////////////////////////////////////////////////////////////// + +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 (_ESP32_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 (_ESP32_ETH_MGR_LOGLEVEL_ > 3) + #warning Using static IP + #endif + + IPAddress stationIP = IPAddress(192, 168, 2, 232); + IPAddress gatewayIP = IPAddress(192, 168, 2, 1); + IPAddress netMask = IPAddress(255, 255, 255, 0); +#endif + +////////////////////////////////////////////////////////////// + +#define USE_CONFIGURABLE_DNS true + +IPAddress dns1IP = gatewayIP; +IPAddress dns2IP = IPAddress(8, 8, 8, 8); + +#include //https://github.com/khoih-prog/ESP32_SC_ENC_Manager + +#define HTTP_PORT 80 + +////////////////////////////////////////////////////////////// + +/****************************************** + // Defined in ESP32_SC_ENC_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() +{ + struct tm timeinfo; + + getLocalTime( &timeinfo ); + + // Valid only if year > 2000. + // You can get from timeinfo : tm_year, tm_mon, tm_mday, tm_hour, tm_min, tm_sec + if (timeinfo.tm_year > 100 ) + { + Serial.print("Local Date/Time: "); + Serial.print( asctime( &timeinfo ) ); + } +} +#endif + +////////////////////////////////////////////////////////////// + +void heartBeatPrint() +{ +#if USE_ESP_ETH_MANAGER_NTP + printLocalTime(); +#else + static int num = 1; + + if (ESP32_ENC_isConnected()) + 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 beginEthernet() +{ + LOGWARN(F("Default SPI pinout:")); + LOGWARN1(F("SPI_HOST:"), SPI_HOST); + LOGWARN1(F("MOSI:"), MOSI_GPIO); + LOGWARN1(F("MISO:"), MISO_GPIO); + LOGWARN1(F("SCK:"), SCK_GPIO); + LOGWARN1(F("CS:"), CS_GPIO); + LOGWARN1(F("INT:"), INT_GPIO); + LOGWARN1(F("SPI Clock (MHz):"), SPI_CLOCK_MHZ); + LOGWARN(F("=========================")); + + /////////////////////////////////// + + // To be called before ETH.begin() + ESP32_ENC_onEvent(); + + // start the ethernet connection and the server: + // Use DHCP dynamic IP and random mac + uint16_t index = millis() % NUMBER_OF_MAC; + + //bool begin(int MISO_GPIO, int MOSI_GPIO, int SCLK_GPIO, int CS_GPIO, int INT_GPIO, int SPI_CLOCK_MHZ, + // int SPI_HOST, uint8_t *ENC28J60_Mac = ENC28J60_Default_Mac); + //ETH.begin( MISO_GPIO, MOSI_GPIO, SCK_GPIO, CS_GPIO, INT_GPIO, SPI_CLOCK_MHZ, SPI_HOST ); + ETH.begin( MISO_GPIO, MOSI_GPIO, SCK_GPIO, CS_GPIO, INT_GPIO, SPI_CLOCK_MHZ, SPI_HOST, mac[index] ); +} + +////////////////////////////////////////////////////////////// + +void initEthernet() +{ +#if !( USE_DHCP_IP ) + displayIPConfigStruct(EthSTA_IPconfig); + + // Static IP, leave without this line to get IP via DHCP + //bool config(IPAddress local_ip, IPAddress gateway, IPAddress subnet, IPAddress dns1 = 0, IPAddress dns2 = 0); + //ETH.config(stationIP, gatewayIP, netMask, dns1IP, dns2IP); + ETH.config(EthSTA_IPconfig._sta_static_ip, EthSTA_IPconfig._sta_static_gw, EthSTA_IPconfig._sta_static_sn, + EthSTA_IPconfig._sta_static_dns1); +#endif + + ESP32_ENC_waitForConnect(); +} + +////////////////////////////////////////////////////////////// + +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(500); + + 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(ESP32_SC_ENC_MANAGER_VERSION); + + // Initialize the LED digital pin as an output. + pinMode(PIN_LED, OUTPUT); + // Initialize trigger pins + pinMode(TRIGGER_PIN, INPUT_PULLUP); + pinMode(TRIGGER_PIN2, INPUT_PULLUP); + + if (FORMAT_FILESYSTEM) + { + Serial.println(F("Forced Formatting.")); + FileFS.format(); + } + + // Format FileFS if not yet +#ifdef ESP32 + + if (!FileFS.begin(true)) +#else + if (!FileFS.begin()) +#endif + { +#ifdef ESP8266 + FileFS.format(); +#endif + + 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); + } + } + } + + beginEthernet(); + + initSTAIPConfigStruct(EthSTA_IPconfig); + + if (!readConfigFile()) + { + Serial.println(F("Failed to read ConfigFile, using default values")); + } + + unsigned long startedAt = millis(); + + //Local intialization. Once its business is done, there is no need to keep it around + // Use this to default DHCP hostname to ESP32-XXXXXX + //ESP32_SC_ENC_Manager ESP32_SC_ENC_manager; + // Use this to personalize DHCP hostname (RFC952 conformed) + ESP32_SC_ENC_Manager ESP32_SC_ENC_manager("ConfigOnSwitchFS"); + + ESP32_SC_ENC_manager.setDebugOutput(true); + +#if !USE_DHCP_IP + // Set (static IP, Gateway, Subnetmask, DNS1 and DNS2) or (IP, Gateway, Subnetmask) + ESP32_SC_ENC_manager.setSTAStaticIPConfig(EthSTA_IPconfig); +#endif + +#if USING_CORS_FEATURE + ESP32_SC_ENC_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. + ESP32_SC_ENC_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); + + //configTzTime(Ethconfig.TZ, "pool.ntp.org" ); + configTzTime(Ethconfig.TZ, "time.nist.gov", "0.pool.ntp.org", "1.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. + //ESP32_SC_ENC_manager.setConfigPortalTimeout(600); + + // Starts an access point + if (!ESP32_SC_ENC_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 = ESP32_SC_ENC_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 = ESP32_SC_ENC_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); + + //configTzTime(Ethconfig.TZ, "pool.ntp.org" ); + configTzTime(Ethconfig.TZ, "time.nist.gov", "0.pool.ntp.org", "1.pool.ntp.org"); + } + else + { + LOGERROR(F("Current Timezone Name is not set. Enter Config Portal to set.")); + } + +#endif + + ESP32_SC_ENC_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 (ESP32_ENC_isConnected()) + { + Serial.print(F("connected. Local IP: ")); + Serial.println(ETH.localIP()); + } +} + +////////////////////////////////////////////////////////////// + +void loop() +{ + // is configuration portal requested? + if ((digitalRead(TRIGGER_PIN) == LOW) || (digitalRead(TRIGGER_PIN2) == LOW)) + { + Serial.println(F("\nConfiguration portal requested.")); + digitalWrite(LED_BUILTIN, LED_ON); // turn the LED on by making the voltage LOW to tell us we are in configuration mode. + + //Local intialization. Once its business is done, there is no need to keep it around + // Use this to default DHCP hostname to ESP32-XXXXXX + //ESP32_SC_ENC_Manager ESP32_SC_ENC_manager; + // Use this to personalize DHCP hostname (RFC952 conformed) + ESP32_SC_ENC_Manager ESP32_SC_ENC_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. + ESP32_SC_ENC_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: