Prerequisiti

Prima di procedere con la configurazione è necessario:

CONFIGURAZIONE
CONNESSIONE .IT NATIVA
Abbonamento consigliato
Standard dynDNS.it

Configurazione rapida

Dopo aver creato una connessione .it nativa prendere nota del nome host creato completo di dominio, del nome utente e della password utilizzate per accedere al sito dynDNS.it. A questo punto è possibile configurare la propria scheda Arduino utilizzando i dati necessari alla configurazione.

I dati necessari alla configurazione saranno, ad esempio:

Fornitore del servizio

dyndns.it

Nome Host

myhost.homepc.it

dynDNS.it Username

myusername (usata per accedere a dynDNS.it)

dynDNS.it Password

mypassword (usata per accedere a dynDNS.it)

Configurazione guidata

Per configurare un dispositivo Arduino e aggiornare l’hostname si consiglia di utilizzare il seguente script.

/* DynDNS



 created 2011
 by Boris Landoni



 Modified 2015
 Impulso srl



 This example code is in the public domain.



 */



//http://username:password@update.dyndns.it/nic/update?hostname=yourhostname&myip=ipaddress



#include <Ethernet.h>
//#include <EthernetDNS.h>
#include <WString.h>
#include <EEPROM.h>



#define UPDATE_INTERVAL            30000    // if the connection is good wait 30 seconds before updating again - should not be less than 5



int ledR =  8;
int ledG =  9;



unsigned long pubblica=0;



byte mac[] = { 0x54,0x55,0x58,0x10,0x00,0x24 };
byte ip[] = { 192, 168, 0, 98 };



byte domainaddrip[]= { 208, 78, 70, 70 }; //http://checkip.dyndns.com/
byte ipAddr[4];



byte domaindydns[]= { 81, 29, 198, 108 };
char hostname[ ]   = "xxxxxxx.homepc.it";
char userpwdb64[ ] = "xxxxxxxxxxxxxxxxxx";  //http://www.functions-online.com/base64_encode.html    use->   username:password



String ipadsl     = String(20);
String ipadslold  = String(20);
String inString   = String(51);



//Client client(server, 80);
const char* ip_to_str(const uint8_t*);
//void nameFound(const char* name, const byte ipAddr[4]);



Client client(domainaddrip, 80);
Client clientdyn(domaindydns, 80);



void setup()
{
  pinMode(ledR, OUTPUT);
  pinMode(ledG, OUTPUT);
  Ethernet.begin(mac, ip);



  //EthernetDNS.setDNSServer(dnsServerIp);
  Serial.begin(9600);



  Serial.println("*****************************************Start***************************************************");
  delay(1000);



  //risolviip();
  //delay(1000);
}



void loop()
{



  if (millis() < pubblica) pubblica = millis(); if ((millis() - pubblica) > UPDATE_INTERVAL){
          //Serial.print("Passati ");
          //Serial.print(UPDATE_INTERVAL);
          //Serial.println(" ms");
          Serial.print("tempo trascorso dall'accensione ");
          Serial.println(millis());
          Serial.println(pubblica);
          pubblica = millis();  



          acquisisciip();
      }



}



void acquisisciip()
{



  int timeout=0;
  int skip=0;
  ipadsl="";
  inString="";
  digitalWrite(ledG, HIGH);



  Serial.print("connecting to ");
  //Serial.print(domain);
  //Serial.print(" = ip ");
  //Serial.println(ip_to_str(domainaddrip));



  if (client.connect()) {



    Serial.println("connected");
    client.println("GET / HTTP/1.0");
    //client.println("GET / HTTP/1.0");
    client.print("HOST: ");
    client.println("www.dyndns.it");
    //client.println(ip_to_str(domainaddrip));
    client.println();
  } else {
    Serial.println("connection failed");
  }



  while (!client.available() && timeout<50) { timeout++; Serial.print("Time out "); Serial.println(timeout); delay(100); } while (client.available()) { //Serial.println("client.available"); //if (client.available()) //{ char c = client.read(); //Serial.print(c); skip++; if (skip>220)
        {
          if ((inString.length())<50) inString.append(c); } //} } client.flush(); if ((inString.length())>5)
      {
          //Serial.print("inString: ");
          //Serial.println(inString);
          if (inString.contains("Address"))
            {
              int from=(inString.indexOf("Address")+9);
              int lunghe=inString.length();
              int to=(lunghe-16);
              /*Serial.print("Lunghezza instring    = ");
              Serial.println(lunghe);
              Serial.print("Posizione address + 9 = ");
              Serial.println(from);
              Serial.print("Posizione fine   - 16 = ");
              Serial.println(to);
              */
              //strcpy(ipadsl,(inString.substring((inString.indexOf("Address")+9),(inString.length()-16))));
              ipadsl=inString.substring(from,to);
              //Serial.print("Lunghezza ipadsl      = ");
              //Serial.println(ipadsl.length());
              Serial.print("IP rilevato dal sito: >");
              Serial.print(ipadsl);
              Serial.println("<"); } } if (!client.connected()) { Serial.println("disconnecting."); client.stop(); delay (1000); Serial.print("lunghezza IP "); //Serial.println(strlen(ipadsl)); Serial.println(ipadsl.length()); if ((strlen(ipadsl))!=0) { Serial.print("IP nuovo : >");
              Serial.print(ipadsl);
              Serial.println("<");



              for (int i=0; i<(ipadsl.length()); i++) { //salva in memoria l'indirizzo acquisito ipadslold[i] = EEPROM.read(i); //Serial.print("carattere : >");
                //Serial.print(ipadslold[i]);
                //Serial.println("<"); } Serial.print("IP vecchio: >");
              Serial.print(ipadslold);
              Serial.println("<"); if (strcmp(ipadsl,ipadslold)) { Serial.println("IP diverso PUBBLICO"); digitalWrite(ledR, HIGH); pubblicaip(); digitalWrite(ledR, LOW); } else { Serial.println("IP uguale"); } digitalWrite(ledG, LOW); //ipadslold=""; //ipadslold.append(ipadsl); //ipadslold=""; //Serial.print("IP vecchio azzerato: >");
              //Serial.print(ipadslold);
              //Serial.println("<");
              //strcpy(ipadslold,ipadsl);
              for (int i=0; i<(ipadsl.length()); i++) {    //salva in memoria l'indirizzo acquisito
                EEPROM.write(i, ipadsl[i]);
              } 



        }



   }



}



void pubblicaip()
{
  int timeout=0;
  Serial.print("connecting to ");
  Serial.println(ip_to_str(domaindydns));



  Serial.print("IP da pubblicare ");
  Serial.println(ipadsl);  



if (clientdyn.connect()) {
    Serial.println("connected");
    clientdyn.print("GET /nic/update?hostname=");
    clientdyn.print(hostname);
    clientdyn.print("&myip=");
    clientdyn.print(ipadsl);
    clientdyn.println(" HTTP/1.0 ");
    //clientdyn.println("Host: update.dyndns.it ");



    clientdyn.print("Host: ");
    clientdyn.println(ip_to_str(domaindydns));



    clientdyn.print("Authorization: Basic ");
    clientdyn.println(userpwdb64);



    clientdyn.println("User-Agent: impulso - arduinodydns - 1.2");
    clientdyn.println();
  } else {
    Serial.println("connection failed");
  }



 //   delay(3000);



  while (!clientdyn.available() && timeout<50)
  {
    timeout++;
    Serial.print("Time out ");
    Serial.println(timeout);
    delay(100);
  }



  while (clientdyn.available())
  {
      if (clientdyn.available())
      {
        char c = clientdyn.read();
        Serial.print(c);
      }
  }



  if (!clientdyn.connected())
  {
        Serial.println();
        Serial.println("disconnecting.");
        clientdyn.stop();
  }



}



// This is just a little utility function to format an IP address as a string.
const char* ip_to_str(const uint8_t* ipAddr)
{
  static char buf[16];
  sprintf(buf, "%d.%d.%d.%d\0", ipAddr[0], ipAddr[1], ipAddr[2], ipAddr[3]);
  return buf;
}

Tutti i marchi e le immagini sono dei rispettivi proprietari che ne detengono tutti i diritti per legge.

Prerequisiti

Prima di procedere con la configurazione è necessario:

CONFIGURAZIONE
CONNESSIONE .IT NATIVA
Abbonamento consigliato
Standard dynDNS.it
Prossimi Step
  • Configura il Port Forwarding per instradare la connessione al dispositivo che desideri raggiungere;
  • Accedi alla Gestione Host per visualizzare il primo aggiornamento ricevuto.
Problemi con la configurazione?

Invia un’email al servizio di supporto.

Contattaci

dynDNS.it - DNS dinamico gratuito