Go Down

Topic: verifica della presenza della connessione internet (verifica IP?) (Read 1 time) previous topic - next topic

chiodoxxx

ciao
ho un arduino+shield ethernet

siccome a casa mia cade spesso la linea adsl, vorrei usare arduino per un "monitoraggio": del tipo che quando cade la connessione Arduino mi manda una mail (ovviamente nel momento in cui la connessione è nuovamente disponibile)

ho pensato ad un piccolo programma, partendo dallo sketch esempio webclient.
mi chiedevo però: posso con arduino rilevare qual'è l'indirizzo IP della connessione internet?

pablos

#1
Sep 07, 2012, 10:11 am Last Edit: Sep 07, 2012, 10:30 am by pablos Reason: 1
Fai un ping su un server esterno a tua scelta, e verifichi se c'è una connessione internet attiva
in questo caso ho messo un IP NTP server visto che uso swRTC.h, l'ip corrisponde a questo sito http://www.inrim.it/ntp/index_i.shtml, se però vuoi metterne un altro l'ip lo trovi facendo CMD > ping www.sito.it ..com etc
Puoi come seconda opzione, nel caso non rispondesse internet, pingare il tuo gateway verifichi se almeno la tua connessione interna funziona correttamente, non è escluso che si sia piantata la ethernet.

Code: [Select]

#include <SPI.h>        
#include <Ethernet.h>
#include <ICMPPing.h>

byte mac[] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED}; // max address for ethernet shield
byte ip[] = {192,168,2,177}; // ip address for ethernet shield
byte pingAddr[] = {193, 204, 114, 232}; // ip address to ping
SOCKET pingSocket = 0;

char buffer [256];

void setup()
{
 Ethernet.begin(mac, ip);
 delay (1000);
 Serial.begin(9600);
 ICMPPing ping(pingSocket);
 ping(4, pingAddr, buffer);
 Serial.println(buffer); //debug
 String ping_out = String (buffer);
 
 if (ping_out.indexOf("TTL=") > 0)  
    Serial.println("Verifica Ethernet: Ping server esterno ... Status >> OK");  //debug      
 else    
    Serial.println("Verifica Ethernet: Ping Ping server esterno ... Status >> ERROR"); //debug
}

void loop(){}


libreria http://www.blake-foster.com/projects/ICMPPing.zip

ciao

no comment

chiodoxxx

ok per la verifica della connessione....
ma per sapere il mio ip (della connessione internet, non dell'rduino)? nessun suggerimento?

lesto

il tuo ip esterno, se passi da un router che fa da nat, lo puoi sapere solo interrogando un server esterno e parsando la risposta, per esempio www.mioip.it
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

pablos


Ti serve un servizio ddns, un router che supporti questo servizio, un account visto che sarà lui a spedire ogni ora il tuo ip dinamico al server.
http://www.computerspeedy.it/blog/index.php/2012/02/20/dyndns-free-non-piu-attivabilemacche-ecco-la-soluzione/
no comment

Go Up