Hi guys, I just wanted to share how I managed to update my Dynamic Dns with DtDns.net 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 www.realip.info
{
if (client.connect(serverName, 80)) { //starts client connection, checks for connection
//Serial.println("connected");
client.println(F("GET /api/p/realip.php HTTP/1.1")); //download text
client.println(F("Host: www.realip.info"));
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
//Serial.println();
}
while(client.connected() && !client.available()) delay(1); //waits for data
while (client.connected() || client.available()) { //connected or data available
char c = client.read(); //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="";
lastip = ipattuale;
update_dtdns();
}
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 DtDns.net hostname.
void update_dtdns() //aggiorna il mio dtdns
{
client.connect("www.dtdns.com", 80) ;
client.print(F("POST /api/autodns.cfm?id=yourdnsname.dtdns.net&pw=yourpassword&ip="));
client.println(lastip);
client.println();
client.stop();
}
Hope it's useful for someone!