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   

Le damos los valores en customize.yaml

binary_sensor.conectividad_internet:
  friendly_name: Internet
  icon: mdi:router-wireless

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 

También le damos los valores en customize.yaml

switch.enchufe_router:
  friendly_name: Enchufe router
  icon: mdi:power-socket-eu

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"

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'     

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 !!!!!!