Offline
Newbie
Karma: 0
Posts: 13
|
 |
« on: September 06, 2012, 08:21:54 pm » |
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?
|
|
|
|
|
Logged
|
|
|
|
|
Genova
Offline
Edison Member
Karma: 14
Posts: 2451
|
 |
« Reply #1 on: September 07, 2012, 03:11:02 am » |
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. #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.zipciao
|
|
|
|
« Last Edit: September 07, 2012, 03:30:23 am by pablos »
|
Logged
|
Meglio imparare dalle cose inutili piuttosto che non imparare niente. [Arduino Mega R3 + Ethernet shield W5100 + SD card 8Gb FAT32]
|
|
|
|
Offline
Newbie
Karma: 0
Posts: 13
|
 |
« Reply #2 on: September 10, 2012, 03:58:04 pm » |
ok per la verifica della connessione.... ma per sapere il mio ip (della connessione internet, non dell'rduino)? nessun suggerimento?
|
|
|
|
|
Logged
|
|
|
|
|
0
Offline
Tesla Member
Karma: 83
Posts: 8242
:(){:|:&};:
|
 |
« Reply #3 on: September 11, 2012, 03:00:39 am » |
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
|
|
|
|
|
Logged
|
|
|
|
|
|
|
0
Offline
Tesla Member
Karma: 83
Posts: 8242
:(){:|:&};:
|
 |
« Reply #5 on: September 11, 2012, 04:08:28 am » |
?? mica vuole avere un dominio dns, vuole solo conoscere il proprio IP pubblico
|
|
|
|
|
Logged
|
|
|
|
|
Genova
Offline
Edison Member
Karma: 14
Posts: 2451
|
 |
« Reply #6 on: September 11, 2012, 04:21:20 am » |
E come lo conosci l'ip del modem adsl di casa tua quando sei fuori casa se l'ip cambia a ogni ritorno di tensione. Tutti gli apparati che sono connessi in rete .. Ipcam, DVR videosorveglianza, centrali telefoniche, antintrusione, router ecc hanno nelle opzioni la voce DynDNS. Quando tu dall'esterno vuoi connetterti al tuo arduino o qualsiasi altro apparato, chiami il server dyndns al tuo account, lui ti restituisce l'ip e basta la connessione poi è diretta i dati non passano dal server dyndns, sei semplicemente reindirizzato.
|
|
|
|
« Last Edit: September 11, 2012, 04:29:32 am by pablos »
|
Logged
|
Meglio imparare dalle cose inutili piuttosto che non imparare niente. [Arduino Mega R3 + Ethernet shield W5100 + SD card 8Gb FAT32]
|
|
|
|
0
Offline
Tesla Member
Karma: 83
Posts: 8242
:(){:|:&};:
|
 |
« Reply #7 on: September 11, 2012, 04:35:51 am » |
è solo una complicazione inutile passare da dyndns, hai già tutto quello che ti serve è già nella e-mail! del tipo che quando cade la connessione Arduino mi manda una mail (ovviamente nel momento in cui la connessione è nuovamente disponibile) Che poi cosa facciano altre cose è un altro affare, ognuno ha le sue richieste.
|
|
|
|
|
Logged
|
|
|
|
|
Genova
Offline
Edison Member
Karma: 14
Posts: 2451
|
 |
« Reply #8 on: September 11, 2012, 05:07:51 am » |
Va bene, l'uso del ddns è quello che normalmente si fa senza scrivere programmi, comunque tralasciando la mia soluzione contestata come sempre, tu proponi di fare una richiesta al sito mioip, ma non gli hai dato nessuna strada da seguire.
Non so magari dirgli: fai una richiesta UDP, http, al 113 .... fai poi un parse del pacchetto di risposta, un link dove prendere spunto, digli qualcosa di più.
|
|
|
|
|
Logged
|
Meglio imparare dalle cose inutili piuttosto che non imparare niente. [Arduino Mega R3 + Ethernet shield W5100 + SD card 8Gb FAT32]
|
|
|
|
Firenze
Offline
Jr. Member
Karma: 1
Posts: 65
|
 |
« Reply #9 on: September 11, 2012, 05:18:53 am » |
come dice lesto, interrogando un server esterno (richiesta http) e poi elaborando la risposta sotto forma di testo otttenendo la info cercata. Consiglio http://checkip.dyndns.org/ che restituisce qualcosa come <html><head><title>Current IP Check</title></head><body>Current IP Address: XXX.XXX.XXX.XXX</body></html> facile da parsare 
|
|
|
|
|
Logged
|
"Cosi non si va avanti..." disse il gambero
|
|
|
|
0
Offline
Tesla Member
Karma: 83
Posts: 8242
:(){:|:&};:
|
 |
« Reply #10 on: September 11, 2012, 05:38:41 am » |
Va bene, l'uso del ddns è quello che normalmente si fa senza scrivere programmi
come senza scrivere programmi? e come fai a dire a dydns che deve aggiornare l'ip legato al tuo dominio?  Non so magari dirgli: fai una richiesta UDP, http, al 113 .... fai poi un parse del pacchetto di risposta, un link dove prendere spunto, digli qualcosa di più. è un sito web, quindi ci si comporta come qualsiasi altro sito web. consiglio però quello dato da amacbr, pichè quello dato da me conteine un sacco di "sporcizia" data dall'html/script delle pubblicità
|
|
|
|
|
Logged
|
|
|
|
|
Genova
Offline
Edison Member
Karma: 14
Posts: 2451
|
 |
« Reply #11 on: September 11, 2012, 06:49:35 am » |
Mi sa che parliamo 2 lingue diverse
|
|
|
|
|
Logged
|
Meglio imparare dalle cose inutili piuttosto che non imparare niente. [Arduino Mega R3 + Ethernet shield W5100 + SD card 8Gb FAT32]
|
|
|
|
Genova
Offline
Edison Member
Karma: 14
Posts: 2451
|
 |
« Reply #12 on: September 11, 2012, 06:56:11 am » |
Allora: io attivo il mio modem o router di casa il servizio DDNS, dico al router manda a questo account sul server ogni x tempo il mio ip (deve solo tenere 4 byte) Ora dal mio smartfhone, pc dello zio a 6000 km di distanza loggo su ddns.org e automaticamente vengo reindirizzato su arduino che ho su un altro stato del mondo, la stringa usata nel browser viene ricompilata con l'IP del mio arduino. Che software devo fare...
|
|
|
|
|
Logged
|
Meglio imparare dalle cose inutili piuttosto che non imparare niente. [Arduino Mega R3 + Ethernet shield W5100 + SD card 8Gb FAT32]
|
|
|
|
0
Offline
Tesla Member
Karma: 83
Posts: 8242
:(){:|:&};:
|
 |
« Reply #13 on: September 11, 2012, 07:05:56 am » |
ah ok, se hai ddns sel router non devi far nulla, mea culpa
|
|
|
|
|
Logged
|
|
|
|
|
|