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 :