Reinicio automático del router a través de Home Assistant

Hoy os voy a explicar como reiniciar de forma automatica el router en caso de fallar la conexión , toda el control estará en manos en Home Assistant , si tenéis un router de operadora al cual no se puede acceder via ssh entonces montaremos un enchufe wifi para hacer el reinicio.

routers
Vista del router secundario de la operadora y del Xiaomi Mi Router 3G con firmware Padavan que actua como router principal

En este caso he utilizado un Sonoff S26 que tenia por casa con el firmware espurna ( no hay firmware para el S26 pero el del S20 funciona perfectamente)

Sonoff reseteo
Así quedaría montado para poder cortar la alimentación del router de la operadora

Primero definimos un sensor que cada minuto compruebe si tenemos conexión a internet

- platform: ping host: 8.8.8.8 name: conectividad_internet count: 5 scan_interval: 60
Lenguaje del código: YAML (yaml)

Le damos los valores en customize.yaml

binary_sensor.conectividad_internet: friendly_name: Internet icon: mdi:router-wireless
Lenguaje del código: YAML (yaml)

Y nos quedaría de la siguiente forma :

Creamos el switch con los valores apropiados para poder controlar el enchufe

- name: enchufe_router platform: mqtt state_topic: enchufe-router/relay/0 command_topic: enchufe-router/relay/0/set payload_on: 1 payload_off: 0 availability_topic: enchufe-router/status payload_available: 1 payload_not_available: 0 qos: 0 retain: false optimistic: false
Lenguaje del código: YAML (yaml)

También le damos los valores en customize.yaml

switch.enchufe_router: friendly_name: Enchufe router icon: mdi:power-socket-eu
Lenguaje del código: YAML (yaml)

Y creamos la automatización , que básicamente controla que si durante cinco minutos no tenemos conexión a internet apaga durante cinco segundos el enchufe y lo vuelve a activar , luego espera cuatro minutos y si ha vuelto la conexión nos envía un mensaje por Telegram de que ha reiniciado el router

- alias: "Internet caido reiniciar" initial_state: true trigger: platform: state entity_id: binary_sensor.conectividad_internet from: 'on' to: 'off' for: 00:05:00 action: - delay: 00:00:10 - service: switch.turn_off entity_id: switch.enchufe_router - delay: 00:00:05 - service: switch.turn_on entity_id: switch.enchufe_router - delay: 00:04:00 #Si ha vuelto internet enviamos el mensaje por telegram - condition: state entity_id: binary_sensor.conectividad_internet state: 'on' - service: notify.notif_telegram_bot data: message: "\U0001f4a6\U0001f4a6\U0001f4a6\U0001f4a6 ¡He tenido que reiniciar el Router, ahora el servicio de Internet está *ONLINE, todo correcto! \U0001f4a6\U0001f4a6\U0001f4a6\U0001f4a6"
Lenguaje del código: YAML (yaml)

Ya solo nos queda mostrarlo en nuestro panel

- type: entities title: Información sistema show_name: true show_state: false show_header_toggle: false columns: 3 entities: - sensor.version - sensor.last_boot - binary_sensor.conectividad_internet - entity: sensor.ip_externa name: 'Dirección IP externa'
Lenguaje del código: YAML (yaml)

BONUS; Como siempre puede fallar algo y como protección redundante en el apartado «SCHEDULE» hemos programado tres inicios automáticos del enchufe al día. y también debemos programar que el estado inicial al volver la alimentación sea ON

Para probarlo solo hay que quitar el cable WAN que viene de la ONT y esperar los cinco minutos y veremos que funciona perfectamente !!!!!!

Deja un comentario