Buenas , en esta ocasión vamos a utilizar un Sonoff S26 ( también valido para el modelo S20) para crear un enchufe que estará revisando constantemente si tenemos conexión a Internet y en caso de no tener conexión reseteara el router y nos avisara por telegram de que ha ocurrido el reset , todo esto vino a raíz de un router instalado en una casa que tienen mis padres fuera , en múltiples ocasiones un Alfa R36 que tenia instalado se quedaba colgado y podía permanecer así hasta el día del juicio final , de esta forma me aseguraba que en caso de bloqueo tras un tiempo predefinido ( en este caso cinco minutos ) el router se reiniciaba y volvía la conexión.
Lo primero que haremos sera abrir el enchufe para poder acceder a los pines RX/TX para poder cargar la aplicación o cargar un firmware con OTA , en este caso espurna por ejemplo nos valdría , en el código que os dejo esta implementada la parte de OTA con lo que solamente con cargarlo una vez ya se podría cerrar el enchufe y todas las posteriores modificaciones se podrían enviar por OTA una vez compilado , yo por comodidad cuando estaba picando la aplicación lo tenia conectado por el puerto serie.
Aquí tenéis es pinout para poder conectar el adaptador , algo muy pero que muy importante es que cuando lo conectéis no se os ocurra conectarlo a 220V ya que los fuegos artificiales están asegurados , la alimentación la coge desde la propia interface.
Y este el fichero de la aplicación que deberéis personalizar.
La parte a personalizar seria :
// Datos del Bot de Telegram
//token Ojo hay que porner bot y seguido el token
String BOTtoken = "botxxxxxxxxxxxxxxx:yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy";
// Chat_id
String Chat_id = "xxxxxxxxxxxxxx";
Aquí deberéis poner tanto el token como el chat_id , no entrare en como crear un bot ya que hay excelentes guías que lo explican paso a paso , por ejemplo : https://planetachatbot.com/c%C3%B3mo-crear-un-bot-para-telegram-y-darle-funcionalidad-c5c7ec833f49
//Configuracion tiempos
int TIEMPO_INICIAL = 300; // Tiempo de espera al arranque del router en segundos
int MAX_FALLOS = 5;
const char* ssid = "xxxxxxxxxxxxxxxxxxxxx";
const char* password = "xxxxxxxxxxxxxxxxxxxxx";
const char* ssid2 = "xxxxxxxxxxxxxxxxxxxxx";
const char* password2 = "xxxxxxxxxxxxxxxxxxxxx";
const char* ssid3 = "xxxxxxxxxxxxxxxxxxxxx";
const char* password3 = "xxxxxxxxxxxxxxxxxxxxx";
IPAddress ip(192, 168, 1, 66);
IPAddress gateway(192,168,1,1);
IPAddress subnet(255,255,255,0);
IPAddress dns(8, 8, 8, 8);
const char* Hostname = "www.google.com";
Aquí podéis definir el delay de arranque , el numero máximo de fallos seguidos , los datos de hasta tres redes por si lo queréis usar en mas de una red , y los datos por si queréis que en lugar de DHCP sea por ip estática.
Si necesitáis subir el fichero .bin solo tenéis que ir a la pagina del dispositivo y subirlo desde allí.
Cada vez que el enchufe resetee el router os avisara por telegram con la siguiente información :
Hola Antonio:
He estado revisando tu aportación para resetear el router con el sonoff.
La verdad es que no tengo mucha idea, pero he sido capaz de instalar espurna en mi s26 r2.Posteriormente he creado un bot en telegram y he modificado tu aplicación con mis datos de wifi. Hasta ahí, todo correcto; ahora me surge la duda de como se instala la aplicación sobre el firmware espurna.
He abierto el fichero de la aplicación con el ide de arduino y posteriormente tras configurar una ip estática y los datos de mi bot, he exportado los datos a un bin. Después desde espurna he intentado subir la aplicacion mediante el update (upgrade me pone en espurna) y entonces tras actualizar el sonoff, se me queda con la luz fija y no puedo acceder a él.
Estoy seguro que se me escaparán muchas cosas, supongo que no lo estaré haciendo bien o algo me falta.Espero que pudieras ayudarme.
Gracias de antemano.
Buenas
En este caso espurna solo lo use para poder cargar el firmware custom posteriormente , si te interesa el codigo completo dimelo y te lo paso por email
Saludos