Parece que você deseja um roteamento baseado na disponibilidade do uplink para o provedor.
(A disponibilidade do WiFi já é tratada por procedimentos normais. Se um deles ficar inativo e seu cliente conhecer o WiFis, ele apenas se conectará a um diferente.)
O que você quer é:
Two Internet connections <-INTERNAL-CONNECTION-> Router <-INTERNAL-CONNECTION #2-> Clients
O roteador pode determinar se uma conexão com a Internet está ativa e oferecer um backup secundário. As conexões internas podem ser tudo.
Exemplo:
DSL#1 < - > Cable < - > SingleAndOnlyRouter < - > CableOrWiFi < - > %código%
ClientInHouse#1 < - > DSL#2 < - > WiFi < - > SingleAndOnlyRouter < - > WiFi
Claro que existem outras possibilidades, mas isso lhe daria a flexibilidade que você precisa.
Provavelmente, há componentes externos para fazer isso (não posso ajudá-lo aqui), ou você pode configurar seu próprio servidor de "roteamento" (Linux / BSD / Unix ou Windows) .
O seu DVR seria uma possibilidade de um cliente. Assim:
ClientInHouse#2 < - > DSL#1 < - > Cable < - > SingleAndOnlyRouter < - > %código%
CableOrWiFi < - > DVR#1 < - > DSL#2 < - > WiFi < - > SingleAndOnlyRouter
Ambos usam a mesma rede interna neste exemplo (embora a configuração possa até mesmo ser melhorada lá, mas parece um pouco exagerada). O roteador reconhecerá quando uma linha DSL estiver inativa e, alternativamente, usará a segunda.
Também é possível usar ambos em paralelo, então, automaticamente, um uplink perdido será transferido para o segundo uplink ( Exemplo ).
Eu fiz uma rápida pesquisa de componentes oferecendo a possibilidade de roteamento fora da caixa (não configurando seu próprio servidor): Cisco / Linksys oferece isso.
harrymc ofereceu um link legal para isso em sua resposta: link