How to update IP with Arduino using service like DynDns

Hi guys, I just wanted to share how I managed to update my Dynamic Dns with service using my Arduino.

First i have to retreive my Pubblic IP Address using this code. You will need a Global string variable to store your current ip (in this case it’s called lastip) :

void send_ip()        //client function to send/receive GET request data. Check IP dal sito

  if (client.connect(serverName, 80)) {                      //starts client connection, checks for connection
    client.println(F("GET /api/p/realip.php HTTP/1.1"));     //download text
    client.println(F("Connection: close"));                  //close 1.1 persistent connection  
    client.println();                                        //end of get request
  else {
    //Serial.println("connection failed");                     //error message if no client connect

  while(client.connected() && !client.available()) delay(1);  //waits for data
  while (client.connected() || client.available()) {          //connected or data available
    char c =;                                   //gets byte from ethernet buffer
    readString += c;                                          //places captured byte in readString

  client.stop();                                                //stop client
  int primaricerca = readString.indexOf('{');                   //inserisce in variabile la posizione della prima parentesi graffa all'interno della quale c'è l'IP
  int lastStringLength = readString.length();                   //assegna alla variabile lastSringlength la lunghezza della stringa letta contenente l'IP
  readString.remove(0, primaricerca+7);                         //rimuove tutto quello che c'è dall'inizio della stringa fino alla prima parentesi graffa + 7 caratteri per arrivare all'ip
  lastStringLength = readString.length();                       //rilegge la lunghezza della stringa ora che abbiamo rimosso parte delle cose inutili
  readString.remove(lastStringLength-2, lastStringLength);      //rimuove tutto il resto partendo dalla fine -2 verso la fine in modo da ottenere solo l'IP
  String ipattuale = readString;                                //memorizza il valore dell'ip nella variabile ipattuale per un futuro confronto
  Serial.println(readString);                                   //stampa sul monitor seriale l'IP

 if (lastip != ipattuale )                                      // se lastip è diverso da ipattuale allora dobbiamo inviare il tweet
        lastip = ipattuale;

  readString="";             //svuota la variabile readString 
  ipattuale="";              //svuota la variabile ipattuale 

The following is the code (called from the above code) you need for updating your hostname.

void update_dtdns()  //aggiorna il mio dtdns
    client.connect("", 80) ;                    
    client.print(F("POST /api/autodns.cfm?"));   

Hope it’s useful for someone! :slight_smile: