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