From 8cba6aa0056568f05c424da4e3c0530c9a4eb40b Mon Sep 17 00:00:00 2001 From: Khoi Hoang <57012152+khoih-prog@users.noreply.github.com> Date: Sat, 17 Jul 2021 02:21:32 -0400 Subject: [PATCH] v3.3.0 to add support to WT32_ETH01 ### Major Releases v3.3.0 1. Add support to **WT32_ETH01 (ESP32 + LAN8720)** boards 2. Add examples with new features --- CONTRIBUTING.md | 2 +- README.md | 158 +++++++-- .../PWM_LEDServer_ESP32.ino | 9 +- .../PWM_LEDServer_ESP8266.ino | 9 +- .../SimpleServerESP32/SimpleServerESP32.ino | 11 +- .../SimpleServer_ESP8266.ino | 14 +- .../SAMD_PWM_LEDServer/SAMD_PWM_LEDServer.ino | 7 +- .../SAMD_SimpleServer/SAMD_SimpleServer.ino | 7 +- .../STM32_PWM_LEDServer.ino | 7 +- .../STM32_SimpleServer/STM32_SimpleServer.ino | 7 +- .../nRF52_PWM_LEDServer.ino | 7 +- .../nRF52_SimpleServer/nRF52_SimpleServer.ino | 7 +- .../RP2040_PWM_LEDServer.ino | 7 +- .../RP2040_SimpleServer.ino | 7 +- .../SAMD_PWM_LEDServer/SAMD_PWM_LEDServer.ino | 7 +- .../SAMD_SimpleServer/SAMD_SimpleServer.ino | 7 +- .../STM32_PWM_LEDServer.ino | 7 +- .../STM32_SimpleServer/STM32_SimpleServer.ino | 7 +- .../nRF52_PWM_LEDServer.ino | 7 +- .../nRF52_SimpleServer/nRF52_SimpleServer.ino | 7 +- .../RP2040_PWM_LEDServer.ino | 9 +- .../RP2040_SimpleServer.ino | 9 +- .../SAMD_PWM_LEDServer/SAMD_PWM_LEDServer.ino | 9 +- .../SAMD_SimpleServer/SAMD_SimpleServer.ino | 9 +- .../STM32_PWM_LEDServer.ino | 9 +- .../STM32_SimpleServer/STM32_SimpleServer.ino | 9 +- .../nRF52_PWM_LEDServer.ino | 9 +- .../nRF52_SimpleServer/nRF52_SimpleServer.ino | 9 +- .../PWM_LEDServer_WT32_ETH01.ino | 317 ++++++++++++++++++ .../SimpleServer_WT32_ETH01.ino | 254 ++++++++++++++ library.json | 18 +- library.properties | 10 +- pics/WT32_ETH01.png | Bin 0 -> 18940 bytes platformio/platformio.ini | 18 +- src/UPnP_Generic.h | 9 +- src/UPnP_Generic_Debug.h | 5 +- src/UPnP_Generic_Ethernet.h | 5 +- src/UPnP_Generic_Impl.h | 78 ++++- src/UPnP_Generic_WiFi.h | 5 +- 39 files changed, 940 insertions(+), 152 deletions(-) create mode 100644 examples/WT32_ETH01/PWM_LEDServer_WT32_ETH01/PWM_LEDServer_WT32_ETH01.ino create mode 100644 examples/WT32_ETH01/SimpleServer_WT32_ETH01/SimpleServer_WT32_ETH01.ino create mode 100644 pics/WT32_ETH01.png diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index decc7069..d6bc37e0 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -29,7 +29,7 @@ Please ensure to specify the following: Arduino IDE version: 1.8.15 Arduino SAMD Core Version 1.8.11 OS: Ubuntu 20.04 LTS -Linux xy-Inspiron-3593 5.4.0-74-generic #83-Ubuntu SMP Sat May 8 02:35:39 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux +Linux xy-Inspiron-3593 5.4.0-77-generic #86-Ubuntu SMP Thu Jun 17 02:35:03 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux Context: The board couldn't autoreconnect to Local Blynk Server after router power recycling. diff --git a/README.md b/README.md index ea1f25f4..25daca77 100644 --- a/README.md +++ b/README.md @@ -17,6 +17,7 @@ * [Currently supported WiFi shields/modules](#currently-supported-wifi-shieldsmodules) * [Currently supported Ethernet shields/modules](#currently-supported-ethernet-shieldsmodules) * [Changelog](#changelog) + * [Major Releases v3.3.0](#major-releases-v330) * [Major Releases v3.2.0](#major-releases-v320) * [Releases v3.1.5](#releases-v315) * [Releases v3.1.4](#releases-v314) @@ -125,6 +126,9 @@ * [3. STM32](#3-STM32-2) * [25. STM32_SimpleServer](examples/Generic/ESP_AT/STM32/STM32_SimpleServer) * [26. STM32_PWM_LEDServer](examples/Generic/ESP_AT/STM32/STM32_PWM_LEDServer) + * [E. For WT32_ETH01 boards](#a-for-wt32_eth01-boards) + * [ 27. SimpleServer_WT32_ETH01](examples/WT32_ETH01/SimpleServer_WT32_ETH01) + * [ 28. PWM_LEDServer_WT32_ETH01](examples/WT32_ETH01/PWM_LEDServer_WT32_ETH01) * [Example nRF52_SimpleServer](#example-nrf52_simpleserver) * [1. File nRF52_SimpleServer.ino](#1-file-nrf52_simpleserverino) * [2. File defines.h](#2-file-definesh) @@ -140,6 +144,7 @@ * [ 9. RP2040_SimpleServer on MBED RASPBERRY_PI_PICO with W5x00 using Ethernet2 Library](#9-rp2040_simpleserver-on-mbed-raspberry_pi_pico-with-w5x00-using-ethernet2-library) * [10. PWM_LEDServer_ESP32 on ESP32S2_DEV](#10-pwm_ledserver_esp32-on-esp32s2_dev) * [11. PWM_LEDServer_ESP8266 on ESP8266_NODEMCU_ESP12E](#11-pwm_ledserver_esp8266-on-esp8266_nodemcu_esp12e) + * [12. SimpleServer_WT32_ETH01 on WT32-ETH01 with ETH_PHY_LAN8720](#12-simpleserver_wt32_eth01-on-wt32-eth01-with-eth_phy_lan8720) * [Debug](#debug) * [Troubleshooting](#troubleshooting) * [Releases](#releases) @@ -161,7 +166,7 @@ Many of us are **manually port-forwarding** in Internet Gateway Device (IGD, Router) in order to provide access to local Web Services from the Internet. - This library provides the easier way to automatically port-forward by using the [**Simple Service Discovery Protocol (SSDP)**](https://tools.ietf.org/html/draft-cai-ssdp-v1-03), running on nRF52, SAMD21/SAMD51, STM32F/L/H/G/WB/MP1, Teensy, ESP8266/ESP32, using ESP WiFi, WiFiNINA, Ethernet W5x00, ESP8266/ESP32 AT-command WiFi supporting **UDP Multicast**. + This library provides the easier way to automatically port-forward by using the [**Simple Service Discovery Protocol (SSDP)**](https://tools.ietf.org/html/draft-cai-ssdp-v1-03), running on nRF52, SAMD21/SAMD51, STM32F/L/H/G/WB/MP1, Teensy, ESP8266/ESP32, WT32_ETH01, etc. using ESP WiFi, WiFiNINA, Ethernet W5x00, LAN8720, ESP8266/ESP32 AT-command WiFi supporting **UDP Multicast**. The SSDP provides a mechanism whereby network clients, with little or no static configuration, can discover network services. SSDP accomplishes this by providing for multicast discovery support as well as server based notification and discovery routing. @@ -197,6 +202,8 @@ - RP2040-based boards, such as **RASPBERRY_PI_PICO, ADAFRUIT_FEATHER_RP2040 and GENERIC_RP2040**, using [**Arduino-mbed RP2040** core](https://github.com/arduino/ArduinoCore-mbed) or [**Earle Philhower's arduino-pico** core](https://github.com/earlephilhower/arduino-pico). + - **WT32_ETH01 boards** using ESP32-based boards and LAN8720 Ethernet + #### Currently supported WiFi shields/modules - **ESP8266 built-in WiFi** @@ -210,12 +217,19 @@ - **Ethernet2 Library is also supported after applying the fix to add Multicast feature**. See [Libraries' Patches](https://github.com/khoih-prog/EthernetWebServer#libraries-patches) - ENC28J60 using EthernetENC and UIPEthernet library are not supported as UDP Multicast is not available by design. - LAN8742A using STM32Ethernet / STM32 LwIP libraries is not supported as UDP Multicast is not enabled by design, unless you modify the code to add support. + - **LAN8720A in WT32-ETH01** using [`WebServer_WT32_ETH01`](https://github.com/khoih-prog/WebServer_WT32_ETH01). + --- --- ## Changelog +### Major Releases v3.3.0 + + 1. Add support to **WT32_ETH01 (ESP32 + LAN8720)** boards + 2. Add examples with new features + ### Major Releases v3.2.0 1. Add support to RP2040-based boards, such as **RASPBERRY_PI_PICO, ADAFRUIT_FEATHER_RP2040 and GENERIC_RP2040**, using [**Earle Philhower's arduino-pico** core](https://github.com/earlephilhower/arduino-pico). @@ -248,21 +262,21 @@ 1. [`Arduino IDE 1.8.15+` for Arduino](https://www.arduino.cc/en/Main/Software) 2. [`ESP32 Core 1.0.6+`](https://github.com/espressif/arduino-esp32) for ESP32-based boards. [![Latest release](https://img.shields.io/github/release/espressif/arduino-esp32.svg)](https://github.com/espressif/arduino-esp32/releases/latest/) 3. [`ESP32-S2/C3 Core 1.0.6+`](https://github.com/espressif/arduino-esp32) for ESP32-S2/C3-based boards. Must follow [HOWTO Install esp32 core for ESP32-S2 (Saola, AI-Thinker ESP-12K) and ESP32-C3 boards into Arduino IDE](#howto-install-esp32-core-for-esp32-s2-saola-ai-thinker-esp-12k-and-esp32-c3-boards-into-arduino-ide). - 4. [`ESP8266 Core 3.0.0+`](https://github.com/esp8266/Arduino) for ESP8266-based boards. [![Latest release](https://img.shields.io/github/release/esp8266/Arduino.svg)](https://github.com/esp8266/Arduino/releases/latest/). To use ESP8266 core 2.7.1+ for LittleFS. + 4. [`ESP8266 Core 3.0.1+`](https://github.com/esp8266/Arduino) for ESP8266-based boards. [![Latest release](https://img.shields.io/github/release/esp8266/Arduino.svg)](https://github.com/esp8266/Arduino/releases/latest/). To use ESP8266 core 2.7.1+ for LittleFS. 5. [`Arduino AVR core 1.8.3+`](https://github.com/arduino/ArduinoCore-avr) for Arduino (Use Arduino Board Manager) for AVR boards. [![GitHub release](https://img.shields.io/github/release/arduino/ArduinoCore-avr.svg)](https://github.com/arduino/ArduinoCore-avr/releases/latest) 6. [`Arduino SAM DUE core v1.6.12+`](https://github.com/arduino/ArduinoCore-sam) for SAM DUE ARM Cortex-M3 boards. 7. [`Arduino SAMD core 1.8.11+`](https://github.com/arduino/ArduinoCore-samd) for SAMD ARM Cortex-M0+ boards. [![GitHub release](https://img.shields.io/github/release/arduino/ArduinoCore-samd.svg)](https://github.com/arduino/ArduinoCore-samd/releases/latest) 8. [`Adafruit SAMD core 1.7.2+`](https://github.com/adafruit/ArduinoCore-samd) for SAMD ARM Cortex-M0+ and M4 boards (Nano 33 IoT, etc.). [![GitHub release](https://img.shields.io/github/release/adafruit/ArduinoCore-samd.svg)](https://github.com/adafruit/ArduinoCore-samd/releases/latest) 9. [`Seeeduino SAMD core 1.8.1+`](https://github.com/Seeed-Studio/ArduinoCore-samd) for SAMD21/SAMD51 boards (XIAO M0, Wio Terminal, etc.). [![Latest release](https://img.shields.io/github/release/Seeed-Studio/ArduinoCore-samd.svg)](https://github.com/Seeed-Studio/ArduinoCore-samd/releases/latest/) -10. [`Adafruit nRF52 v0.21.0`](https://github.com/adafruit/Adafruit_nRF52_Arduino) for nRF52 boards such as Adafruit NRF52840_FEATHER, NRF52832_FEATHER, NRF52840_FEATHER_SENSE, NRF52840_ITSYBITSY, NRF52840_CIRCUITPLAY, NRF52840_CLUE, NRF52840_METRO, NRF52840_PCA10056, PARTICLE_XENON, **NINA_B302_ublox**, etc. [![GitHub release](https://img.shields.io/github/release/adafruit/Adafruit_nRF52_Arduino.svg)](https://github.com/adafruit/Adafruit_nRF52_Arduino/releases/latest) +10. [`Adafruit nRF52 v0.24.0`](https://github.com/adafruit/Adafruit_nRF52_Arduino) for nRF52 boards such as Adafruit NRF52840_FEATHER, NRF52832_FEATHER, NRF52840_FEATHER_SENSE, NRF52840_ITSYBITSY, NRF52840_CIRCUITPLAY, NRF52840_CLUE, NRF52840_METRO, NRF52840_PCA10056, PARTICLE_XENON, **NINA_B302_ublox**, etc. [![GitHub release](https://img.shields.io/github/release/adafruit/Adafruit_nRF52_Arduino.svg)](https://github.com/adafruit/Adafruit_nRF52_Arduino/releases/latest) **Warnings** : Use [`Adafruit nRF52 v0.22.0+`](https://github.com/adafruit/Adafruit_nRF52_Arduino/releases/tag/0.22.0) will create **compiler errors** to some boards. If so, please use the [`Adafruit nRF52 v0.21.0`](https://github.com/adafruit/Adafruit_nRF52_Arduino/releases/tag/0.21.0) until the issue fixed. 11. [`Arduino Core for STM32 v2.0.0+`](https://github.com/stm32duino/Arduino_Core_STM32) for STM32F/L/H/G/WB/MP1 boards. [![GitHub release](https://img.shields.io/github/release/stm32duino/Arduino_Core_STM32.svg)](https://github.com/stm32duino/Arduino_Core_STM32/releases/latest) -12. [`Arduino mbed_rp2040 core 2.1.0+`](https://github.com/arduino/ArduinoCore-mbed) for Arduino RP2040-based boards, such as **Arduino Nano RP2040 Connect, RASPBERRY_PI_PICO, etc.**. [![GitHub release](https://img.shields.io/github/release/arduino/ArduinoCore-mbed.svg)](https://github.com/arduino/ArduinoCore-mbed/releases/latest) -13. [`Earle Philhower's arduino-pico core v1.8.2+`](https://github.com/earlephilhower/arduino-pico) for RP2040-based boards such as **RASPBERRY_PI_PICO, ADAFRUIT_FEATHER_RP2040 and GENERIC_RP2040**, etc. [![GitHub release](https://img.shields.io/github/release/earlephilhower/arduino-pico.svg)](https://github.com/earlephilhower/arduino-pico/releases/latest) +12. [`Arduino mbed_rp2040 core 2.3.1+`](https://github.com/arduino/ArduinoCore-mbed) for Arduino RP2040-based boards, such as **Arduino Nano RP2040 Connect, RASPBERRY_PI_PICO, etc.**. [![GitHub release](https://img.shields.io/github/release/arduino/ArduinoCore-mbed.svg)](https://github.com/arduino/ArduinoCore-mbed/releases/latest) +13. [`Earle Philhower's arduino-pico core v1.9.2+`](https://github.com/earlephilhower/arduino-pico) for RP2040-based boards such as **RASPBERRY_PI_PICO, ADAFRUIT_FEATHER_RP2040 and GENERIC_RP2040**, etc. [![GitHub release](https://img.shields.io/github/release/earlephilhower/arduino-pico.svg)](https://github.com/earlephilhower/arduino-pico/releases/latest) 14. Depending on which Ethernet card you're using: @@ -270,13 +284,13 @@ - [`EthernetLarge library v2.0.0+`](https://github.com/OPEnSLab-OSU/EthernetLarge) for W5100, W5200 and W5500. - [`Ethernet2 library v1.0.4+`](https://github.com/khoih-prog/Ethernet2) for W5500. [![GitHub release](https://img.shields.io/github/release/adafruit/Ethernet2.svg)](https://github.com/adafruit/Ethernet2/releases/latest) - [`Ethernet3 library v1.5.5+`](https://github.com/sstaub/Ethernet3) for W5500/WIZ550io/WIZ850io/USR-ES1 with Wiznet W5500 chip. [![GitHub release](https://img.shields.io/github/release/sstaub/Ethernet3.svg)](https://github.com/sstaub/Ethernet3/releases/latest) -15. [`WiFiNINA_Generic library v1.8.10-1+`](https://github.com/khoih-prog/WiFiNINA_Generic) to use WiFiNINA modules/shields. To install. check [![arduino-library-badge](https://www.ardu-badge.com/badge/WiFiNINA_Generic.svg?)](https://www.ardu-badge.com/WiFiNINA_Generic) if using WiFiNINA for boards such as Nano 33 IoT, nRF52, Teensy, etc. +15. [`WiFiNINA_Generic library v1.8.12+`](https://github.com/khoih-prog/WiFiNINA_Generic) to use WiFiNINA modules/shields. To install. check [![arduino-library-badge](https://www.ardu-badge.com/badge/WiFiNINA_Generic.svg?)](https://www.ardu-badge.com/WiFiNINA_Generic) if using WiFiNINA for boards such as Nano 33 IoT, nRF52, Teensy, etc. 16. [`WiFiWebServer library v1.2.0+`](https://github.com/khoih-prog/WiFiWebServer) to use WiFi/WiFiNINA modules/shields. To install, check [![arduino-library-badge](https://www.ardu-badge.com/badge/WiFiWebServer.svg?)](https://www.ardu-badge.com/WiFiWebServer) 17. [`EthernetWebServer library v1.5.0+`](https://github.com/khoih-prog/EthernetWebServer) to use Ethernet modules/shields on boards other than STM32F/L/H/G/WB/MP1. To install. check [![arduino-library-badge](https://www.ardu-badge.com/badge/EthernetWebServer.svg?)](https://www.ardu-badge.com/EthernetWebServer). 18. [`EthernetWebServer_STM32 library v1.2.0+`](https://github.com/khoih-prog/EthernetWebServer_STM32) to use Ethernet modules/shields on STM32F/L/H/G/WB/MP1 boards. To install, check [![arduino-library-badge](https://www.ardu-badge.com/badge/EthernetWebServer_STM32.svg?)](https://www.ardu-badge.com/EthernetWebServer_STM32). 19. [`ESP8266_AT_WebServer library v1.3.0+`](https://github.com/khoih-prog/ESP8266_AT_WebServer) to use ESP8266-AT/ESP32-AT WiFi modules/shields. To install, check [![arduino-library-badge](https://www.ardu-badge.com/badge/ESP8266_AT_WebServer.svg?)](https://www.ardu-badge.com/ESP8266_AT_WebServer) -20. [`DDNS_Generic library v1.3.0+`](https://github.com/khoih-prog/DDNS_Generic) to use examples. To install, check [![arduino-library-badge](https://www.ardu-badge.com/badge/DDNS_Generic.svg?)](https://www.ardu-badge.com/DDNS_Generic) - +20. [`DDNS_Generic library v1.4.0+`](https://github.com/khoih-prog/DDNS_Generic) to use examples. To install, check [![arduino-library-badge](https://www.ardu-badge.com/badge/DDNS_Generic.svg?)](https://www.ardu-badge.com/DDNS_Generic) +21. [`WebServer_WT32_ETH01 library v1.2.0+`](https://github.com/khoih-prog/WebServer_WT32_ETH01) to use WT32_ETH01 (ESP32 + LAN8720). To install, check [![arduino-library-badge](https://www.ardu-badge.com/badge/WebServer_WT32_ETH01.svg?)](https://www.ardu-badge.com/WebServer_WT32_ETH01). --- @@ -562,7 +576,9 @@ To add UDP Multicast support, necessary for the [**UPnP_Generic library**](https To fix [`ESP32 compile error`](https://github.com/espressif/arduino-esp32), just copy the following file into the [`ESP32`](https://github.com/espressif/arduino-esp32) cores/esp32 directory (e.g. ./arduino-1.8.12/hardware/espressif/cores/esp32) to overwrite the old file: - [Server.h](LibraryPatches/esp32/cores/esp32/Server.h) +#### 8. For STM32 core F3 and F4 using UIPEthernet library +Check if you need to install the UIPEthernet patch [new STM32 core F3/F4 compatibility](https://github.com/UIPEthernet/UIPEthernet/commit/c6d6519a260166b722b9cee5dd1f0fb2682e6782) to avoid errors `#include HardwareSPI.h` on some STM32 boards (Nucleo-32 F303K8, etc.) --- --- @@ -1053,6 +1069,14 @@ uPnP->printAllPortMappings(); 25. [STM32_SimpleServer](examples/Generic/ESP_AT/STM32/STM32_SimpleServer) 26. [STM32_PWM_LEDServer](examples/Generic/ESP_AT/STM32/STM32_PWM_LEDServer) +--- + +### E. For WT32_ETH01 boards + +27. [SimpleServer_WT32_ETH01](examples/WT32_ETH01/SimpleServer_WT32_ETH01) +28. [PWM_LEDServer_WT32_ETH01](examples/WT32_ETH01/PWM_LEDServer_WT32_ETH01) + + --- --- @@ -1485,7 +1509,7 @@ Debug terminal output when running example [SAMD_SimpleServer](examples/Generic/ ``` Start SAMD_SimpleServer on SAMD_NANO_33_IOT with WiFiNINA using WiFiNINA_Generic Library -UPnP_Generic v3.2.0 +UPnP_Generic v3.3.0 Connecting to HueNet1 IP address: 192.168.2.128 @@ -1533,7 +1557,7 @@ Debug terminal output when running example [nRF52_SimpleServer](examples/Generic ``` Start nRF52_SimpleServer on NRF52840_FEATHER with W5x00 & Ethernet2 Library -UPnP_Generic v3.2.0 +UPnP_Generic v3.3.0 Try # 1 [UPnP] IGD current port mappings: 0. Blynk Server 192.168.2.110 9443 9443 TCP 0 @@ -1574,7 +1598,7 @@ Debug terminal output when running example [nRF52_SimpleServer](examples/Generic ``` Start nRF52_SimpleServer on NRF52840_FEATHER with W5x00 & Ethernet Library -UPnP_Generic v3.2.0 +UPnP_Generic v3.3.0 _pinCS = 0 W5100 init, using SS_PIN_DEFAULT = 10, new ss_pin = 10, W5100Class::ss_pin = 10 W5100::init: W5500, SSIZE =4096 @@ -1628,7 +1652,7 @@ Debug terminal output when running example [STM32_SimpleServer](examples/Generic ``` Start STM32_SimpleServer on NUCLEO_F767ZI with W5x00 & Ethernet2 Library -UPnP_Generic v3.2.0 +UPnP_Generic v3.3.0 Add Port Forwarding, Try # 1 [UPnP] IGD current port mappings: 0. Blynk Server 192.168.2.110 9443 9443 TCP 0 @@ -1671,7 +1695,7 @@ Debug terminal output when running example [SAMD_SimpleServer](examples/Generic/ ``` Start SAMD_SimpleServer on ITSYBITSY_M4 with ESP8266_AT shield -UPnP_Generic v3.2.0 +UPnP_Generic v3.3.0 WiFi shield init done Connected to HueNet1 @@ -1723,7 +1747,7 @@ Debug terminal output when running example [PWM_LEDServer_ESP32](examples/ESP/PW ``` Start PWM_LEDServer_ESP32 on ESP32_DEV -UPnP_Generic v3.2.0 +UPnP_Generic v3.3.0 Connecting to HueNet1 .. IP address: 192.168.2.82 @@ -1773,7 +1797,7 @@ Debug terminal output when running example [RP2040_PWM_LEDServer](examples/Gener ``` Start RP2040_PWM_LEDServer on MBED NANO_RP2040_CONNECT with WiFiNINA using WiFiNINA_Generic Library -UPnP_Generic v3.2.0 +UPnP_Generic v3.3.0 Connecting to HueNet1 IP address: 192.168.2.153 @@ -1813,7 +1837,7 @@ Debug terminal output when running example [RP2040_PWM_LEDServer](examples/Gener ``` Start RP2040_PWM_LEDServer on RASPBERRY_PI_PICO with W5x00 using Ethernet2 Library -UPnP_Generic v3.2.0 +UPnP_Generic v3.3.0 Default SPI pinout: MOSI:19 MISO:16 @@ -1860,7 +1884,7 @@ Debug terminal output when running example [RP2040_SimpleServer](examples/Generi ``` Start RP2040_SimpleServer on MBED RASPBERRY_PI_PICO using W5x00 using Ethernet2 Library -UPnP_Generic v3.2.0 +UPnP_Generic v3.3.0 Default SPI pinout: MOSI:3 MISO:4 @@ -1906,7 +1930,7 @@ Debug terminal output when running example [PWM_LEDServer_ESP32](examples/ESP/PW ``` Start PWM_LEDServer_ESP32 on ESP32S2_DEV -UPnP_Generic v3.2.0 +UPnP_Generic v3.3.0 Connecting to HueNet1 ....... IP address: 192.168.2.190 @@ -1945,7 +1969,7 @@ Debug terminal output when running example [PWM_LEDServer_ESP32](examples/ESP/PW ``` Start PWM_LEDServer_ESP8266 on ESP8266_NODEMCU_ESP12E -UPnP_Generic v3.2.0 +UPnP_Generic v3.3.0 Connecting to HueNet1 ........... IP address: 192.168.2.135 @@ -1976,6 +2000,93 @@ DDNSGeneric - IP Change Detected: aaa.bbb.ccc.ddd [DDNS] Updated IP = aaa.bbb.ccc.ddd ``` +--- + +#### 12. SimpleServer_WT32_ETH01 on WT32-ETH01 with ETH_PHY_LAN8720 + +Debug terminal output when running example [SimpleServer_WT32_ETH01](examples/WT32_ETH01/SimpleServer_WT32_ETH01) on WT32-ETH01 with ETH_PHY_LAN8720 + +``` +Start SimpleServer_WT32_ETH01 on WT32-ETH01 with ETH_PHY_LAN8720 +WebServer_WT32_ETH01 v1.2.0 +DDNS_Generic v1.4.0 +UPnP_Generic v3.3.0 +ETH MAC: A8:03:2A:A1:61:73, IPv4: 192.168.2.232 +FULL_DUPLEX, 100Mbps +IP address: 192.168.2.232 +[UPnP] UDP_TX_PACKET_MAX_SIZE= 1000 +[UPnP] UDP_TX_RESPONSE_MAX_SIZE= 8192 +[UPnP] newUpnpRule= 0.0.0.0 +Add Port Forwarding, Try # 1 +[UPnP] Testing WT32_ETH01 Ethernet connection for IP : 192.168.2.232 + ==> GOOD +[UPnP] Internet connection GOOD +[UPnP] isGatewayInfoValid : 0.0.0.0 , port : 0 +[UPnP] Path : , actionPort : 0 +[UPnP] actionPath : , serviceTypeName : +[UPnP] Gateway info not valid + +[UPnP] GW IP = 192.168.2.1 +[UPnP] Sending M-SEARCH to : 239.255.255.250 , Port : 1900 +[UPnP] Received packet, size = 331 , IP = 192.168.2.1 +[UPnP] Port = 1900 +[UPnP] IGD found +[UPnP] IGD location found : http://192.168.2.1:5431/dyndev/uuid:2166898a-7de8-40ed-a1e1-b29a1d140d04 +[UPnP] 192.168.2.1 +[UPnP] 5431 +[UPnP] /dyndev/uuid:2166898a-7de8-40ed-a1e1-b29a1d140d04 +[UPnP] Connecting to IGD with host : 192.168.2.1 , port : 5431 +[UPnP] Connected to IGD +[UPnP] called getIGDEventURLs +[UPnP] deviceInfo->actionPath : , deviceInfo->path : /dyndev/uuid:2166898a-7de8-40ed-a1e1-b29a1d140d04 +[UPnP] URLBase tag found : http://192.168.2.1:5431/ +[UPnP] Translated to base host : 192.168.2.1 and base port : 5431 +[UPnP] urn:schemas-upnp-org:service:WANPPPConnection:1 service found! +[UPnP] controlURL tag found! Setting actionPath to : /uuid:a4781538-557f-46eb-91f0-c898f3a661d5/WANPPPConnection:1 +[UPnP] Port : 5431 , actionPort : 5431 +[UPnP] isGatewayInfoValid : 192.168.2.1 , port : 5431 +[UPnP] Path : /dyndev/uuid:2166898a-7de8-40ed-a1e1-b29a1d140d04 , actionPort : 5431 +[UPnP] actionPath : /uuid:a4781538-557f-46eb-91f0-c898f3a661d5/WANPPPConnection:1 , serviceTypeName : urn:schemas-upnp-org:service:WANPPPConnection:1 +[UPnP] Gateway info valid +[UPnP] Verify port mapping for rule : ESP32_DEV-WT32_ETH01 +[UPnP] Apply action : GetSpecificPortMappingEntry on port mapping : ESP32_DEV-WT32_ETH01 +[UPnP] Connecting to IGD with host : 192.168.2.1 , port : 5431 +[UPnP] Connected to IGD +[UPnP] Host: 192.168.2.1:5431 +[UPnP] Port mapping found in IGD +[UPnP] All port mappings found in IGD, doing nothing +[UPnP] isGatewayInfoValid : 192.168.2.1 , port : 5431 +[UPnP] Path : /dyndev/uuid:2166898a-7de8-40ed-a1e1-b29a1d140d04 , actionPort : 5431 +[UPnP] actionPath : /uuid:a4781538-557f-46eb-91f0-c898f3a661d5/WANPPPConnection:1 , serviceTypeName : urn:schemas-upnp-org:service:WANPPPConnection:1 +[UPnP] Gateway info valid +[UPnP] Connecting to IGD with host : 192.168.2.1 , port : 5431 +[UPnP] Connected to IGD +[UPnP] IGD current port mappings: +0. Blynk Server 192.168.2.110 9443 9443 TCP 0 +1. Blynk WebServer 192.168.2.110 80 80 TCP 0 +2. Blynk Hardware Server 192.168.2.110 8080 8080 TCP 0 +3. Blynk Server 192.168.2.110 9443 1443 TCP 0 +4. Blynk Secondary Server 192.168.2.112 9443 2443 TCP 0 +5. Blynk Sec. Hardware Server 192.168.2.112 8080 1080 TCP 0 +6. Blynk Server SSL 192.168.2.110 9443 443 TCP 0 +7. MariaDB / MySQL 192.168.2.112 5698 5698 TCP 0 +8. MariaDB / MySQL 192.168.2.112 3306 3306 TCP 0 +9. ESP8266_NODEMCU_ESP12E-WIFI 192.168.2.36 8266 8266 TCP 33690 +76. ESP32_DEV-WT32_ETH01 192.168.2.232 5931 5931 TCP 35070 + +UPnP done +HTTP WiFiWebServer is @ IP : 192.168.2.232, port = 5931 +Gateway Address: 192.168.2.1 +Network Mask: 255.255.255.0 +DDNSGeneric - IP Change Detected: aaa.bbb.ccc.ddd +[DDNS] Updated IP = aaa.bbb.ccc.ddd +``` + +

+ +

+ + --- --- @@ -2004,6 +2115,11 @@ Sometimes, the library will only work if you update the core to the newer or old ## Releases +### Major Releases v3.3.0 + + 1. Add support to **WT32_ETH01 (ESP32 + LAN8720)** boards + 2. Add examples with new features + ### Major Releases v3.2.0 1. Add support to RP2040-based boards, such as **RASPBERRY_PI_PICO, ADAFRUIT_FEATHER_RP2040 and GENERIC_RP2040**, using [**Earle Philhower's arduino-pico** core](https://github.com/earlephilhower/arduino-pico). @@ -2046,6 +2162,8 @@ Sometimes, the library will only work if you update the core to the newer or old - RP2040-based boards, such as **RASPBERRY_PI_PICO, ADAFRUIT_FEATHER_RP2040 and GENERIC_RP2040**, using [**Arduino-mbed RP2040** core](https://github.com/arduino/ArduinoCore-mbed) or [**Earle Philhower's arduino-pico** core](https://github.com/earlephilhower/arduino-pico). + - **WT32_ETH01 boards** using ESP32-based boards and LAN8720 Ethernet + #### Currently supported WiFi shields/modules - **ESP8266 built-in WiFi** @@ -2059,6 +2177,7 @@ Sometimes, the library will only work if you update the core to the newer or old - **Ethernet2 Library is also supported after applying the fix to add Multicast feature**. See [Libraries' Patches](https://github.com/khoih-prog/EthernetWebServer#libraries-patches) - ENC28J60 using EthernetENC and UIPEthernet library are not supported as UDP Multicast is not available by design. - LAN8742A using STM32Ethernet / STM32 LwIP libraries is not supported as UDP Multicast is not enabled by design, unless you modify the code to add support. + - **LAN8720A in WT32-ETH01** using [`WebServer_WT32_ETH01`](https://github.com/khoih-prog/WebServer_WT32_ETH01). --- @@ -2092,6 +2211,7 @@ Submit issues to: [UPnP_Generic issues](https://github.com/khoih-prog/UPnP_Gener 10. Add support to RP2040-based boards, such as **RASPBERRY_PI_PICO, ADAFRUIT_FEATHER_RP2040 and GENERIC_RP2040**, using [**Earle Philhower's arduino-pico core**](https://github.com/earlephilhower/arduino-pico). 11. Add support to RP2040-based boards, such as **NANO_RP2040_CONNECT, RASPBERRY_PI_PICO, ADAFRUIT_FEATHER_RP2040 and GENERIC_RP2040**, using [**Arduino-mbed RP2040** core](https://github.com/arduino/ArduinoCore-mbed). 12. Add Version String and Table of Contents +13. Add support to **WT32_ETH01 boards** using ESP32-based boards and LAN8720 Ethernet --- --- diff --git a/examples/ESP/PWM_LEDServer_ESP32/PWM_LEDServer_ESP32.ino b/examples/ESP/PWM_LEDServer_ESP32/PWM_LEDServer_ESP32.ino index 71564eff..b1644b00 100644 --- a/examples/ESP/PWM_LEDServer_ESP32/PWM_LEDServer_ESP32.ino +++ b/examples/ESP/PWM_LEDServer_ESP32/PWM_LEDServer_ESP32.ino @@ -1,22 +1,23 @@ /**************************************************************************************************************************** PWM_LEDServer_ESP32.ino - For all Generic boards such as ESP8266, ESP32, SAMD21/SAMD51, nRF52, STM32F/L/H/G/WB/MP1 - with WiFiNINA, ESP8266/ESP32 WiFi, ESP8266/ESP32-AT, W5x00 Ethernet shields + For all Generic boards such as ESP8266, ESP32, WT32_ETH01, SAMD21/SAMD51, nRF52, STM32F/L/H/G/WB/MP1,Teensy + with WiFiNINA, ESP8266/ESP32 WiFi, ESP8266/ESP32-AT, W5x00, ENC28J60, Native Ethernet shields DDNS_Generic is a library to automatically add port mappings to router using UPnP SSDP (Simple Service Discovery Protocol) in order to provide access to the local Web Services from the Internet. Based on and modified from Ofek Pearl's TinyUPnP Library (https://github.com/ofekp/TinyUPnP) Built by Khoi Hoang https://github.com/khoih-prog/UPnP_Generic - Licensed under MIT license - Version: 3.2.0 + Licensed under GPL-3.0 license + Version: 3.3.0 Version Modified By Date Comments ------- ----------- ---------- ----------- 3.1.4 K Hoang 23/09/2020 Initial coding for Generic boards using many WiFi/Ethernet modules/shields. 3.1.5 K Hoang 28/09/2020 Fix issue with nRF52 and STM32F/L/H/G/WB/MP1 using ESP8266/ESP32-AT 3.2.0 K Hoang 11/06/2021 Add support to RP2040-based boards using ESP-AT, WiFiNINA, W5x00 / ENC28J60 + 3.3.0 K Hoang 16/07/2021 Add support to WT32_ETH01 (ESP32 + LAN8720) *****************************************************************************************************************************/ /* Note: This example uses the DDNS_Generic library (https://github.com/khoih-prog/DDNS_Generic) diff --git a/examples/ESP/PWM_LEDServer_ESP8266/PWM_LEDServer_ESP8266.ino b/examples/ESP/PWM_LEDServer_ESP8266/PWM_LEDServer_ESP8266.ino index 31ee6dda..72436ebb 100644 --- a/examples/ESP/PWM_LEDServer_ESP8266/PWM_LEDServer_ESP8266.ino +++ b/examples/ESP/PWM_LEDServer_ESP8266/PWM_LEDServer_ESP8266.ino @@ -1,22 +1,23 @@ /**************************************************************************************************************************** PWM_LEDServer_ESP8266.ino - For all Generic boards such as ESP8266, ESP32, SAMD21/SAMD51, nRF52, STM32F/L/H/G/WB/MP1 - with WiFiNINA, ESP8266/ESP32 WiFi, ESP8266/ESP32-AT, W5x00 Ethernet shields + For all Generic boards such as ESP8266, ESP32, WT32_ETH01, SAMD21/SAMD51, nRF52, STM32F/L/H/G/WB/MP1,Teensy + with WiFiNINA, ESP8266/ESP32 WiFi, ESP8266/ESP32-AT, W5x00, ENC28J60, Native Ethernet shields DDNS_Generic is a library to automatically add port mappings to router using UPnP SSDP (Simple Service Discovery Protocol) in order to provide access to the local Web Services from the Internet. Based on and modified from Ofek Pearl's TinyUPnP Library (https://github.com/ofekp/TinyUPnP) Built by Khoi Hoang https://github.com/khoih-prog/UPnP_Generic - Licensed under MIT license - Version: 3.2.0 + Licensed under GPL-3.0 license + Version: 3.3.0 Version Modified By Date Comments ------- ----------- ---------- ----------- 3.1.4 K Hoang 23/09/2020 Initial coding for Generic boards using many WiFi/Ethernet modules/shields. 3.1.5 K Hoang 28/09/2020 Fix issue with nRF52 and STM32F/L/H/G/WB/MP1 using ESP8266/ESP32-AT 3.2.0 K Hoang 11/06/2021 Add support to RP2040-based boards using ESP-AT, WiFiNINA, W5x00 / ENC28J60 + 3.3.0 K Hoang 16/07/2021 Add support to WT32_ETH01 (ESP32 + LAN8720) *****************************************************************************************************************************/ /* Note: This example uses the DDNS_Generic library (https://github.com/khoih-prog/DDNS_Generic) diff --git a/examples/ESP/SimpleServerESP32/SimpleServerESP32.ino b/examples/ESP/SimpleServerESP32/SimpleServerESP32.ino index 8f310667..addef2ab 100644 --- a/examples/ESP/SimpleServerESP32/SimpleServerESP32.ino +++ b/examples/ESP/SimpleServerESP32/SimpleServerESP32.ino @@ -1,22 +1,23 @@ /**************************************************************************************************************************** SimpleServerEsp32.ino - For all Generic boards such as ESP8266, ESP32, SAMD21/SAMD51, nRF52, STM32F/L/H/G/WB/MP1 - with WiFiNINA, ESP8266/ESP32 WiFi, ESP8266/ESP32-AT, W5x00 Ethernet shields + For all Generic boards such as ESP8266, ESP32, WT32_ETH01, SAMD21/SAMD51, nRF52, STM32F/L/H/G/WB/MP1,Teensy + with WiFiNINA, ESP8266/ESP32 WiFi, ESP8266/ESP32-AT, W5x00, ENC28J60, Native Ethernet shields DDNS_Generic is a library to automatically add port mappings to router using UPnP SSDP (Simple Service Discovery Protocol) in order to provide access to the local Web Services from the Internet. Based on and modified from Ofek Pearl's TinyUPnP Library (https://github.com/ofekp/TinyUPnP) Built by Khoi Hoang https://github.com/khoih-prog/UPnP_Generic - Licensed under MIT license - Version: 3.2.0 + Licensed under GPL-3.0 license + Version: 3.3.0 Version Modified By Date Comments ------- ----------- ---------- ----------- 3.1.4 K Hoang 23/09/2020 Initial coding for Generic boards using many WiFi/Ethernet modules/shields. 3.1.5 K Hoang 28/09/2020 Fix issue with nRF52 and STM32F/L/H/G/WB/MP1 using ESP8266/ESP32-AT 3.2.0 K Hoang 11/06/2021 Add support to RP2040-based boards using ESP-AT, WiFiNINA, W5x00 / ENC28J60 + 3.3.0 K Hoang 16/07/2021 Add support to WT32_ETH01 (ESP32 + LAN8720) *****************************************************************************************************************************/ /* Note: This example uses the DDNS_Generic library (https://github.com/khoih-prog/DDNS_Generic) @@ -30,7 +31,7 @@ // Debug Level from 0 to 4 #define _DDNS_GENERIC_LOGLEVEL_ 1 -#define _UPNP_LOGLEVEL_ 2 +#define _UPNP_LOGLEVEL_ 3 // Select DDNS_USING_WIFI for boards using built-in WiFi, such as Nano-33-IoT #define DDNS_USING_WIFI true diff --git a/examples/ESP/SimpleServer_ESP8266/SimpleServer_ESP8266.ino b/examples/ESP/SimpleServer_ESP8266/SimpleServer_ESP8266.ino index e6f3dd20..2239c3db 100644 --- a/examples/ESP/SimpleServer_ESP8266/SimpleServer_ESP8266.ino +++ b/examples/ESP/SimpleServer_ESP8266/SimpleServer_ESP8266.ino @@ -1,22 +1,23 @@ /**************************************************************************************************************************** SimpleServerESP8266.ino - For all Generic boards such as ESP8266, ESP32, SAMD21/SAMD51, nRF52, STM32F/L/H/G/WB/MP1 - with WiFiNINA, ESP8266/ESP32 WiFi, ESP8266/ESP32-AT, W5x00 Ethernet shields + For all Generic boards such as ESP8266, ESP32, WT32_ETH01, SAMD21/SAMD51, nRF52, STM32F/L/H/G/WB/MP1,Teensy + with WiFiNINA, ESP8266/ESP32 WiFi, ESP8266/ESP32-AT, W5x00, ENC28J60, Native Ethernet shields DDNS_Generic is a library to automatically add port mappings to router using UPnP SSDP (Simple Service Discovery Protocol) in order to provide access to the local Web Services from the Internet. Based on and modified from Ofek Pearl's TinyUPnP Library (https://github.com/ofekp/TinyUPnP) Built by Khoi Hoang https://github.com/khoih-prog/UPnP_Generic - Licensed under MIT license - Version: 3.2.0 + Licensed under GPL-3.0 license + Version: 3.3.0 Version Modified By Date Comments ------- ----------- ---------- ----------- 3.1.4 K Hoang 23/09/2020 Initial coding for Generic boards using many WiFi/Ethernet modules/shields. 3.1.5 K Hoang 28/09/2020 Fix issue with nRF52 and STM32F/L/H/G/WB/MP1 using ESP8266/ESP32-AT 3.2.0 K Hoang 11/06/2021 Add support to RP2040-based boards using ESP-AT, WiFiNINA, W5x00 / ENC28J60 + 3.3.0 K Hoang 16/07/2021 Add support to WT32_ETH01 (ESP32 + LAN8720) *****************************************************************************************************************************/ /* Note: This example uses the DDNS_Generic library (https://github.com/khoih-prog/DDNS_Generic) @@ -30,7 +31,7 @@ // Debug Level from 0 to 4 #define _DDNS_GENERIC_LOGLEVEL_ 1 -#define _UPNP_LOGLEVEL_ 2 +#define _UPNP_LOGLEVEL_ 3 // Select DDNS_USING_WIFI for boards using built-in WiFi, such as Nano-33-IoT #define DDNS_USING_WIFI true @@ -158,7 +159,8 @@ void setup(void) For DDNS Providers where you get username and password: ( Leave the password field empty "" if not required ) DDNSGeneric.client("domain", "username", "password"); */ - DDNSGeneric.client("account.duckdns.org", "12345678-1234-1234-1234-123456789012"); + //DDNSGeneric.client("account.duckdns.org", "12345678-1234-1234-1234-123456789012"); + DDNSGeneric.client("khoih.duckdns.org", "59f1e2ed-ab09-4089-875a-8357e2705392"); DDNSGeneric.onUpdate(onUpdateCallback); diff --git a/examples/Generic/ESP_AT/SAMD/SAMD_PWM_LEDServer/SAMD_PWM_LEDServer.ino b/examples/Generic/ESP_AT/SAMD/SAMD_PWM_LEDServer/SAMD_PWM_LEDServer.ino index a2b1206a..19a81662 100644 --- a/examples/Generic/ESP_AT/SAMD/SAMD_PWM_LEDServer/SAMD_PWM_LEDServer.ino +++ b/examples/Generic/ESP_AT/SAMD/SAMD_PWM_LEDServer/SAMD_PWM_LEDServer.ino @@ -1,7 +1,7 @@ /**************************************************************************************************************************** SAMD_PWM_LEDServer.ino - For all Generic boards such as ESP8266, ESP32, SAMD21/SAMD51, nRF52, STM32F/L/H/G/WB/MP1,Teensy + For all Generic boards such as ESP8266, ESP32, WT32_ETH01, SAMD21/SAMD51, nRF52, STM32F/L/H/G/WB/MP1,Teensy with WiFiNINA, ESP8266/ESP32 WiFi, ESP8266/ESP32-AT, W5x00, ENC28J60, Native Ethernet shields DDNS_Generic is a library to automatically add port mappings to router using UPnP SSDP @@ -9,14 +9,15 @@ Based on and modified from Ofek Pearl's TinyUPnP Library (https://github.com/ofekp/TinyUPnP) Built by Khoi Hoang https://github.com/khoih-prog/UPnP_Generic - Licensed under MIT license - Version: 3.2.0 + Licensed under GPL-3.0 license + Version: 3.3.0 Version Modified By Date Comments ------- ----------- ---------- ----------- 3.1.4 K Hoang 23/09/2020 Initial coding for Generic boards using many WiFi/Ethernet modules/shields. 3.1.5 K Hoang 28/09/2020 Fix issue with nRF52 and STM32F/L/H/G/WB/MP1 using ESP8266/ESP32-AT 3.2.0 K Hoang 11/06/2021 Add support to RP2040-based boards using ESP-AT, WiFiNINA, W5x00 / ENC28J60 + 3.3.0 K Hoang 16/07/2021 Add support to WT32_ETH01 (ESP32 + LAN8720) *****************************************************************************************************************************/ /* Note: This example uses the DDNS_Generic library (https://github.com/khoih-prog/DDNS_Generic) diff --git a/examples/Generic/ESP_AT/SAMD/SAMD_SimpleServer/SAMD_SimpleServer.ino b/examples/Generic/ESP_AT/SAMD/SAMD_SimpleServer/SAMD_SimpleServer.ino index d3bf77f4..90620d74 100644 --- a/examples/Generic/ESP_AT/SAMD/SAMD_SimpleServer/SAMD_SimpleServer.ino +++ b/examples/Generic/ESP_AT/SAMD/SAMD_SimpleServer/SAMD_SimpleServer.ino @@ -1,7 +1,7 @@ /**************************************************************************************************************************** SAMD_SimpleServer.ino - For all Generic boards such as ESP8266, ESP32, SAMD21/SAMD51, nRF52, STM32F/L/H/G/WB/MP1,Teensy + For all Generic boards such as ESP8266, ESP32, WT32_ETH01, SAMD21/SAMD51, nRF52, STM32F/L/H/G/WB/MP1,Teensy with WiFiNINA, ESP8266/ESP32 WiFi, ESP8266/ESP32-AT, W5x00, ENC28J60, Native Ethernet shields DDNS_Generic is a library to automatically add port mappings to router using UPnP SSDP @@ -9,14 +9,15 @@ Based on and modified from Ofek Pearl's TinyUPnP Library (https://github.com/ofekp/TinyUPnP) Built by Khoi Hoang https://github.com/khoih-prog/UPnP_Generic - Licensed under MIT license - Version: 3.2.0 + Licensed under GPL-3.0 license + Version: 3.3.0 Version Modified By Date Comments ------- ----------- ---------- ----------- 3.1.4 K Hoang 23/09/2020 Initial coding for Generic boards using many WiFi/Ethernet modules/shields. 3.1.5 K Hoang 28/09/2020 Fix issue with nRF52 and STM32F/L/H/G/WB/MP1 using ESP8266/ESP32-AT 3.2.0 K Hoang 11/06/2021 Add support to RP2040-based boards using ESP-AT, WiFiNINA, W5x00 / ENC28J60 + 3.3.0 K Hoang 16/07/2021 Add support to WT32_ETH01 (ESP32 + LAN8720) *****************************************************************************************************************************/ /* Note: This example uses the DDNS_Generic library (https://github.com/khoih-prog/DDNS_Generic) diff --git a/examples/Generic/ESP_AT/STM32/STM32_PWM_LEDServer/STM32_PWM_LEDServer.ino b/examples/Generic/ESP_AT/STM32/STM32_PWM_LEDServer/STM32_PWM_LEDServer.ino index 42c3eefb..9f08fd68 100644 --- a/examples/Generic/ESP_AT/STM32/STM32_PWM_LEDServer/STM32_PWM_LEDServer.ino +++ b/examples/Generic/ESP_AT/STM32/STM32_PWM_LEDServer/STM32_PWM_LEDServer.ino @@ -1,7 +1,7 @@ /**************************************************************************************************************************** STM32_PWM_LEDServer.ino - For all Generic boards such as ESP8266, ESP32, SAMD21/SAMD51, nRF52, STM32F/L/H/G/WB/MP1,Teensy + For all Generic boards such as ESP8266, ESP32, WT32_ETH01, SAMD21/SAMD51, nRF52, STM32F/L/H/G/WB/MP1,Teensy with WiFiNINA, ESP8266/ESP32 WiFi, ESP8266/ESP32-AT, W5x00, ENC28J60, Native Ethernet shields DDNS_Generic is a library to automatically add port mappings to router using UPnP SSDP @@ -9,14 +9,15 @@ Based on and modified from Ofek Pearl's TinyUPnP Library (https://github.com/ofekp/TinyUPnP) Built by Khoi Hoang https://github.com/khoih-prog/UPnP_Generic - Licensed under MIT license - Version: 3.2.0 + Licensed under GPL-3.0 license + Version: 3.3.0 Version Modified By Date Comments ------- ----------- ---------- ----------- 3.1.4 K Hoang 23/09/2020 Initial coding for Generic boards using many WiFi/Ethernet modules/shields. 3.1.5 K Hoang 28/09/2020 Fix issue with nRF52 and STM32F/L/H/G/WB/MP1 using ESP8266/ESP32-AT 3.2.0 K Hoang 11/06/2021 Add support to RP2040-based boards using ESP-AT, WiFiNINA, W5x00 / ENC28J60 + 3.3.0 K Hoang 16/07/2021 Add support to WT32_ETH01 (ESP32 + LAN8720) *****************************************************************************************************************************/ /* diff --git a/examples/Generic/ESP_AT/STM32/STM32_SimpleServer/STM32_SimpleServer.ino b/examples/Generic/ESP_AT/STM32/STM32_SimpleServer/STM32_SimpleServer.ino index dd135c20..4adc8820 100644 --- a/examples/Generic/ESP_AT/STM32/STM32_SimpleServer/STM32_SimpleServer.ino +++ b/examples/Generic/ESP_AT/STM32/STM32_SimpleServer/STM32_SimpleServer.ino @@ -1,7 +1,7 @@ /**************************************************************************************************************************** STM32_SimpleServer.ino - For all Generic boards such as ESP8266, ESP32, SAMD21/SAMD51, nRF52, STM32F/L/H/G/WB/MP1,Teensy + For all Generic boards such as ESP8266, ESP32, WT32_ETH01, SAMD21/SAMD51, nRF52, STM32F/L/H/G/WB/MP1,Teensy with WiFiNINA, ESP8266/ESP32 WiFi, ESP8266/ESP32-AT, W5x00, ENC28J60, Native Ethernet shields DDNS_Generic is a library to automatically add port mappings to router using UPnP SSDP @@ -9,14 +9,15 @@ Based on and modified from Ofek Pearl's TinyUPnP Library (https://github.com/ofekp/TinyUPnP) Built by Khoi Hoang https://github.com/khoih-prog/UPnP_Generic - Licensed under MIT license - Version: 3.2.0 + Licensed under GPL-3.0 license + Version: 3.3.0 Version Modified By Date Comments ------- ----------- ---------- ----------- 3.1.4 K Hoang 23/09/2020 Initial coding for Generic boards using many WiFi/Ethernet modules/shields. 3.1.5 K Hoang 28/09/2020 Fix issue with nRF52 and STM32F/L/H/G/WB/MP1 using ESP8266/ESP32-AT 3.2.0 K Hoang 11/06/2021 Add support to RP2040-based boards using ESP-AT, WiFiNINA, W5x00 / ENC28J60 + 3.3.0 K Hoang 16/07/2021 Add support to WT32_ETH01 (ESP32 + LAN8720) *****************************************************************************************************************************/ /* diff --git a/examples/Generic/ESP_AT/nRF52/nRF52_PWM_LEDServer/nRF52_PWM_LEDServer.ino b/examples/Generic/ESP_AT/nRF52/nRF52_PWM_LEDServer/nRF52_PWM_LEDServer.ino index ec6e4d40..50c9bdd7 100644 --- a/examples/Generic/ESP_AT/nRF52/nRF52_PWM_LEDServer/nRF52_PWM_LEDServer.ino +++ b/examples/Generic/ESP_AT/nRF52/nRF52_PWM_LEDServer/nRF52_PWM_LEDServer.ino @@ -1,7 +1,7 @@ /**************************************************************************************************************************** nRF52_PWM_LEDServer.ino - For all Generic boards such as ESP8266, ESP32, SAMD21/SAMD51, nRF52, STM32F/L/H/G/WB/MP1,Teensy + For all Generic boards such as ESP8266, ESP32, WT32_ETH01, SAMD21/SAMD51, nRF52, STM32F/L/H/G/WB/MP1,Teensy with WiFiNINA, ESP8266/ESP32 WiFi, ESP8266/ESP32-AT, W5x00, ENC28J60, Native Ethernet shields DDNS_Generic is a library to automatically add port mappings to router using UPnP SSDP @@ -9,14 +9,15 @@ Based on and modified from Ofek Pearl's TinyUPnP Library (https://github.com/ofekp/TinyUPnP) Built by Khoi Hoang https://github.com/khoih-prog/UPnP_Generic - Licensed under MIT license - Version: 3.2.0 + Licensed under GPL-3.0 license + Version: 3.3.0 Version Modified By Date Comments ------- ----------- ---------- ----------- 3.1.4 K Hoang 23/09/2020 Initial coding for Generic boards using many WiFi/Ethernet modules/shields. 3.1.5 K Hoang 28/09/2020 Fix issue with nRF52 and STM32F/L/H/G/WB/MP1 using ESP8266/ESP32-AT 3.2.0 K Hoang 11/06/2021 Add support to RP2040-based boards using ESP-AT, WiFiNINA, W5x00 / ENC28J60 + 3.3.0 K Hoang 16/07/2021 Add support to WT32_ETH01 (ESP32 + LAN8720) *****************************************************************************************************************************/ /* Note: This example uses the DDNS_Generic library (https://github.com/khoih-prog/DDNS_Generic) diff --git a/examples/Generic/ESP_AT/nRF52/nRF52_SimpleServer/nRF52_SimpleServer.ino b/examples/Generic/ESP_AT/nRF52/nRF52_SimpleServer/nRF52_SimpleServer.ino index cecf0349..4fd54b5c 100644 --- a/examples/Generic/ESP_AT/nRF52/nRF52_SimpleServer/nRF52_SimpleServer.ino +++ b/examples/Generic/ESP_AT/nRF52/nRF52_SimpleServer/nRF52_SimpleServer.ino @@ -1,7 +1,7 @@ /**************************************************************************************************************************** nRF52_SimpleServer.ino - For all Generic boards such as ESP8266, ESP32, SAMD21/SAMD51, nRF52, STM32F/L/H/G/WB/MP1,Teensy + For all Generic boards such as ESP8266, ESP32, WT32_ETH01, SAMD21/SAMD51, nRF52, STM32F/L/H/G/WB/MP1,Teensy with WiFiNINA, ESP8266/ESP32 WiFi, ESP8266/ESP32-AT, W5x00, ENC28J60, Native Ethernet shields DDNS_Generic is a library to automatically add port mappings to router using UPnP SSDP @@ -9,14 +9,15 @@ Based on and modified from Ofek Pearl's TinyUPnP Library (https://github.com/ofekp/TinyUPnP) Built by Khoi Hoang https://github.com/khoih-prog/UPnP_Generic - Licensed under MIT license - Version: 3.2.0 + Licensed under GPL-3.0 license + Version: 3.3.0 Version Modified By Date Comments ------- ----------- ---------- ----------- 3.1.4 K Hoang 23/09/2020 Initial coding for Generic boards using many WiFi/Ethernet modules/shields. 3.1.5 K Hoang 28/09/2020 Fix issue with nRF52 and STM32F/L/H/G/WB/MP1 using ESP8266/ESP32-AT 3.2.0 K Hoang 11/06/2021 Add support to RP2040-based boards using ESP-AT, WiFiNINA, W5x00 / ENC28J60 + 3.3.0 K Hoang 16/07/2021 Add support to WT32_ETH01 (ESP32 + LAN8720) *****************************************************************************************************************************/ /* Note: This example includes the library EasyDDNS. You'll have to add this package using your Arduino Library Manager. diff --git a/examples/Generic/Ethernet/RP2040/RP2040_PWM_LEDServer/RP2040_PWM_LEDServer.ino b/examples/Generic/Ethernet/RP2040/RP2040_PWM_LEDServer/RP2040_PWM_LEDServer.ino index 584a60d9..3561cd78 100644 --- a/examples/Generic/Ethernet/RP2040/RP2040_PWM_LEDServer/RP2040_PWM_LEDServer.ino +++ b/examples/Generic/Ethernet/RP2040/RP2040_PWM_LEDServer/RP2040_PWM_LEDServer.ino @@ -1,7 +1,7 @@ /**************************************************************************************************************************** nRF52_PWM_LEDServer.ino - For all Generic boards such as ESP8266, ESP32, SAMD21/SAMD51, nRF52, STM32F/L/H/G/WB/MP1,Teensy + For all Generic boards such as ESP8266, ESP32, WT32_ETH01, SAMD21/SAMD51, nRF52, STM32F/L/H/G/WB/MP1,Teensy with WiFiNINA, ESP8266/ESP32 WiFi, ESP8266/ESP32-AT, W5x00, ENC28J60, Native Ethernet shields DDNS_Generic is a library to automatically add port mappings to router using UPnP SSDP @@ -9,14 +9,15 @@ Based on and modified from Ofek Pearl's TinyUPnP Library (https://github.com/ofekp/TinyUPnP) Built by Khoi Hoang https://github.com/khoih-prog/UPnP_Generic - Licensed under MIT license - Version: 3.2.0 + Licensed under GPL-3.0 license + Version: 3.3.0 Version Modified By Date Comments ------- ----------- ---------- ----------- 3.1.4 K Hoang 23/09/2020 Initial coding for Generic boards using many WiFi/Ethernet modules/shields. 3.1.5 K Hoang 28/09/2020 Fix issue with nRF52 and STM32F/L/H/G/WB/MP1 using ESP8266/ESP32-AT 3.2.0 K Hoang 11/06/2021 Add support to RP2040-based boards using ESP-AT, WiFiNINA, W5x00 / ENC28J60 + 3.3.0 K Hoang 16/07/2021 Add support to WT32_ETH01 (ESP32 + LAN8720) *****************************************************************************************************************************/ /* Note: This example uses the DDNS_Generic library (https://github.com/khoih-prog/DDNS_Generic) diff --git a/examples/Generic/Ethernet/RP2040/RP2040_SimpleServer/RP2040_SimpleServer.ino b/examples/Generic/Ethernet/RP2040/RP2040_SimpleServer/RP2040_SimpleServer.ino index 57e40a85..d5d407f2 100644 --- a/examples/Generic/Ethernet/RP2040/RP2040_SimpleServer/RP2040_SimpleServer.ino +++ b/examples/Generic/Ethernet/RP2040/RP2040_SimpleServer/RP2040_SimpleServer.ino @@ -1,7 +1,7 @@ /**************************************************************************************************************************** nRF52_SimpleServer.ino - For all Generic boards such as ESP8266, ESP32, SAMD21/SAMD51, nRF52, STM32F/L/H/G/WB/MP1,Teensy + For all Generic boards such as ESP8266, ESP32, WT32_ETH01, SAMD21/SAMD51, nRF52, STM32F/L/H/G/WB/MP1,Teensy with WiFiNINA, ESP8266/ESP32 WiFi, ESP8266/ESP32-AT, W5x00, ENC28J60, Native Ethernet shields DDNS_Generic is a library to automatically add port mappings to router using UPnP SSDP @@ -9,14 +9,15 @@ Based on and modified from Ofek Pearl's TinyUPnP Library (https://github.com/ofekp/TinyUPnP) Built by Khoi Hoang https://github.com/khoih-prog/UPnP_Generic - Licensed under MIT license - Version: 3.2.0 + Licensed under GPL-3.0 license + Version: 3.3.0 Version Modified By Date Comments ------- ----------- ---------- ----------- 3.1.4 K Hoang 23/09/2020 Initial coding for Generic boards using many WiFi/Ethernet modules/shields. 3.1.5 K Hoang 28/09/2020 Fix issue with nRF52 and STM32F/L/H/G/WB/MP1 using ESP8266/ESP32-AT 3.2.0 K Hoang 11/06/2021 Add support to RP2040-based boards using ESP-AT, WiFiNINA, W5x00 / ENC28J60 + 3.3.0 K Hoang 16/07/2021 Add support to WT32_ETH01 (ESP32 + LAN8720) *****************************************************************************************************************************/ /* Note: This example uses the DDNS_Generic library (https://github.com/khoih-prog/DDNS_Generic) diff --git a/examples/Generic/Ethernet/SAMD/SAMD_PWM_LEDServer/SAMD_PWM_LEDServer.ino b/examples/Generic/Ethernet/SAMD/SAMD_PWM_LEDServer/SAMD_PWM_LEDServer.ino index 78269440..4eeda3ff 100644 --- a/examples/Generic/Ethernet/SAMD/SAMD_PWM_LEDServer/SAMD_PWM_LEDServer.ino +++ b/examples/Generic/Ethernet/SAMD/SAMD_PWM_LEDServer/SAMD_PWM_LEDServer.ino @@ -1,7 +1,7 @@ /**************************************************************************************************************************** SAMD_PWM_LEDServer.ino - For all Generic boards such as ESP8266, ESP32, SAMD21/SAMD51, nRF52, STM32F/L/H/G/WB/MP1,Teensy + For all Generic boards such as ESP8266, ESP32, WT32_ETH01, SAMD21/SAMD51, nRF52, STM32F/L/H/G/WB/MP1,Teensy with WiFiNINA, ESP8266/ESP32 WiFi, ESP8266/ESP32-AT, W5x00, ENC28J60, Native Ethernet shields DDNS_Generic is a library to automatically add port mappings to router using UPnP SSDP @@ -9,14 +9,15 @@ Based on and modified from Ofek Pearl's TinyUPnP Library (https://github.com/ofekp/TinyUPnP) Built by Khoi Hoang https://github.com/khoih-prog/UPnP_Generic - Licensed under MIT license - Version: 3.2.0 + Licensed under GPL-3.0 license + Version: 3.3.0 Version Modified By Date Comments ------- ----------- ---------- ----------- 3.1.4 K Hoang 23/09/2020 Initial coding for Generic boards using many WiFi/Ethernet modules/shields. 3.1.5 K Hoang 28/09/2020 Fix issue with nRF52 and STM32F/L/H/G/WB/MP1 using ESP8266/ESP32-AT 3.2.0 K Hoang 11/06/2021 Add support to RP2040-based boards using ESP-AT, WiFiNINA, W5x00 / ENC28J60 + 3.3.0 K Hoang 16/07/2021 Add support to WT32_ETH01 (ESP32 + LAN8720) *****************************************************************************************************************************/ /* Note: This example uses the DDNS_Generic library (https://github.com/khoih-prog/DDNS_Generic) diff --git a/examples/Generic/Ethernet/SAMD/SAMD_SimpleServer/SAMD_SimpleServer.ino b/examples/Generic/Ethernet/SAMD/SAMD_SimpleServer/SAMD_SimpleServer.ino index d7eee8a5..9840eaad 100644 --- a/examples/Generic/Ethernet/SAMD/SAMD_SimpleServer/SAMD_SimpleServer.ino +++ b/examples/Generic/Ethernet/SAMD/SAMD_SimpleServer/SAMD_SimpleServer.ino @@ -1,7 +1,7 @@ /**************************************************************************************************************************** SAMD_SimpleServer.ino - For all Generic boards such as ESP8266, ESP32, SAMD21/SAMD51, nRF52, STM32F/L/H/G/WB/MP1,Teensy + For all Generic boards such as ESP8266, ESP32, WT32_ETH01, SAMD21/SAMD51, nRF52, STM32F/L/H/G/WB/MP1,Teensy with WiFiNINA, ESP8266/ESP32 WiFi, ESP8266/ESP32-AT, W5x00, ENC28J60, Native Ethernet shields DDNS_Generic is a library to automatically add port mappings to router using UPnP SSDP @@ -9,14 +9,15 @@ Based on and modified from Ofek Pearl's TinyUPnP Library (https://github.com/ofekp/TinyUPnP) Built by Khoi Hoang https://github.com/khoih-prog/UPnP_Generic - Licensed under MIT license - Version: 3.2.0 + Licensed under GPL-3.0 license + Version: 3.3.0 Version Modified By Date Comments ------- ----------- ---------- ----------- 3.1.4 K Hoang 23/09/2020 Initial coding for Generic boards using many WiFi/Ethernet modules/shields. 3.1.5 K Hoang 28/09/2020 Fix issue with nRF52 and STM32F/L/H/G/WB/MP1 using ESP8266/ESP32-AT 3.2.0 K Hoang 11/06/2021 Add support to RP2040-based boards using ESP-AT, WiFiNINA, W5x00 / ENC28J60 + 3.3.0 K Hoang 16/07/2021 Add support to WT32_ETH01 (ESP32 + LAN8720) *****************************************************************************************************************************/ /* Note: This example uses the DDNS_Generic library (https://github.com/khoih-prog/DDNS_Generic) diff --git a/examples/Generic/Ethernet/STM32/STM32_PWM_LEDServer/STM32_PWM_LEDServer.ino b/examples/Generic/Ethernet/STM32/STM32_PWM_LEDServer/STM32_PWM_LEDServer.ino index 948de05a..5111b769 100644 --- a/examples/Generic/Ethernet/STM32/STM32_PWM_LEDServer/STM32_PWM_LEDServer.ino +++ b/examples/Generic/Ethernet/STM32/STM32_PWM_LEDServer/STM32_PWM_LEDServer.ino @@ -1,7 +1,7 @@ /**************************************************************************************************************************** STM32_PWM_LEDServer.ino - For all Generic boards such as ESP8266, ESP32, SAMD21/SAMD51, nRF52, STM32F/L/H/G/WB/MP1,Teensy + For all Generic boards such as ESP8266, ESP32, WT32_ETH01, SAMD21/SAMD51, nRF52, STM32F/L/H/G/WB/MP1,Teensy with WiFiNINA, ESP8266/ESP32 WiFi, ESP8266/ESP32-AT, W5x00, ENC28J60, Native Ethernet shields DDNS_Generic is a library to automatically add port mappings to router using UPnP SSDP @@ -9,14 +9,15 @@ Based on and modified from Ofek Pearl's TinyUPnP Library (https://github.com/ofekp/TinyUPnP) Built by Khoi Hoang https://github.com/khoih-prog/UPnP_Generic - Licensed under MIT license - Version: 3.2.0 + Licensed under GPL-3.0 license + Version: 3.3.0 Version Modified By Date Comments ------- ----------- ---------- ----------- 3.1.4 K Hoang 23/09/2020 Initial coding for Generic boards using many WiFi/Ethernet modules/shields. 3.1.5 K Hoang 28/09/2020 Fix issue with nRF52 and STM32F/L/H/G/WB/MP1 using ESP8266/ESP32-AT 3.2.0 K Hoang 11/06/2021 Add support to RP2040-based boards using ESP-AT, WiFiNINA, W5x00 / ENC28J60 + 3.3.0 K Hoang 16/07/2021 Add support to WT32_ETH01 (ESP32 + LAN8720) *****************************************************************************************************************************/ /* Note: This example uses the DDNS_Generic library (https://github.com/khoih-prog/DDNS_Generic) diff --git a/examples/Generic/Ethernet/STM32/STM32_SimpleServer/STM32_SimpleServer.ino b/examples/Generic/Ethernet/STM32/STM32_SimpleServer/STM32_SimpleServer.ino index 32c8d65d..0c603025 100644 --- a/examples/Generic/Ethernet/STM32/STM32_SimpleServer/STM32_SimpleServer.ino +++ b/examples/Generic/Ethernet/STM32/STM32_SimpleServer/STM32_SimpleServer.ino @@ -1,7 +1,7 @@ /**************************************************************************************************************************** STM32_SimpleServer.ino - For all Generic boards such as ESP8266, ESP32, SAMD21/SAMD51, nRF52, STM32F/L/H/G/WB/MP1,Teensy + For all Generic boards such as ESP8266, ESP32, WT32_ETH01, SAMD21/SAMD51, nRF52, STM32F/L/H/G/WB/MP1,Teensy with WiFiNINA, ESP8266/ESP32 WiFi, ESP8266/ESP32-AT, W5x00, ENC28J60, Native Ethernet shields DDNS_Generic is a library to automatically add port mappings to router using UPnP SSDP @@ -9,14 +9,15 @@ Based on and modified from Ofek Pearl's TinyUPnP Library (https://github.com/ofekp/TinyUPnP) Built by Khoi Hoang https://github.com/khoih-prog/UPnP_Generic - Licensed under MIT license - Version: 3.2.0 + Licensed under GPL-3.0 license + Version: 3.3.0 Version Modified By Date Comments ------- ----------- ---------- ----------- 3.1.4 K Hoang 23/09/2020 Initial coding for Generic boards using many WiFi/Ethernet modules/shields. 3.1.5 K Hoang 28/09/2020 Fix issue with nRF52 and STM32F/L/H/G/WB/MP1 using ESP8266/ESP32-AT 3.2.0 K Hoang 11/06/2021 Add support to RP2040-based boards using ESP-AT, WiFiNINA, W5x00 / ENC28J60 + 3.3.0 K Hoang 16/07/2021 Add support to WT32_ETH01 (ESP32 + LAN8720) *****************************************************************************************************************************/ /* Note: This example uses the DDNS_Generic library (https://github.com/khoih-prog/DDNS_Generic) diff --git a/examples/Generic/Ethernet/nRF52/nRF52_PWM_LEDServer/nRF52_PWM_LEDServer.ino b/examples/Generic/Ethernet/nRF52/nRF52_PWM_LEDServer/nRF52_PWM_LEDServer.ino index 01da9522..216b7885 100644 --- a/examples/Generic/Ethernet/nRF52/nRF52_PWM_LEDServer/nRF52_PWM_LEDServer.ino +++ b/examples/Generic/Ethernet/nRF52/nRF52_PWM_LEDServer/nRF52_PWM_LEDServer.ino @@ -1,7 +1,7 @@ /**************************************************************************************************************************** nRF52_PWM_LEDServer.ino - For all Generic boards such as ESP8266, ESP32, SAMD21/SAMD51, nRF52, STM32F/L/H/G/WB/MP1,Teensy + For all Generic boards such as ESP8266, ESP32, WT32_ETH01, SAMD21/SAMD51, nRF52, STM32F/L/H/G/WB/MP1,Teensy with WiFiNINA, ESP8266/ESP32 WiFi, ESP8266/ESP32-AT, W5x00, ENC28J60, Native Ethernet shields DDNS_Generic is a library to automatically add port mappings to router using UPnP SSDP @@ -9,14 +9,15 @@ Based on and modified from Ofek Pearl's TinyUPnP Library (https://github.com/ofekp/TinyUPnP) Built by Khoi Hoang https://github.com/khoih-prog/UPnP_Generic - Licensed under MIT license - Version: 3.2.0 + Licensed under GPL-3.0 license + Version: 3.3.0 Version Modified By Date Comments ------- ----------- ---------- ----------- 3.1.4 K Hoang 23/09/2020 Initial coding for Generic boards using many WiFi/Ethernet modules/shields. 3.1.5 K Hoang 28/09/2020 Fix issue with nRF52 and STM32F/L/H/G/WB/MP1 using ESP8266/ESP32-AT 3.2.0 K Hoang 11/06/2021 Add support to RP2040-based boards using ESP-AT, WiFiNINA, W5x00 / ENC28J60 + 3.3.0 K Hoang 16/07/2021 Add support to WT32_ETH01 (ESP32 + LAN8720) *****************************************************************************************************************************/ /* Note: This example uses the DDNS_Generic library (https://github.com/khoih-prog/DDNS_Generic) diff --git a/examples/Generic/Ethernet/nRF52/nRF52_SimpleServer/nRF52_SimpleServer.ino b/examples/Generic/Ethernet/nRF52/nRF52_SimpleServer/nRF52_SimpleServer.ino index 0800f019..5137ce82 100644 --- a/examples/Generic/Ethernet/nRF52/nRF52_SimpleServer/nRF52_SimpleServer.ino +++ b/examples/Generic/Ethernet/nRF52/nRF52_SimpleServer/nRF52_SimpleServer.ino @@ -1,7 +1,7 @@ /**************************************************************************************************************************** nRF52_SimpleServer.ino - For all Generic boards such as ESP8266, ESP32, SAMD21/SAMD51, nRF52, STM32F/L/H/G/WB/MP1,Teensy + For all Generic boards such as ESP8266, ESP32, WT32_ETH01, SAMD21/SAMD51, nRF52, STM32F/L/H/G/WB/MP1,Teensy with WiFiNINA, ESP8266/ESP32 WiFi, ESP8266/ESP32-AT, W5x00, ENC28J60, Native Ethernet shields DDNS_Generic is a library to automatically add port mappings to router using UPnP SSDP @@ -9,14 +9,15 @@ Based on and modified from Ofek Pearl's TinyUPnP Library (https://github.com/ofekp/TinyUPnP) Built by Khoi Hoang https://github.com/khoih-prog/UPnP_Generic - Licensed under MIT license - Version: 3.2.0 + Licensed under GPL-3.0 license + Version: 3.3.0 Version Modified By Date Comments ------- ----------- ---------- ----------- 3.1.4 K Hoang 23/09/2020 Initial coding for Generic boards using many WiFi/Ethernet modules/shields. 3.1.5 K Hoang 28/09/2020 Fix issue with nRF52 and STM32F/L/H/G/WB/MP1 using ESP8266/ESP32-AT 3.2.0 K Hoang 11/06/2021 Add support to RP2040-based boards using ESP-AT, WiFiNINA, W5x00 / ENC28J60 + 3.3.0 K Hoang 16/07/2021 Add support to WT32_ETH01 (ESP32 + LAN8720) *****************************************************************************************************************************/ /* Note: This example uses the DDNS_Generic library (https://github.com/khoih-prog/DDNS_Generic) diff --git a/examples/Generic/WiFiNINA/RP2040/RP2040_PWM_LEDServer/RP2040_PWM_LEDServer.ino b/examples/Generic/WiFiNINA/RP2040/RP2040_PWM_LEDServer/RP2040_PWM_LEDServer.ino index 21e37f7a..3cc3a44e 100644 --- a/examples/Generic/WiFiNINA/RP2040/RP2040_PWM_LEDServer/RP2040_PWM_LEDServer.ino +++ b/examples/Generic/WiFiNINA/RP2040/RP2040_PWM_LEDServer/RP2040_PWM_LEDServer.ino @@ -1,22 +1,23 @@ /**************************************************************************************************************************** nRF52_PWM_LEDServer.ino - For all Generic boards such as ESP8266, ESP32, SAMD21/SAMD51, nRF52, STM32F/L/H/G/WB/MP1, RP2040-based - with WiFiNINA, ESP8266/ESP32 WiFi, ESP8266-AT, W5x00 Ethernet shields + For all Generic boards such as ESP8266, ESP32, WT32_ETH01, SAMD21/SAMD51, nRF52, STM32F/L/H/G/WB/MP1,Teensy + with WiFiNINA, ESP8266/ESP32 WiFi, ESP8266/ESP32-AT, W5x00, ENC28J60, Native Ethernet shields DDNS_Generic is a library to automatically add port mappings to router using UPnP SSDP (Simple Service Discovery Protocol) in order to provide access to the local Web Services from the Internet. Based on and modified from Ofek Pearl's TinyUPnP Library (https://github.com/ofekp/TinyUPnP) Built by Khoi Hoang https://github.com/khoih-prog/UPnP_Generic - Licensed under MIT license - Version: 3.2.0 + Licensed under GPL-3.0 license + Version: 3.3.0 Version Modified By Date Comments ------- ----------- ---------- ----------- 3.1.4 K Hoang 23/09/2020 Initial coding for Generic boards using many WiFi/Ethernet modules/shields. 3.1.5 K Hoang 28/09/2020 Fix issue with nRF52 and STM32F/L/H/G/WB/MP1 using ESP8266/ESP32-AT 3.2.0 K Hoang 11/06/2021 Add support to RP2040-based boards using ESP-AT, WiFiNINA, W5x00 / ENC28J60 + 3.3.0 K Hoang 16/07/2021 Add support to WT32_ETH01 (ESP32 + LAN8720) *****************************************************************************************************************************/ /* Note: This example uses the DDNS_Generic library (https://github.com/khoih-prog/DDNS_Generic) diff --git a/examples/Generic/WiFiNINA/RP2040/RP2040_SimpleServer/RP2040_SimpleServer.ino b/examples/Generic/WiFiNINA/RP2040/RP2040_SimpleServer/RP2040_SimpleServer.ino index 8583c32b..68c23f4c 100644 --- a/examples/Generic/WiFiNINA/RP2040/RP2040_SimpleServer/RP2040_SimpleServer.ino +++ b/examples/Generic/WiFiNINA/RP2040/RP2040_SimpleServer/RP2040_SimpleServer.ino @@ -1,22 +1,23 @@ /**************************************************************************************************************************** RP2040_SimpleServer.ino - For all Generic boards such as ESP8266, ESP32, SAMD21/SAMD51, nRF52, STM32F/L/H/G/WB/MP1, RP2040-based - with WiFiNINA, ESP8266/ESP32 WiFi, ESP8266-AT, W5x00 Ethernet shields + For all Generic boards such as ESP8266, ESP32, WT32_ETH01, SAMD21/SAMD51, nRF52, STM32F/L/H/G/WB/MP1,Teensy + with WiFiNINA, ESP8266/ESP32 WiFi, ESP8266/ESP32-AT, W5x00, ENC28J60, Native Ethernet shields DDNS_Generic is a library to automatically add port mappings to router using UPnP SSDP (Simple Service Discovery Protocol) in order to provide access to the local Web Services from the Internet. Based on and modified from Ofek Pearl's TinyUPnP Library (https://github.com/ofekp/TinyUPnP) Built by Khoi Hoang https://github.com/khoih-prog/UPnP_Generic - Licensed under MIT license - Version: 3.2.0 + Licensed under GPL-3.0 license + Version: 3.3.0 Version Modified By Date Comments ------- ----------- ---------- ----------- 3.1.4 K Hoang 23/09/2020 Initial coding for Generic boards using many WiFi/Ethernet modules/shields. 3.1.5 K Hoang 28/09/2020 Fix issue with nRF52 and STM32F/L/H/G/WB/MP1 using ESP8266/ESP32-AT 3.2.0 K Hoang 11/06/2021 Add support to RP2040-based boards using ESP-AT, WiFiNINA, W5x00 / ENC28J60 + 3.3.0 K Hoang 16/07/2021 Add support to WT32_ETH01 (ESP32 + LAN8720) *****************************************************************************************************************************/ /* Note: This example uses the DDNS_Generic library (https://github.com/khoih-prog/DDNS_Generic) diff --git a/examples/Generic/WiFiNINA/SAMD/SAMD_PWM_LEDServer/SAMD_PWM_LEDServer.ino b/examples/Generic/WiFiNINA/SAMD/SAMD_PWM_LEDServer/SAMD_PWM_LEDServer.ino index 053abb01..1b30b283 100644 --- a/examples/Generic/WiFiNINA/SAMD/SAMD_PWM_LEDServer/SAMD_PWM_LEDServer.ino +++ b/examples/Generic/WiFiNINA/SAMD/SAMD_PWM_LEDServer/SAMD_PWM_LEDServer.ino @@ -1,22 +1,23 @@ /**************************************************************************************************************************** SAMD_PWM_LEDServer.ino - For all Generic boards such as ESP8266, ESP32, SAMD21/SAMD51, nRF52, STM32F/L/H/G/WB/MP1 - with WiFiNINA, ESP8266/ESP32 WiFi, ESP8266-AT, W5x00 Ethernet shields + For all Generic boards such as ESP8266, ESP32, WT32_ETH01, SAMD21/SAMD51, nRF52, STM32F/L/H/G/WB/MP1,Teensy + with WiFiNINA, ESP8266/ESP32 WiFi, ESP8266/ESP32-AT, W5x00, ENC28J60, Native Ethernet shields DDNS_Generic is a library to automatically add port mappings to router using UPnP SSDP (Simple Service Discovery Protocol) in order to provide access to the local Web Services from the Internet. Based on and modified from Ofek Pearl's TinyUPnP Library (https://github.com/ofekp/TinyUPnP) Built by Khoi Hoang https://github.com/khoih-prog/UPnP_Generic - Licensed under MIT license - Version: 3.2.0 + Licensed under GPL-3.0 license + Version: 3.3.0 Version Modified By Date Comments ------- ----------- ---------- ----------- 3.1.4 K Hoang 23/09/2020 Initial coding for Generic boards using many WiFi/Ethernet modules/shields. 3.1.5 K Hoang 28/09/2020 Fix issue with nRF52 and STM32F/L/H/G/WB/MP1 using ESP8266/ESP32-AT 3.2.0 K Hoang 11/06/2021 Add support to RP2040-based boards using ESP-AT, WiFiNINA, W5x00 / ENC28J60 + 3.3.0 K Hoang 16/07/2021 Add support to WT32_ETH01 (ESP32 + LAN8720) *****************************************************************************************************************************/ /* Note: This example uses the DDNS_Generic library (https://github.com/khoih-prog/DDNS_Generic) diff --git a/examples/Generic/WiFiNINA/SAMD/SAMD_SimpleServer/SAMD_SimpleServer.ino b/examples/Generic/WiFiNINA/SAMD/SAMD_SimpleServer/SAMD_SimpleServer.ino index 0b85821f..fe9b7bf4 100644 --- a/examples/Generic/WiFiNINA/SAMD/SAMD_SimpleServer/SAMD_SimpleServer.ino +++ b/examples/Generic/WiFiNINA/SAMD/SAMD_SimpleServer/SAMD_SimpleServer.ino @@ -1,22 +1,23 @@ /**************************************************************************************************************************** SAMD_SimpleServer.ino - For all Generic boards such as ESP8266, ESP32, SAMD21/SAMD51, nRF52, STM32F/L/H/G/WB/MP1 - with WiFiNINA, ESP8266/ESP32 WiFi, ESP8266-AT, W5x00 Ethernet shields + For all Generic boards such as ESP8266, ESP32, WT32_ETH01, SAMD21/SAMD51, nRF52, STM32F/L/H/G/WB/MP1,Teensy + with WiFiNINA, ESP8266/ESP32 WiFi, ESP8266/ESP32-AT, W5x00, ENC28J60, Native Ethernet shields DDNS_Generic is a library to automatically add port mappings to router using UPnP SSDP (Simple Service Discovery Protocol) in order to provide access to the local Web Services from the Internet. Based on and modified from Ofek Pearl's TinyUPnP Library (https://github.com/ofekp/TinyUPnP) Built by Khoi Hoang https://github.com/khoih-prog/UPnP_Generic - Licensed under MIT license - Version: 3.2.0 + Licensed under GPL-3.0 license + Version: 3.3.0 Version Modified By Date Comments ------- ----------- ---------- ----------- 3.1.4 K Hoang 23/09/2020 Initial coding for Generic boards using many WiFi/Ethernet modules/shields. 3.1.5 K Hoang 28/09/2020 Fix issue with nRF52 and STM32F/L/H/G/WB/MP1 using ESP8266/ESP32-AT 3.2.0 K Hoang 11/06/2021 Add support to RP2040-based boards using ESP-AT, WiFiNINA, W5x00 / ENC28J60 + 3.3.0 K Hoang 16/07/2021 Add support to WT32_ETH01 (ESP32 + LAN8720) *****************************************************************************************************************************/ /* Note: This example uses the DDNS_Generic library (https://github.com/khoih-prog/DDNS_Generic) diff --git a/examples/Generic/WiFiNINA/STM32/STM32_PWM_LEDServer/STM32_PWM_LEDServer.ino b/examples/Generic/WiFiNINA/STM32/STM32_PWM_LEDServer/STM32_PWM_LEDServer.ino index de2a3d76..4d479471 100644 --- a/examples/Generic/WiFiNINA/STM32/STM32_PWM_LEDServer/STM32_PWM_LEDServer.ino +++ b/examples/Generic/WiFiNINA/STM32/STM32_PWM_LEDServer/STM32_PWM_LEDServer.ino @@ -1,22 +1,23 @@ /**************************************************************************************************************************** STM32_PWM_LEDServer.ino - For all Generic boards such as ESP8266, ESP32, SAMD21/SAMD51, nRF52, STM32F/L/H/G/WB/MP1 - with WiFiNINA, ESP8266/ESP32 WiFi, ESP8266-AT, W5x00 Ethernet shields + For all Generic boards such as ESP8266, ESP32, WT32_ETH01, SAMD21/SAMD51, nRF52, STM32F/L/H/G/WB/MP1,Teensy + with WiFiNINA, ESP8266/ESP32 WiFi, ESP8266/ESP32-AT, W5x00, ENC28J60, Native Ethernet shields DDNS_Generic is a library to automatically add port mappings to router using UPnP SSDP (Simple Service Discovery Protocol) in order to provide access to the local Web Services from the Internet. Based on and modified from Ofek Pearl's TinyUPnP Library (https://github.com/ofekp/TinyUPnP) Built by Khoi Hoang https://github.com/khoih-prog/UPnP_Generic - Licensed under MIT license - Version: 3.2.0 + Licensed under GPL-3.0 license + Version: 3.3.0 Version Modified By Date Comments ------- ----------- ---------- ----------- 3.1.4 K Hoang 23/09/2020 Initial coding for Generic boards using many WiFi/Ethernet modules/shields. 3.1.5 K Hoang 28/09/2020 Fix issue with nRF52 and STM32F/L/H/G/WB/MP1 using ESP8266/ESP32-AT 3.2.0 K Hoang 11/06/2021 Add support to RP2040-based boards using ESP-AT, WiFiNINA, W5x00 / ENC28J60 + 3.3.0 K Hoang 16/07/2021 Add support to WT32_ETH01 (ESP32 + LAN8720) *****************************************************************************************************************************/ /* Note: This example uses the DDNS_Generic library (https://github.com/khoih-prog/DDNS_Generic) diff --git a/examples/Generic/WiFiNINA/STM32/STM32_SimpleServer/STM32_SimpleServer.ino b/examples/Generic/WiFiNINA/STM32/STM32_SimpleServer/STM32_SimpleServer.ino index e950c2db..ae93d493 100644 --- a/examples/Generic/WiFiNINA/STM32/STM32_SimpleServer/STM32_SimpleServer.ino +++ b/examples/Generic/WiFiNINA/STM32/STM32_SimpleServer/STM32_SimpleServer.ino @@ -1,22 +1,23 @@ /**************************************************************************************************************************** STM32_SimpleServer.ino - For all Generic boards such as ESP8266, ESP32, SAMD21/SAMD51, nRF52, STM32F/L/H/G/WB/MP1 - with WiFiNINA, ESP8266/ESP32 WiFi, ESP8266-AT, W5x00 Ethernet shields + For all Generic boards such as ESP8266, ESP32, WT32_ETH01, SAMD21/SAMD51, nRF52, STM32F/L/H/G/WB/MP1,Teensy + with WiFiNINA, ESP8266/ESP32 WiFi, ESP8266/ESP32-AT, W5x00, ENC28J60, Native Ethernet shields DDNS_Generic is a library to automatically add port mappings to router using UPnP SSDP (Simple Service Discovery Protocol) in order to provide access to the local Web Services from the Internet. Based on and modified from Ofek Pearl's TinyUPnP Library (https://github.com/ofekp/TinyUPnP) Built by Khoi Hoang https://github.com/khoih-prog/UPnP_Generic - Licensed under MIT license - Version: 3.2.0 + Licensed under GPL-3.0 license + Version: 3.3.0 Version Modified By Date Comments ------- ----------- ---------- ----------- 3.1.4 K Hoang 23/09/2020 Initial coding for Generic boards using many WiFi/Ethernet modules/shields. 3.1.5 K Hoang 28/09/2020 Fix issue with nRF52 and STM32F/L/H/G/WB/MP1 using ESP8266/ESP32-AT 3.2.0 K Hoang 11/06/2021 Add support to RP2040-based boards using ESP-AT, WiFiNINA, W5x00 / ENC28J60 + 3.3.0 K Hoang 16/07/2021 Add support to WT32_ETH01 (ESP32 + LAN8720) *****************************************************************************************************************************/ /* Note: This example uses the DDNS_Generic library (https://github.com/khoih-prog/DDNS_Generic) diff --git a/examples/Generic/WiFiNINA/nRF52/nRF52_PWM_LEDServer/nRF52_PWM_LEDServer.ino b/examples/Generic/WiFiNINA/nRF52/nRF52_PWM_LEDServer/nRF52_PWM_LEDServer.ino index d99b0196..12725ffc 100644 --- a/examples/Generic/WiFiNINA/nRF52/nRF52_PWM_LEDServer/nRF52_PWM_LEDServer.ino +++ b/examples/Generic/WiFiNINA/nRF52/nRF52_PWM_LEDServer/nRF52_PWM_LEDServer.ino @@ -1,22 +1,23 @@ /**************************************************************************************************************************** nRF52_PWM_LEDServer.ino - For all Generic boards such as ESP8266, ESP32, SAMD21/SAMD51, nRF52, STM32F/L/H/G/WB/MP1 - with WiFiNINA, ESP8266/ESP32 WiFi, ESP8266-AT, W5x00 Ethernet shields + For all Generic boards such as ESP8266, ESP32, WT32_ETH01, SAMD21/SAMD51, nRF52, STM32F/L/H/G/WB/MP1,Teensy + with WiFiNINA, ESP8266/ESP32 WiFi, ESP8266/ESP32-AT, W5x00, ENC28J60, Native Ethernet shields DDNS_Generic is a library to automatically add port mappings to router using UPnP SSDP (Simple Service Discovery Protocol) in order to provide access to the local Web Services from the Internet. Based on and modified from Ofek Pearl's TinyUPnP Library (https://github.com/ofekp/TinyUPnP) Built by Khoi Hoang https://github.com/khoih-prog/UPnP_Generic - Licensed under MIT license - Version: 3.2.0 + Licensed under GPL-3.0 license + Version: 3.3.0 Version Modified By Date Comments ------- ----------- ---------- ----------- 3.1.4 K Hoang 23/09/2020 Initial coding for Generic boards using many WiFi/Ethernet modules/shields. 3.1.5 K Hoang 28/09/2020 Fix issue with nRF52 and STM32F/L/H/G/WB/MP1 using ESP8266/ESP32-AT 3.2.0 K Hoang 11/06/2021 Add support to RP2040-based boards using ESP-AT, WiFiNINA, W5x00 / ENC28J60 + 3.3.0 K Hoang 16/07/2021 Add support to WT32_ETH01 (ESP32 + LAN8720) *****************************************************************************************************************************/ /* Note: This example uses the DDNS_Generic library (https://github.com/khoih-prog/DDNS_Generic) diff --git a/examples/Generic/WiFiNINA/nRF52/nRF52_SimpleServer/nRF52_SimpleServer.ino b/examples/Generic/WiFiNINA/nRF52/nRF52_SimpleServer/nRF52_SimpleServer.ino index 858ec146..97e4fd04 100644 --- a/examples/Generic/WiFiNINA/nRF52/nRF52_SimpleServer/nRF52_SimpleServer.ino +++ b/examples/Generic/WiFiNINA/nRF52/nRF52_SimpleServer/nRF52_SimpleServer.ino @@ -1,22 +1,23 @@ /**************************************************************************************************************************** nRF52_SimpleServer.ino - For all Generic boards such as ESP8266, ESP32, SAMD21/SAMD51, nRF52, STM32F/L/H/G/WB/MP1 - with WiFiNINA, ESP8266/ESP32 WiFi, ESP8266-AT, W5x00 Ethernet shields + For all Generic boards such as ESP8266, ESP32, WT32_ETH01, SAMD21/SAMD51, nRF52, STM32F/L/H/G/WB/MP1,Teensy + with WiFiNINA, ESP8266/ESP32 WiFi, ESP8266/ESP32-AT, W5x00, ENC28J60, Native Ethernet shields DDNS_Generic is a library to automatically add port mappings to router using UPnP SSDP (Simple Service Discovery Protocol) in order to provide access to the local Web Services from the Internet. Based on and modified from Ofek Pearl's TinyUPnP Library (https://github.com/ofekp/TinyUPnP) Built by Khoi Hoang https://github.com/khoih-prog/UPnP_Generic - Licensed under MIT license - Version: 3.2.0 + Licensed under GPL-3.0 license + Version: 3.3.0 Version Modified By Date Comments ------- ----------- ---------- ----------- 3.1.4 K Hoang 23/09/2020 Initial coding for Generic boards using many WiFi/Ethernet modules/shields. 3.1.5 K Hoang 28/09/2020 Fix issue with nRF52 and STM32F/L/H/G/WB/MP1 using ESP8266/ESP32-AT 3.2.0 K Hoang 11/06/2021 Add support to RP2040-based boards using ESP-AT, WiFiNINA, W5x00 / ENC28J60 + 3.3.0 K Hoang 16/07/2021 Add support to WT32_ETH01 (ESP32 + LAN8720) *****************************************************************************************************************************/ /* Note: This example uses the DDNS_Generic library (https://github.com/khoih-prog/DDNS_Generic) diff --git a/examples/WT32_ETH01/PWM_LEDServer_WT32_ETH01/PWM_LEDServer_WT32_ETH01.ino b/examples/WT32_ETH01/PWM_LEDServer_WT32_ETH01/PWM_LEDServer_WT32_ETH01.ino new file mode 100644 index 00000000..83fbc956 --- /dev/null +++ b/examples/WT32_ETH01/PWM_LEDServer_WT32_ETH01/PWM_LEDServer_WT32_ETH01.ino @@ -0,0 +1,317 @@ +/**************************************************************************************************************************** + PWM_LEDServer_WT32_ETH01.ino + + For all Generic boards such as ESP8266, ESP32, WT32_ETH01, SAMD21/SAMD51, nRF52, STM32F/L/H/G/WB/MP1,Teensy + with WiFiNINA, ESP8266/ESP32 WiFi, ESP8266/ESP32-AT, W5x00, ENC28J60, Native Ethernet shields + + DDNS_Generic is a library to automatically add port mappings to router using UPnP SSDP + (Simple Service Discovery Protocol) in order to provide access to the local Web Services from the Internet. + + Based on and modified from Ofek Pearl's TinyUPnP Library (https://github.com/ofekp/TinyUPnP) + Built by Khoi Hoang https://github.com/khoih-prog/UPnP_Generic + Licensed under GPL-3.0 license + Version: 3.3.0 + + Version Modified By Date Comments + ------- ----------- ---------- ----------- + 3.1.4 K Hoang 23/09/2020 Initial coding for Generic boards using many WiFi/Ethernet modules/shields. + 3.1.5 K Hoang 28/09/2020 Fix issue with nRF52 and STM32F/L/H/G/WB/MP1 using ESP8266/ESP32-AT + 3.2.0 K Hoang 11/06/2021 Add support to RP2040-based boards using ESP-AT, WiFiNINA, W5x00 / ENC28J60 + 3.3.0 K Hoang 16/07/2021 Add support to WT32_ETH01 (ESP32 + LAN8720) + *****************************************************************************************************************************/ +/* + Note: This example uses the DDNS_Generic library (https://github.com/khoih-prog/DDNS_Generic) + You can access this WebServer by either localIP:LISTEN_PORT such as 192.169.2.100:5933/?percentage=20 + or DDNS_Host:LISTEN_PORT, such as account.duckdns.org:5933/?percentage=20 +*/ + +#if defined(ESP32) + #define UPNP_USING_WT32_ETH01 true +#else + #error This code is intended to run on the ESP32 platform! Please check your Tools->Board setting. +#endif + +// Debug Level from 0 to 4 +#define _DDNS_GENERIC_LOGLEVEL_ 1 +#define _UPNP_LOGLEVEL_ 3 + +// Select DDNS_USING_WIFI for boards using built-in WiFi, such as Nano-33-IoT +#define DDNS_USING_WIFI true +#define DDNS_USING_ETHERNET false + +#include + +#include // https://github.com/khoih-prog/UPnP_Generic + +#include // https://github.com/khoih-prog/DDNS_Generic + +#define LISTEN_PORT 5931 +#define LEASE_DURATION 36000 // seconds + +// Select the IP address according to your local network +IPAddress myIP(192, 168, 2, 232); +IPAddress myGW(192, 168, 2, 1); +IPAddress mySN(255, 255, 255, 0); + +// Google DNS Server IP +IPAddress myDNS(8, 8, 8, 8); + +#define FRIENDLY_NAME ARDUINO_BOARD "-WT32_ETH01" // this name will appear in your router port forwarding section + +UPnP* uPnP; + +WebServer server(LISTEN_PORT); + +// setting PWM properties +const int freq = 5000; +const int ledChannel = 0; +const int resolution = 10; //Resolution 8, 10, 12, 15 bits. Select 10 => 1024 steps + +#define LED_REVERSED false +#define LED_ON 100 +#define LED_OFF 0 + +#define LED_PIN 2 // LED_BUILTIN + +const int delayval = 10; + +void onUpdateCallback(const char* oldIP, const char* newIP) +{ + (void) oldIP; + + Serial.print(F("DDNSGeneric - IP Change Detected: ")); + Serial.println(newIP); +} + +// 0 <= percentage <= 100 +void setPower(uint32_t percentage) +{ + long pwm_val = map(percentage, LED_OFF, LED_ON, 0, 1023); + + if (pwm_val > 1023) + { + pwm_val = 1023; + } + + ledcWrite(ledChannel, pwm_val); +} + +void fadeOn(void) +{ +#if LED_REVERSED + for (int i = 100; i >= 0; i--) +#else + for (int i = 0; i < 100; i++) +#endif + { + setPower(i); + delay(delayval); + } +} + +void fadeOff(void) +{ +#if LED_REVERSED + for (int i = 0; i < 100; i++) +#else + for (int i = 100; i >= 0; i--) +#endif + { + setPower(i); + delay(delayval); + } +} + +void showLED(void) +{ + for (int i = 0; i < 2; i++) + { + fadeOn(); + fadeOff(); + } +} + +void handleRoot() +{ + String message = F("Hello from "); + + message += String(ARDUINO_BOARD); + message += F(" running UPnP_Generic & DDNS_Generic\n"); + + message += F("\nNumber of args received: "); + message += server.args(); // get number of parameters + message += F("\n"); + + int percentage = 0; + + for (int i = 0; i < server.args(); i++) + { + message += "Arg #" + (String)i + " => "; + message += server.argName(i) + ": "; // get the name of the parameter + message += server.arg(i) + "\n"; // get the value of the parameter + + if (server.argName(i).equals("percentage")) + { + percentage = server.arg(i).toInt(); + } + } + + server.send(200, F("text/plain"), message); //Response to the HTTP request + + setPower(percentage); +} + +void handleNotFound() +{ + String message = F("File Not Found\n\n"); + + message += F("URI: "); + message += server.uri(); + message += F("\nMethod: "); + message += (server.method() == HTTP_GET) ? F("GET") : F("POST"); + message += F("\nArguments: "); + message += server.args(); + message += F("\n"); + + for (uint8_t i = 0; i < server.args(); i++) + { + message += " " + server.argName(i) + ": " + server.arg(i) + "\n"; + } + + server.send(404, F("text/plain"), message); +} + +void setup(void) +{ + Serial.begin(115200); + while (!Serial); + +#if ( 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 ) + #warning Using ESP32_S2 + + delay(2000); +#endif + + Serial.print(F("\nStart PWM_LEDServer_WT32_ETH01 on ")); Serial.print(BOARD_NAME); + Serial.print(F(" with ")); Serial.println(SHIELD_TYPE); + Serial.println(WEBSERVER_WT32_ETH01_VERSION); + Serial.println(DDNS_GENERIC_VERSION); + Serial.println(UPNP_GENERIC_VERSION); + + pinMode(LED_PIN,OUTPUT); + + // configure LED PWM function + ledcSetup(ledChannel, freq, resolution); + + // attach the channel to the LED_PIN + ledcAttachPin(LED_PIN, ledChannel); + + showLED(); + + //bool begin(uint8_t phy_addr=ETH_PHY_ADDR, int power=ETH_PHY_POWER, int mdc=ETH_PHY_MDC, int mdio=ETH_PHY_MDIO, + // eth_phy_type_t type=ETH_PHY_TYPE, eth_clock_mode_t clk_mode=ETH_CLK_MODE); + //ETH.begin(ETH_PHY_ADDR, ETH_PHY_POWER, ETH_PHY_MDC, ETH_PHY_MDIO, ETH_PHY_TYPE, ETH_CLK_MODE); + ETH.begin(ETH_PHY_ADDR, ETH_PHY_POWER); + + // 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(myIP, myGW, mySN, myDNS); + + WT32_ETH01_onEvent(); + + WT32_ETH01_waitForConnect(); + + IPAddress localIP = ETH.localIP(); + + Serial.print(F("IP address: ")); + Serial.println(localIP); + + //////////////// + + DDNSGeneric.service("duckdns"); // Enter your DDNS Service Name - "duckdns" / "noip" + + /* + For DDNS Providers where you get a token: + DDNSGeneric.client("domain", "token"); + + For DDNS Providers where you get username and password: ( Leave the password field empty "" if not required ) + DDNSGeneric.client("domain", "username", "password"); + */ + DDNSGeneric.client("account.duckdns.org", "12345678-1234-1234-1234-123456789012"); + + DDNSGeneric.onUpdate(onUpdateCallback); + + //////////////// + + uPnP = new UPnP(30000); // -1 means blocking, preferably, use a timeout value (ms) + + if (uPnP) + { + uPnP->addPortMappingConfig(localIP, LISTEN_PORT, RULE_PROTOCOL_TCP, LEASE_DURATION, FRIENDLY_NAME); + + bool portMappingAdded = false; + +#define RETRY_TIMES 4 + int retries = 0; + + while (!portMappingAdded && (retries < RETRY_TIMES)) + { + Serial.println("Add Port Forwarding, Try # " + String(++retries)); + + int result = uPnP->commitPortMappings(); + + portMappingAdded = ( (result == PORT_MAP_SUCCESS) || (result == ALREADY_MAPPED) ); + + //Serial.println("commitPortMappings result =" + String(result)); + + if (!portMappingAdded) + { + // for debugging, you can see this in your router too under forwarding or UPnP + //uPnP->printAllPortMappings(); + //Serial.println(F("This was printed because adding the required port mapping failed")); + if (retries < RETRY_TIMES) + delay(10000); // 10 seconds before trying again + } + } + + uPnP->printAllPortMappings(); + + Serial.println(F("\nUPnP done")); + } + + showLED(); + + server.on(F("/"), handleRoot); + + server.on(F("/inline"), []() + { + server.send(200, F("text/plain"), F("This works as well")); + }); + + server.onNotFound(handleNotFound); + + server.begin(); + + Serial.print(F("HTTP WiFiWebServer is @ IP : ")); + Serial.print(localIP); + Serial.print(F(", port = ")); + Serial.println(LISTEN_PORT); + + Serial.print(F("Gateway Address: ")); + Serial.println(ETH.gatewayIP()); + Serial.print(F("Network Mask: ")); + Serial.println(ETH.subnetMask()); +} + +void loop(void) +{ + //delay(100); + + DDNSGeneric.update(555000); + + uPnP->updatePortMappings(600000); // 10 minutes + + server.handleClient(); +} diff --git a/examples/WT32_ETH01/SimpleServer_WT32_ETH01/SimpleServer_WT32_ETH01.ino b/examples/WT32_ETH01/SimpleServer_WT32_ETH01/SimpleServer_WT32_ETH01.ino new file mode 100644 index 00000000..fb09aaca --- /dev/null +++ b/examples/WT32_ETH01/SimpleServer_WT32_ETH01/SimpleServer_WT32_ETH01.ino @@ -0,0 +1,254 @@ +/**************************************************************************************************************************** + SimpleServerEsp32.ino + + For all Generic boards such as ESP8266, ESP32, WT32_ETH01, SAMD21/SAMD51, nRF52, STM32F/L/H/G/WB/MP1,Teensy + with WiFiNINA, ESP8266/ESP32 WiFi, ESP8266/ESP32-AT, W5x00, ENC28J60, Native Ethernet shields + + DDNS_Generic is a library to automatically add port mappings to router using UPnP SSDP + (Simple Service Discovery Protocol) in order to provide access to the local Web Services from the Internet. + + Based on and modified from Ofek Pearl's TinyUPnP Library (https://github.com/ofekp/TinyUPnP) + Built by Khoi Hoang https://github.com/khoih-prog/UPnP_Generic + Licensed under GPL-3.0 license + Version: 3.3.0 + + Version Modified By Date Comments + ------- ----------- ---------- ----------- + 3.1.4 K Hoang 23/09/2020 Initial coding for Generic boards using many WiFi/Ethernet modules/shields. + 3.1.5 K Hoang 28/09/2020 Fix issue with nRF52 and STM32F/L/H/G/WB/MP1 using ESP8266/ESP32-AT + 3.2.0 K Hoang 11/06/2021 Add support to RP2040-based boards using ESP-AT, WiFiNINA, W5x00 / ENC28J60 + 3.3.0 K Hoang 16/07/2021 Add support to WT32_ETH01 (ESP32 + LAN8720) + *****************************************************************************************************************************/ +/* + Note: This example uses the DDNS_Generic library (https://github.com/khoih-prog/DDNS_Generic) + You can access this WebServer by either localIP:LISTEN_PORT such as 192.169.2.100:5952 + or DDNS_Host:LISTEN_PORT, such as account.duckdns.org:5932 +*/ + +#if defined(ESP32) + #define UPNP_USING_WT32_ETH01 true +#else + #error This code is intended to run on the ESP32 platform! Please check your Tools->Board setting. +#endif + +// Debug Level from 0 to 4 +#define _DDNS_GENERIC_LOGLEVEL_ 1 +#define _UPNP_LOGLEVEL_ 3 + +// Select DDNS_USING_WIFI for boards using built-in WiFi, such as Nano-33-IoT +#define DDNS_USING_WIFI true +#define DDNS_USING_ETHERNET false + +#include + +#include // https://github.com/khoih-prog/UPnP_Generic + +#include // https://github.com/khoih-prog/DDNS_Generic + +#define LISTEN_PORT 5931 +#define LEASE_DURATION 36000 // seconds + +// Select the IP address according to your local network +IPAddress myIP(192, 168, 2, 232); +IPAddress myGW(192, 168, 2, 1); +IPAddress mySN(255, 255, 255, 0); + +// Google DNS Server IP +IPAddress myDNS(8, 8, 8, 8); + +#define FRIENDLY_NAME ARDUINO_BOARD "-WT32_ETH01" // this name will appear in your router port forwarding section + +UPnP* uPnP; + +WebServer server(LISTEN_PORT); + +const int led = 2; // LED_BUILTIN + +void onUpdateCallback(const char* oldIP, const char* newIP) +{ + (void) oldIP; + + Serial.print(F("DDNSGeneric - IP Change Detected: ")); + Serial.println(newIP); +} + +void handleRoot() +{ +#define BUFFER_SIZE 400 + + digitalWrite(led, 1); + char temp[BUFFER_SIZE]; + int sec = millis() / 1000; + int min = sec / 60; + int hr = min / 60; + int day = hr / 24; + + hr = hr % 24; + + snprintf_P(temp, BUFFER_SIZE - 1, + PSTR("\ +\ +\ +%s\ +\ +\ +\ +

Hello from %s

\ +

running UPnP_Generic & DDNS_Generic

\ +

Uptime: %d d %02d:%02d:%02d

\ +\ +"), BOARD_NAME, BOARD_NAME, day, hr, min % 60, sec % 60); + + server.send(200, F("text/html"), temp); + digitalWrite(led, 0); +} + +void handleNotFound() +{ + digitalWrite(led, 1); + String message = F("File Not Found\n\n"); + + message += F("URI: "); + message += server.uri(); + message += F("\nMethod: "); + message += (server.method() == HTTP_GET) ? F("GET") : F("POST"); + message += F("\nArguments: "); + message += server.args(); + message += F("\n"); + + for (uint8_t i = 0; i < server.args(); i++) + { + message += " " + server.argName(i) + ": " + server.arg(i) + "\n"; + } + + server.send(404, F("text/plain"), message); + digitalWrite(led, 0); +} + +void setup(void) +{ + pinMode(led, OUTPUT); + digitalWrite(led, 0); + + Serial.begin(115200); + while (!Serial); + +#if ( 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 ) + #warning Using ESP32_S2 + + delay(1000); +#endif + + Serial.print(F("\nStart SimpleServer_WT32_ETH01 on ")); Serial.print(BOARD_NAME); + Serial.print(F(" with ")); Serial.println(SHIELD_TYPE); + Serial.println(WEBSERVER_WT32_ETH01_VERSION); + Serial.println(DDNS_GENERIC_VERSION); + Serial.println(UPNP_GENERIC_VERSION); + + //bool begin(uint8_t phy_addr=ETH_PHY_ADDR, int power=ETH_PHY_POWER, int mdc=ETH_PHY_MDC, int mdio=ETH_PHY_MDIO, + // eth_phy_type_t type=ETH_PHY_TYPE, eth_clock_mode_t clk_mode=ETH_CLK_MODE); + //ETH.begin(ETH_PHY_ADDR, ETH_PHY_POWER, ETH_PHY_MDC, ETH_PHY_MDIO, ETH_PHY_TYPE, ETH_CLK_MODE); + ETH.begin(ETH_PHY_ADDR, ETH_PHY_POWER); + + // 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(myIP, myGW, mySN, myDNS); + + WT32_ETH01_onEvent(); + + WT32_ETH01_waitForConnect(); + + IPAddress localIP = ETH.localIP(); + + Serial.print(F("IP address: ")); + Serial.println(localIP); + + //////////////// + + DDNSGeneric.service("duckdns"); // Enter your DDNS Service Name - "duckdns" / "noip" + + /* + For DDNS Providers where you get a token: + DDNSGeneric.client("domain", "token"); + + For DDNS Providers where you get username and password: ( Leave the password field empty "" if not required ) + DDNSGeneric.client("domain", "username", "password"); + */ + DDNSGeneric.client("account.duckdns.org", "12345678-1234-1234-1234-123456789012"); + + DDNSGeneric.onUpdate(onUpdateCallback); + + //////////////// + + //////////////// + + uPnP = new UPnP(30000); // -1 means blocking, preferably, use a timeout value (ms) + + if (uPnP) + { + uPnP->addPortMappingConfig(localIP, LISTEN_PORT, RULE_PROTOCOL_TCP, LEASE_DURATION, FRIENDLY_NAME); + + bool portMappingAdded = false; + +#define RETRY_TIMES 4 + int retries = 0; + + while (!portMappingAdded && (retries < RETRY_TIMES)) + { + Serial.println("Add Port Forwarding, Try # " + String(++retries)); + + int result = uPnP->commitPortMappings(); + + portMappingAdded = ( (result == PORT_MAP_SUCCESS) || (result == ALREADY_MAPPED) ); + + //Serial.println("commitPortMappings result =" + String(result)); + + if (!portMappingAdded) + { + // for debugging, you can see this in your router too under forwarding or UPnP + //uPnP->printAllPortMappings(); + //Serial.println(F("This was printed because adding the required port mapping failed")); + if (retries < RETRY_TIMES) + delay(10000); // 10 seconds before trying again + } + } + + uPnP->printAllPortMappings(); + + Serial.println(F("\nUPnP done")); + } + + server.on(F("/"), handleRoot); + + server.on(F("/inline"), []() + { + server.send(200, F("text/plain"), F("This works as well")); + }); + + server.onNotFound(handleNotFound); + + server.begin(); + + Serial.print(F("HTTP WiFiWebServer is @ IP : ")); + Serial.print(localIP); + Serial.print(F(", port = ")); + Serial.println(LISTEN_PORT); + + Serial.print(F("Gateway Address: ")); + Serial.println(ETH.gatewayIP()); + Serial.print(F("Network Mask: ")); + Serial.println(ETH.subnetMask()); +} + +void loop(void) +{ + DDNSGeneric.update(555000); + + uPnP->updatePortMappings(600000); // 10 minutes + + server.handleClient(); +} diff --git a/library.json b/library.json index 3dbb0a22..dd8ece09 100644 --- a/library.json +++ b/library.json @@ -1,8 +1,8 @@ { "name": "UPnP_Generic", - "version": "3.2.0", - "description": "Automatically add port mappings to router using UPnP SSDP for Arduino boards, running on nRF52, SAMD21/SAMD51, STM32F/L/H/G/WB/MP1, Teensy, RP2040-based boards, etc. besides ESP8266/ESP32, using ESP WiFi, WiFiNINA, Ethernet W5x00, ESP8266/ESP32 AT-command WiFi", - "keywords": "uPnP, SSDP, router, port-mappings, port-forwarding, mbed, wifi, ethernet, wifinina, w5x00, communication, esp32, esp8266, samd, nrf52, stm32, nano-rp2040-connect, rp2040, rpi-pico, nano-33-iot", + "version": "3.3.0", + "description": "Automatically add port mappings to router using UPnP SSDP for Arduino boards, running on nRF52, SAMD21/SAMD51, STM32F/L/H/G/WB/MP1, Teensy, RP2040-based, WT32_ETH01 boards, etc. besides ESP8266/ESP32, using ESP WiFi, WiFiNINA, Ethernet W5x00, LAN8720, ESP8266/ESP32 AT-command WiFi", + "keywords": "uPnP, SSDP, router, port-mappings, port-forwarding, mbed, wifi, ethernet, wifinina, w5x00, communication, esp32, esp8266, samd, nrf52, stm32, nano-rp2040-connect, rp2040, wt32-eth01, rpi-pico, nano-33-iot", "authors": [ { @@ -29,7 +29,7 @@ { "owner": "khoih.prog", "name": "WiFiNINA_Generic", - "version": ">=1.8.10-1", + "version": ">=1.8.12", "platforms": ["*"] }, { @@ -42,7 +42,13 @@ "owner": "khoih-prog", "name": "EthernetWebServer_STM32", "version": ">=1.2.0", - "platforms": ["*"] + "platforms": ["ststm32", "stm32"] + }, + { + "owner": "khoih.prog", + "name": "WebServer_WT32_ETH01", + "version": ">=1.2.0", + "platforms": ["espressif32"] }, { "owner": "khoih-prog", @@ -59,7 +65,7 @@ { "owner": "khoih.prog", "name": "DDNS_Generic", - "version": ">=1.3.0", + "version": ">=1.4.0", "platforms": ["*"] } ], diff --git a/library.properties b/library.properties index fbe4e354..f1ba5cfd 100644 --- a/library.properties +++ b/library.properties @@ -1,12 +1,12 @@ name=UPnP_Generic -version=3.2.0 +version=3.3.0 author=Ofek Pearl, Khoi Hoang -license=MIT +license=GPLv3 maintainer=Khoi Hoang -sentence=Automatically add port mappings to router using UPnP SSDP for Arduino boards, running on nRF52, SAMD21/SAMD51, STM32F/L/H/G/WB/MP1, Teensy, RP2040-based boards, etc. besides ESP8266/ESP32, using ESP WiFi, WiFiNINA, Ethernet W5x00, ESP8266/ESP32 AT-command WiFi. -paragraph=A simple library that implements port mappings to router using UPnP SSDP for Arduino boards, running on nRF52, SAMD21/SAMD51, STM32F/L/H/G/WB/MP1, Teensy, RP2040-based boards, etc. besides ESP8266/ESP32, using ESP WiFi, WiFiNINA, Ethernet W5x00, ESP8266/ESP32 AT-command WiFi. It is designed to be light-weight and can run only on Ethernet or WiFi hardware/library supporting UDP Multicast. +sentence=Automatically add port mappings to router using UPnP SSDP for Arduino boards, running on nRF52, SAMD21/SAMD51, STM32F/L/H/G/WB/MP1, Teensy, RP2040-based boards, WT32_ETH01, etc. besides ESP8266/ESP32, using ESP WiFi, WiFiNINA, Ethernet W5x00, ESP8266/ESP32 AT-command WiFi. +paragraph=A simple library that implements port mappings to router using UPnP SSDP for Arduino boards, running on nRF52, SAMD21/SAMD51, STM32F/L/H/G/WB/MP1, Teensy, RP2040-based, WT32_ETH01 boards, etc. besides ESP8266/ESP32, using ESP WiFi, WiFiNINA, Ethernet W5x00, ESP8266/ESP32 AT-command WiFi. It is designed to be light-weight and can run only on Ethernet or WiFi hardware/library supporting UDP Multicast. category=Communication url=https://github.com/khoih-prog/UPnP_Generic architectures=* includes=UPnP_Generic.h -depends=WiFiNINA_Generic,EthernetWebServer,EthernetWebServer_STM32,WiFiWebServer,ESP8266_AT_WebServer,DDNS_Generic +depends=WiFiNINA_Generic,EthernetWebServer,EthernetWebServer_STM32,WiFiWebServer,ESP8266_AT_WebServer,DDNS_Generic,WebServer_WT32_ETH01 diff --git a/pics/WT32_ETH01.png b/pics/WT32_ETH01.png new file mode 100644 index 0000000000000000000000000000000000000000..6217a619f592a4a16b2921f1e534281d6d14e281 GIT binary patch literal 18940 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 literal 0 HcmV?d00001 diff --git a/platformio/platformio.ini b/platformio/platformio.ini index b7c9d2d6..4eb7965d 100644 --- a/platformio/platformio.ini +++ b/platformio/platformio.ini @@ -35,23 +35,25 @@ upload_speed = 921600 lib_deps = ; PlatformIO 4.x - WiFiNINA_Generic@>=1.8.10-1 + WiFiNINA_Generic@>=1.8.12 WiFiWebServer@>=1.2.0 EthernetWebServer@>1.5.0 EthernetWebServer_STM32@>=1.2.0 + WebServer_WT32_ETH01@>=1.2.0 ESP8266_AT_WebServer@>=1.3.0 - DDNS_Generic@>=1.3.0 + DDNS_Generic@>=1.4.0 Ethernet@>=2.0.0 EthernetLarge@>=2.0.0 Ethernet2@>=1.0.4 Ethernet3@>=1.5.5 ; PlatformIO 5.x -; khoih-prog/WiFiNINA_Generic@>=1.8.10-1 -; khoih-prog/WiFiWebServer@>=1.2.0 -; khoih-prog/EthernetWebServer@>=1.5.0 -; khoih-prog/EthernetWebServer_STM32@>=1.2.0 +; khoih.prog/WiFiNINA_Generic@>=1.8.12 +; khoih.prog/WiFiWebServer@>=1.2.0 +; khoih.prog/EthernetWebServer@>=1.5.0 +; khoih.prog/EthernetWebServer_STM32@>=1.2.0 +; khoih.prog/WebServer_WT32_ETH01@>=1.2.0 ; khoih-prog/ESP8266_AT_WebServer@>=1.3.0 -; khoih-prog/DDNS_Generic@>=1.3.0 +; khoih.prog/DDNS_Generic@>=1.4.0 ; PaulStoffregen/Ethernet@>=2.0.0 ; PaulStoffregen/EthernetLarge@>=2.0.0 ; adafruit/Ethernet2@>=1.0.4 @@ -110,7 +112,7 @@ board = nodemcuv2 [env:ESP32] platform = espressif32 -framework = arduino +framework = arduino, espidf ; ============================================================ ; Board configuration ; choose your board by uncommenting one of the following lines diff --git a/src/UPnP_Generic.h b/src/UPnP_Generic.h index d972fc35..0bcd6b76 100644 --- a/src/UPnP_Generic.h +++ b/src/UPnP_Generic.h @@ -1,7 +1,7 @@ /**************************************************************************************************************************** UPnP_Generic.h - For all Generic boards such as ESP8266, ESP32, SAMD21/SAMD51, nRF52, STM32F/L/H/G/WB/MP1,Teensy + For all Generic boards such as ESP8266, ESP32, WT32_ETH01, SAMD21/SAMD51, nRF52, STM32F/L/H/G/WB/MP1,Teensy with WiFiNINA, ESP8266/ESP32 WiFi, ESP8266/ESP32-AT, W5x00, ENC28J60, Native Ethernet shields DDNS_Generic is a library to automatically add port mappings to router using UPnP SSDP @@ -10,13 +10,14 @@ Based on and modified from Ofek Pearl's TinyUPnP Library (https://github.com/ofekp/TinyUPnP) Built by Khoi Hoang https://github.com/khoih-prog/UPnP_Generic Licensed under GPL-3.0 license - Version: 3.2.0 + Version: 3.3.0 Version Modified By Date Comments ------- ----------- ---------- ----------- 3.1.4 K Hoang 23/09/2020 Initial coding for Generic boards using many WiFi/Ethernet modules/shields. 3.1.5 K Hoang 28/09/2020 Fix issue with nRF52 and STM32F/L/H/G/WB/MP1 using ESP8266/ESP32-AT 3.2.0 K Hoang 11/06/2021 Add support to RP2040-based boards using ESP-AT, WiFiNINA, W5x00 / ENC28J60 + 3.3.0 K Hoang 16/07/2021 Add support to WT32_ETH01 (ESP32 + LAN8720) *****************************************************************************************************************************/ #ifndef UPnP_Generic_h @@ -24,11 +25,11 @@ #include "UPnP_Generic_Debug.h" -#define UPNP_GENERIC_VERSION "UPnP_Generic v3.2.0" +#define UPNP_GENERIC_VERSION "UPnP_Generic v3.3.0" #if UPNP_USING_ETHERNET #include "UPnP_Generic_Ethernet.h" -#elif (ESP8266 || ESP32 || UPNP_USING_WIFI) +#elif (ESP8266 || ESP32 || UPNP_USING_WIFI || UPNP_USING_WT32_ETH01) #include "UPnP_Generic_WiFi.h" #endif diff --git a/src/UPnP_Generic_Debug.h b/src/UPnP_Generic_Debug.h index c609445f..d606c1fa 100644 --- a/src/UPnP_Generic_Debug.h +++ b/src/UPnP_Generic_Debug.h @@ -1,7 +1,7 @@ /**************************************************************************************************************************** UPnP_Generic_Debug.h - For all Generic boards such as ESP8266, ESP32, SAMD21/SAMD51, nRF52, STM32F/L/H/G/WB/MP1,Teensy + For all Generic boards such as ESP8266, ESP32, WT32_ETH01, SAMD21/SAMD51, nRF52, STM32F/L/H/G/WB/MP1,Teensy with WiFiNINA, ESP8266/ESP32 WiFi, ESP8266/ESP32-AT, W5x00, ENC28J60, Native Ethernet shields DDNS_Generic is a library to automatically add port mappings to router using UPnP SSDP @@ -10,13 +10,14 @@ Based on and modified from Ofek Pearl's TinyUPnP Library (https://github.com/ofekp/TinyUPnP) Built by Khoi Hoang https://github.com/khoih-prog/UPnP_Generic Licensed under GPL-3.0 license - Version: 3.2.0 + Version: 3.3.0 Version Modified By Date Comments ------- ----------- ---------- ----------- 3.1.4 K Hoang 23/09/2020 Initial coding for Generic boards using many WiFi/Ethernet modules/shields. 3.1.5 K Hoang 28/09/2020 Fix issue with nRF52 and STM32F/L/H/G/WB/MP1 using ESP8266/ESP32-AT 3.2.0 K Hoang 11/06/2021 Add support to RP2040-based boards using ESP-AT, WiFiNINA, W5x00 / ENC28J60 + 3.3.0 K Hoang 16/07/2021 Add support to WT32_ETH01 (ESP32 + LAN8720) *****************************************************************************************************************************/ #ifndef UPnP_Generic_Debug_H diff --git a/src/UPnP_Generic_Ethernet.h b/src/UPnP_Generic_Ethernet.h index 7f56d671..55f41bb6 100644 --- a/src/UPnP_Generic_Ethernet.h +++ b/src/UPnP_Generic_Ethernet.h @@ -1,7 +1,7 @@ /**************************************************************************************************************************** UPnP_Generic_Ethernet.h - For all Generic boards such as ESP8266, ESP32, SAMD21/SAMD51, nRF52, STM32F/L/H/G/WB/MP1,Teensy + For all Generic boards such as ESP8266, ESP32, WT32_ETH01, SAMD21/SAMD51, nRF52, STM32F/L/H/G/WB/MP1,Teensy with WiFiNINA, ESP8266/ESP32 WiFi, ESP8266/ESP32-AT, W5x00, ENC28J60, Native Ethernet shields DDNS_Generic is a library to automatically add port mappings to router using UPnP SSDP @@ -10,13 +10,14 @@ Based on and modified from Ofek Pearl's TinyUPnP Library (https://github.com/ofekp/TinyUPnP) Built by Khoi Hoang https://github.com/khoih-prog/UPnP_Generic Licensed under GPL-3.0 license - Version: 3.2.0 + Version: 3.3.0 Version Modified By Date Comments ------- ----------- ---------- ----------- 3.1.4 K Hoang 23/09/2020 Initial coding for Generic boards using many WiFi/Ethernet modules/shields. 3.1.5 K Hoang 28/09/2020 Fix issue with nRF52 and STM32F/L/H/G/WB/MP1 using ESP8266/ESP32-AT 3.2.0 K Hoang 11/06/2021 Add support to RP2040-based boards using ESP-AT, WiFiNINA, W5x00 / ENC28J60 + 3.3.0 K Hoang 16/07/2021 Add support to WT32_ETH01 (ESP32 + LAN8720) *****************************************************************************************************************************/ #ifndef UPnP_Generic_Ethernet_h diff --git a/src/UPnP_Generic_Impl.h b/src/UPnP_Generic_Impl.h index bfdee95d..dcbe12bc 100644 --- a/src/UPnP_Generic_Impl.h +++ b/src/UPnP_Generic_Impl.h @@ -1,7 +1,7 @@ /**************************************************************************************************************************** UPnP_Generic_Impl.h - For all Generic boards such as ESP8266, ESP32, SAMD21/SAMD51, nRF52, STM32F/L/H/G/WB/MP1,Teensy + For all Generic boards such as ESP8266, ESP32, WT32_ETH01, SAMD21/SAMD51, nRF52, STM32F/L/H/G/WB/MP1,Teensy with WiFiNINA, ESP8266/ESP32 WiFi, ESP8266/ESP32-AT, W5x00, ENC28J60, Native Ethernet shields DDNS_Generic is a library to automatically add port mappings to router using UPnP SSDP @@ -10,13 +10,14 @@ Based on and modified from Ofek Pearl's TinyUPnP Library (https://github.com/ofekp/TinyUPnP) Built by Khoi Hoang https://github.com/khoih-prog/UPnP_Generic Licensed under GPL-3.0 license - Version: 3.2.0 + Version: 3.3.0 Version Modified By Date Comments ------- ----------- ---------- ----------- 3.1.4 K Hoang 23/09/2020 Initial coding for Generic boards using many WiFi/Ethernet modules/shields. 3.1.5 K Hoang 28/09/2020 Fix issue with nRF52 and STM32F/L/H/G/WB/MP1 using ESP8266/ESP32-AT 3.2.0 K Hoang 11/06/2021 Add support to RP2040-based boards using ESP-AT, WiFiNINA, W5x00 / ENC28J60 + 3.3.0 K Hoang 16/07/2021 Add support to WT32_ETH01 (ESP32 + LAN8720) *****************************************************************************************************************************/ #ifndef UPnP_Generic_Impl_h @@ -79,6 +80,8 @@ void UPnP::addPortMappingConfig(IPAddress ruleIP, int rulePort, String ruleProto #if UPNP_USING_ETHERNET newUpnpRule->internalAddr = (ruleIP == Ethernet.localIP()) ? ipNull : ruleIP; // for automatic IP change handling +#elif UPNP_USING_WT32_ETH01 + newUpnpRule->internalAddr = (ruleIP == ETH.localIP()) ? ipNull : ruleIP; // for automatic IP change handling #else newUpnpRule->internalAddr = (ruleIP == WiFi.localIP()) ? ipNull : ruleIP; // for automatic IP change handling #endif @@ -134,6 +137,14 @@ portMappingResult UPnP::commitPortMappings() return NETWORK_ERROR; } +#elif UPNP_USING_WT32_ETH01 + // verify ETH is connected + if (!testConnectivity(startTime)) + { + UPNP_LOGINFO(F("ERROR: not connected to Ethernet Network, can't continue")); + + return NETWORK_ERROR; + } #else // verify WiFi is connected if (!testConnectivity(startTime)) @@ -268,6 +279,8 @@ bool UPnP::getGatewayInfo(gatewayInfo *deviceInfo, long startTime) #if UPNP_USING_ETHERNET IPAddress gatewayIP = Ethernet.gatewayIP(); +#elif UPNP_USING_WT32_ETH01 + IPAddress gatewayIP = ETH.gatewayIP(); #else IPAddress gatewayIP = WiFi.gatewayIP(); #endif @@ -424,6 +437,31 @@ bool UPnP::testConnectivity(unsigned long startTime) #if UPNP_USING_ETHERNET + // Doing something here + +#elif UPNP_USING_WT32_ETH01 + + extern bool WT32_ETH01_eth_connected; + + UPNP_LOGINFO1(F("Testing WT32_ETH01 Ethernet connection for IP :"), ETH.localIP()); + + while (!WT32_ETH01_eth_connected) + { + if (_timeoutMs > 0 && startTime > 0 && (millis() - startTime > _timeoutMs)) + { + UPNP_LOGINFO(F(" ==> Timeout verify WT32_ETH01 Ethernet connection")); + + _UPnPClient.stop(); + return false; + } + + delay(200); + + UPNP_LOGINFO0("."); + } + + UPNP_LOGINFO0(" ==> GOOD\n"); + #else UPNP_LOGINFO1(F("Testing WiFi connection for IP :"), WiFi.localIP()); @@ -504,17 +542,24 @@ bool UPnP::verifyPortMapping(gatewayInfo *deviceInfo, upnpRule *rule_ptr) if (line.indexOf(F("NewInternalClient")) >= 0) { String content = getTagContent(line, F("NewInternalClient")); - + + UPNP_LOGDEBUG1(F("verifyPortMapping: content ="), content); + UPNP_LOGDEBUG1(F("verifyPortMapping: NewInternalClient in line ="), line); + if (content.length() > 0) { #if UPNP_USING_ETHERNET IPAddress ipAddressToVerify = (rule_ptr->internalAddr == ipNull) ? Ethernet.localIP() : rule_ptr->internalAddr; +#elif UPNP_USING_WT32_ETH01 + IPAddress ipAddressToVerify = (rule_ptr->internalAddr == ipNull) ? ETH.localIP() : rule_ptr->internalAddr; #else IPAddress ipAddressToVerify = (rule_ptr->internalAddr == ipNull) ? WiFi.localIP() : rule_ptr->internalAddr; #endif - + UPNP_LOGDEBUG1(F("ipAddressToVerify ="), ipAddressToVerify); + + // KH, to verify #if (ESP32 || ESP8266) if (content == ipAddressToVerify.toString()) @@ -530,6 +575,10 @@ bool UPnP::verifyPortMapping(gatewayInfo *deviceInfo, upnpRule *rule_ptr) } } } + else + { + UPNP_LOGDEBUG1(F("verifyPortMapping: no NewInternalClient in line ="), line); + } } UPNP_LOGDEBUG0("\n"); @@ -621,7 +670,7 @@ bool UPnP::applyActionOnSpecificPortMapping(SOAPAction *soapAction, gatewayInfo // KH, Somehow nRF52 and STM32 WiFi (ESP8266/ESP32-AT and WiFiNINA) don't behave well with FlashString // Disable for nRF52 and STM32 WiFi now. -#if ( (ESP8266 || ESP32) || (UPNP_USING_ETHERNET && !UPNP_USING_NATIVE_ETHERNET) ) +#if ( (ESP8266 || ESP32) || (UPNP_USING_ETHERNET && !UPNP_USING_NATIVE_ETHERNET) || UPNP_USING_WT32_ETH01 ) strcpy_P(body_tmp, PSTR("\r\n\r\n\r\nname); @@ -770,7 +819,12 @@ bool UPnP::connectUDP() return true; } #endif - + +#elif UPNP_USING_WT32_ETH01 + if (_udpClient.beginMulticast(ipMulti, UPNP_SSDP_PORT)) + { + return true; + } #else #if defined(ESP8266) @@ -1194,7 +1248,7 @@ bool UPnP::addPortMappingEntry(gatewayInfo *deviceInfo, upnpRule *rule_ptr) // KH, Somehow nRF52 and STM32 WiFi (ESP8266/ESP32-AT and WiFiNINA) don't behave well with FlashString // Disable for nRF52 and STM32 WiFi now. -#if ( (ESP8266 || ESP32) || (UPNP_USING_ETHERNET && !UPNP_USING_NATIVE_ETHERNET) ) +#if ( (ESP8266 || ESP32) || (UPNP_USING_ETHERNET && !UPNP_USING_NATIVE_ETHERNET) || UPNP_USING_WT32_ETH01 ) strcpy_P(body_tmp, PSTR("serviceTypeName.c_str()); @@ -1210,6 +1264,8 @@ bool UPnP::addPortMappingEntry(gatewayInfo *deviceInfo, upnpRule *rule_ptr) #if UPNP_USING_ETHERNET IPAddress ipAddress = (rule_ptr->internalAddr == ipNull) ? Ethernet.localIP() : rule_ptr->internalAddr; +#elif UPNP_USING_WT32_ETH01 + IPAddress ipAddress = (rule_ptr->internalAddr == ipNull) ? ETH.localIP() : rule_ptr->internalAddr; #else IPAddress ipAddress = (rule_ptr->internalAddr == ipNull) ? WiFi.localIP() : rule_ptr->internalAddr; #endif @@ -1392,7 +1448,7 @@ bool UPnP::printAllPortMappings() } } - UPNP_LOGINFO1(F("Sending query for index :"), index); + UPNP_LOGDEBUG1(F("Sending query for index :"), index); // KH, Somehow nRF52 and STM32 WiFi (ESP8266/ESP32-AT and WiFiNINA) don't behave well with FlashString // Disable for nRF52 and STM32 WiFi now. @@ -1424,10 +1480,10 @@ bool UPnP::printAllPortMappings() // KH, to verify #if (ESP32 || ESP8266) _UPnPClient.println("Host: " + _gwInfo.host.toString() + ":" + String(_gwInfo.actionPort)); - UPNP_LOGINFO("Host: " + _gwInfo.host.toString() + ":" + String(_gwInfo.actionPort)); + UPNP_LOGDEBUG3(F("Host: "), _gwInfo.host, F(":"), _gwInfo.actionPort); #else _UPnPClient.println("Host: " + String(_gwInfo.host) + ":" + String(_gwInfo.actionPort)); - UPNP_LOGINFO("Host: " + IPAddresstoString(_gwInfo.host) + ":" + String(_gwInfo.actionPort)); + UPNP_LOGDEBUG3(F("Host: "), _gwInfo.host, F(":"), _gwInfo.actionPort); #endif _UPnPClient.print(F("SOAPAction: \"")); @@ -1607,6 +1663,8 @@ void UPnP::upnpRuleToString(upnpRule *rule_ptr) #if UPNP_USING_ETHERNET IPAddress ipAddress = (rule_ptr->internalAddr == ipNull) ? Ethernet.localIP() : rule_ptr->internalAddr; +#elif UPNP_USING_WT32_ETH01 + IPAddress ipAddress = (rule_ptr->internalAddr == ipNull) ? ETH.localIP() : rule_ptr->internalAddr; #else IPAddress ipAddress = (rule_ptr->internalAddr == ipNull) ? WiFi.localIP() : rule_ptr->internalAddr; #endif diff --git a/src/UPnP_Generic_WiFi.h b/src/UPnP_Generic_WiFi.h index 5fb46c47..1897dac0 100644 --- a/src/UPnP_Generic_WiFi.h +++ b/src/UPnP_Generic_WiFi.h @@ -1,7 +1,7 @@ /**************************************************************************************************************************** UPnP_Generic_WiFi.h - For all Generic boards such as ESP8266, ESP32, SAMD21/SAMD51, nRF52, STM32F/L/H/G/WB/MP1,Teensy + For all Generic boards such as ESP8266, ESP32, WT32_ETH01, SAMD21/SAMD51, nRF52, STM32F/L/H/G/WB/MP1,Teensy with WiFiNINA, ESP8266/ESP32 WiFi, ESP8266/ESP32-AT, W5x00, ENC28J60, Native Ethernet shields DDNS_Generic is a library to automatically add port mappings to router using UPnP SSDP @@ -10,13 +10,14 @@ Based on and modified from Ofek Pearl's TinyUPnP Library (https://github.com/ofekp/TinyUPnP) Built by Khoi Hoang https://github.com/khoih-prog/UPnP_Generic Licensed under GPL-3.0 license - Version: 3.2.0 + Version: 3.3.0 Version Modified By Date Comments ------- ----------- ---------- ----------- 3.1.4 K Hoang 23/09/2020 Initial coding for Generic boards using many WiFi/Ethernet modules/shields. 3.1.5 K Hoang 28/09/2020 Fix issue with nRF52 and STM32F/L/H/G/WB/MP1 using ESP8266/ESP32-AT 3.2.0 K Hoang 11/06/2021 Add support to RP2040-based boards using ESP-AT, WiFiNINA, W5x00 / ENC28J60 + 3.3.0 K Hoang 16/07/2021 Add support to WT32_ETH01 (ESP32 + LAN8720) *****************************************************************************************************************************/ #ifndef UPnP_Generic_WiFi_h