Ciao a tutti,
ho realizzato un grandissimo sketch che sfrutta Arduino e modulo Ethernet.
Localmente non ho problemi ad accedere via rete al mio arduino e pilotarne le varie funzioni programmate.
Da remoto purtroppo non riesco perchè il mio ip è dinamico. Non ho la possibilità di automatizzare con un DynDns.
Voglio realizzare una soluzione nella quale sia l'arduino a rilevare l'ip pubblico della mia connessione e inviarmelo tramite un tweet di tweeter in modo tale che se l'ip della mia connessione cambia io posso sempre e comunque collegarmi.
L'invio tramite tweet già è funzionante e posso inviare qualunque cosa.
Mi manca la funzione che reperisce l'ip pubblico, la mette in una stringa che poi io invio come tweet.
Ho trovato IPIFY per Arduino ma pur mostrandomi l'IP nel monitor seriale (in quanto lo compone a pezzi) non capisco come ottenerlo per intero in una variabile.
Il codice che produce l'ip pubblico è il seguente :
void sendGET() //client function to send/receive GET request data.
{
EthernetClient client;
if (millis() - lastIPAttemptTime > requestIPInterval) // se sono passati almeno x minuti dall'ultimo accesso lettura IP
{
lastIPAttemptTime = millis(); // note the time of this connect attempt:
if (client.connect(serverIPIFY, 80)) { //starts client connection, checks for connection
//Serial.println("connected");
client.println("GET / HTTP/1.0"); //download text
client.println("Host: api.ipify.org");
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
Serial.print(c); //prints byte to serial monitor
}
//Serial.println();
//Serial.println("disconnecting.");
//Serial.println("==================");
//Serial.println();
client.stop(); //stop client
}
}
Come faccio ad inserire l'IP intero in una variabile ?
Una volta risolto questo problema potrò creare la funzione che controlla ogni tot se l'ip precedentemente letto è variato ed in caso affermativo lo invia come tweet.
Ho quindi bisogno che ci sia una stringa chiamata ip_rilevato ed una chiamata ip_ultima_lettura
in modo tale da poterli confrontare e se diversi inviare ip_ultima_lettura come tweet ed aggiornafre ip_rilevato=ip_ultima_lettura
Qualcuno mi aiuta?