Dynamic DDNS Update Library (DDNS_Generic)

DDNS_Generic Library

arduino-library-badgeGitHub releaseGitHubcontributions welcomeGitHub issues



Why do we need this DDNS_Generic library

Many of us are using Dynamic DNS service because Dynamic IP addresses is much cheaper than the expensive static IP address.

Dynamic IP addresses present a problem if we wants to provide a service to other users on the Internet, such as a web service, Blynk Local Server, etc. As the IP address may change frequently (due to power outtage/surge, power on/off, DSL/Fiber issues, etc.), the corresponding domain names must be quickly re-mapped in the DNS, to maintain accessibility using a well-known URL.

Many providers offer commercial or free Dynamic DNS service for this scenario. The automatic reconfiguration is generally implemented in the user’s router or computer, which runs software to update the DDNS service. The communication between the user’s equipment and the provider is not standardized, although a few standard web-based methods of updating have emerged over time.

This Library is created to automatically update your DDNS Domains with the latest dynamic IP address, using one of the many available boards / shields. See Currently Supported Boards.

The time between checks to update the DDNS Service is configurable to match your use case, and is set in the examples at 10 minutes.

The DDNS_Generic code is very short, can be immersed in your Projects and to be called in the loop() code.

It currently supports DuckDNS, No-ip, DynDNS, Dynu, enom, all-inkl, selfhost.de, dyndns.it, strato, freemyip, afraid.org. Expansion to support more DDNS sevice providers is very easy and can be done by yourself.

This DDNS_Generic library is based on and modified from Ayush Sharma’s EasyDDNS Library to add support to many boards and shields besides ESP32 and ESP8266.


Releases v1.0.0

  1. Initial coding for Generic boards using many different WiFi/Ethernet modules/shields.
  2. Add more examples

Currently Supported Boards

  • ESP8266
  • ESP32
  • AdaFruit Feather nRF52832, nRF52840 Express, BlueFruit Sense, Itsy-Bitsy nRF52840 Express, Metro nRF52840 Express, NINA_B302_ublox, NINA_B112_ublox etc..
  • Arduino SAMD21 (ZERO, MKR, NANO_33_IOT, etc.).
  • Adafruit SAM21 (Itsy-Bitsy M0, Metro M0, Feather M0, Gemma M0, etc.).
  • Adafruit SAM51 (Itsy-Bitsy M4, Metro M4, Grand Central M4, Feather M4 Express, etc.).
  • Seeeduino SAMD21/SAMD51 boards (SEEED_WIO_TERMINAL, SEEED_FEMTO_M0, SEEED_XIAO_M0, Wio_Lite_MG126, WIO_GPS_BOARD, SEEEDUINO_ZERO, SEEEDUINO_LORAWAN, SEEED_GROVE_UI_WIRELESS, etc.)
  • STM32 (Nucleo-144, Nucleo-64, Nucleo-32, Discovery, STM32F1, STM32F3, STM32F4, STM32H7, STM32L0, etc.).
  • SAM DUE
  • STM32F/L/H/G/WB/MP1 (Nucleo-64 L053R8,Nucleo-144, Nucleo-64, Nucleo-32, Discovery, STM32Fx, STM32H7, STM32Lx, STM32Gx, STM32WB, STM32MP1, etc.) having 64K+ Flash program memory.

Currently Supported WiFi Modules/Shields

  • ESP8266 built-in WiFi
  • ESP32 built-in WiFi
  • WiFiNINA using WiFiNINA or WiFiNINA_Generic library.
  • ESP8266-AT, ESP32-AT WiFi shields using WiFiEspAT or ESP8266_AT_WebServer library.

Currently Supported Ethernet Modules/Shields

  • W5x00’s using Ethernet, EthernetLarge, Ethernet2 or Ethernet3 Library.
  • ENC28J60 using new EthernetENC library and UIPEthernet library
  • LAN8742A using STM32duino LwIP,STM32duino STM32Ethernet libraries
1 Like