Tip 2
Descripción
Si tenemos dispositivos en casa como camaras IP, automatismos gobernados por Internet, NAS que contienen datos, etc; acceder a ellos es fácil si tenemos una IP fija. Si no disponemos de ella por precio o disponibilidad, hay otros métodos que no son fáciles de configurar o también son de pago.
Esta solución nos envia un correo electrónico cada vez que cambia nuestra IP y así poder acceder a casa sin problemas. Solo necesitamos un ESP8266 y una cuenta de Gmail. La libreria Gsender nos facilita mucho la programación y además podemos usar la misma cuenta de Gmail para enviar y recibir ese correo.
El programa conecta con nuestro router y usa un servicio gratuito ipify.org que nos devuelve nuestra IP. Si es diferente a la que ya teniamos antes, entonces nos manda un correo a nuestro teléfono con la nueva.
Solo tenemos que determinar con que frecuencia queremos que el programa haga esa verificación
Código
#include "ESP8266WiFi.h"
#include "Gsender.h"
const char* ssid = "Jopapa";
const char* password = "pepitogrillo";
String miIP="0.0.0.0"; //Para que en primera conexión nos diga la que tenemos
void setup() {
Serial.begin(115200);
delay(10);
//Conexión a nuestro router
Serial.println();
Serial.print("Conectando a ");
Serial.println(ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED){
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi conectada");
Serial.print("Direccion IP interna del ESP8266: ");
Serial.println(WiFi.localIP());
}
void loop() {
String ip = getIp();
if (ip != miIP){
Serial.println("Atencion, tu IP ha cambiado");
Serial.println("Tu anterior IP era: "+ miIP);
miIP=ip;
Serial.println("Tu actual IP es: " + miIP);
//Enviar e-mail con la nueva IP
Gsender *gsender = Gsender::Instance();
String subject = "Tu nueva IP";
if (gsender->Subject(subject)->Send("[email protected]", "Tu actual IP es: " + miIP)) {
Serial.println("Mensage enviado.");
}else{
Serial.print("Error enviando mensage: ");
Serial.println(gsender->getError());
}
}
//Crear aquí un delay o un millis para chekear la IP, por ejemplo cada hora o más
delay(60000);
}
String getIp(){
WiFiClient client;
if (client.connect("api.ipify.org", 80)) {
Serial.println("Conectado a ipify.org");
client.println("GET / HTTP/1.0");
client.println("Host: api.ipify.org");
client.println();
}else{
Serial.println("Conexión a ipify.org fallida");
return String();
}
delay(5000);
String line;
while(client.available()){
line = client.readStringUntil('\n');
//Serial.println(line);
}
return line;
}
Vea también
Referencias externas
- Saber nuestra IP por Mail - jojopapa