Overblog
Editer l'article Suivre ce blog Administration + Créer mon blog
7 à voir

A la découverte des technologies

Comment rebooter automatiquement son routeur ? (le retour)

Comment rebooter automatiquement son routeur ? (le retour)

Comment rebooter automatiquement son routeur quand il perd sa connexion ? Après mes premières tentatives il y a quelques années, est-ce toujours possible aujourd'hui ? Quel matériel utiliser ? Tous les détails dans ce nouvel article.

Trois ans se sont écoulés depuis l'écriture de mon premier article sur Comment rebooter automatiquement son routeur ?

J'ai 2 raisons de revenir aujourd'hui sur ce sujet:

  • D'abord parce que par un beau jour d'été, où évidemment il n'y avait personne dans les locaux, ma prise connectée Kankun a rendu l'âme (RIP ⚰).
  • Ensuite parce que c'est un sujet qui a l'air d'intéresser beaucoup de monde puisque mon article sur le sujet est l'un des plus lu de ce blog. Pourtant je vous promets il y a d'autres articles intéressants ici 😁

Bref, il était donc temps de faire un petit "refresh" de la solution.

Etat des lieux

La mauvaise nouvelle c'est que depuis 3 ans, comme me l'ont fait remarqué plusieurs lecteurs, la prise connectée Kankun n'est plus disponible: ni sur Amazon, ni sur Aliexpress, ni ailleurs, …

Ce n'est pourtant pas les prises connectées qui manquent sur le marché car avec l'avènement d'Alexa, de la Google Home et autres Home Pod, tout le monde propose ses prises connectées y compris les enseignes comme Ikea (la prise TRÅDFRI) ou Leroy Merlin (la solution ENKI).

Comment rebooter automatiquement son routeur ? (le retour)

L'avantage est que les prix de ces solutions ont (encore) baissés.
L'inconvénient est que ce sont des solutions orientées vers un usage grand public qui sont donc pilotables:

  • au pire uniquement avec des solutions/applications maisons ou avec Alexa/Google Home
  • au mieux avec des solutions semi programmables type IFTTT

Ce n'est pas ce que je recherche, j'ai besoin d'une solution sur lequel j'ai complètement la main et que je peux piloter par programmation sans trop d'effort.

Du bricolage ?

Dans le précédent article je vous parlais d'OpenWRT qui est une distribution Linux légère, embarquée sur des équipements réseaux. Le fait de disposer d'OpenWRT sur la prise connectée Kankun apportait la souplesse et l'autonomie de la solution de redémarrage automatique.

Existe-t-il d'autres prises connectées utilisant OpenWRT ou sur lequel il est possible de l'installer ?

Après pas mal de recherches, je trouve la prise connectée Weave Smart Plug qui semble permettre de faire la même chose que la prise Kankun. Hélas, impossible de la commander où que ce soit, elle ne semble plus disponible non plus.

Comment rebooter automatiquement son routeur ? (le retour)

Il est sinon possible de construire sa propre prise connectée intelligente, voir par exemple une explication ici, mais ça reste réservé à des spécialistes ce que je ne suis pas.

Comment rebooter automatiquement son routeur ? (le retour)

Autre possibilité: modifier une prise connectée du marché pour y installer OpenWRT. Plusieurs hackers ce sont penchés sur la question. Sur la Belkin Wemo Smartswitch, il est par exemple possible de mettre à jour la prise sur certaines versions du firmware qui sont mal sécurisées. Voir ici. Intéressant mais encore faut-il avoir la bonne version du firmware sur la prise qu'on va acheter. C'est un peu aléatoire.

Sur une autre prise Belkin, la Wemo Insight Smartplug, il est possible de flasher le firmware vers OpenWRT. Détail ici. Mais là il faut démonter la prise et utiliser un fer à souder pour intervenir sur le process de boot. Pas vraiment ma tasse de thé 🙂

Comment rebooter automatiquement son routeur ? (le retour)

Voilà ma nouvelle prise connectée

Au fil de mes recherches, je tombe enfin sur une alternative bien plus intéressante.

Une bande de hacker, softScheck, s'est penchée sur une autre prise connectée la HS 110 de TP-Link.
Concrètement ils ont fait du "reverse engeneering" du protocole de communication utilisé par la prise. Autrement dit ils ont écouté le réseau WiFi lorsque la prise était sollicitée pour voir s'ils pouvaient arriver à comprendre comment la piloter. Et ils ont réussi en exploitant une faille de sécurité du protocole ! Voir le détail ici.
Et non seulement ils ont réussi mais en plus ils ont écrit une API en Python pour piloter cette prise ainsi que d'autres modèles de la marque. Voilà qui est intéressant !

D'autant plus que la prise TP-Link peut être facilement trouvée dans la commerce (chez Darty, sur Amazon ou chez LDLC par exemple) pour environ 25€.

Comment rebooter automatiquement son routeur ? (le retour)

Aussitôt dit, aussitôt fait je l'achète et 2 jours plus tard me voilà avec.

Comment rebooter automatiquement son routeur ? (le retour)

Pour la faire fonctionner, rien de plus simple: il suffit d'installer l'application iOS/Android associée (et elle est en Français contrairement à celle de Kankun !) et de brancher la prise. L'application recherche alors un réseau WiFi TP-LINK-XXX qui est exposé par la prise en phase d'initialisation et il suffit de la configurer en lui indiquant le réseau WiFi à utiliser.

L'application présente une interface simple pour commander la prise: allumer/éteindre, programmation horaire, voir la consommation électrique, …

Comment rebooter automatiquement son routeur ? (le retour)

Reboot automatique v2

Lançons nous maintenant dans le pilotage de la prise.

Première chose à faire: installer "l'API" développée par softScheck. Pour cela, il suffit de cloner ou downloader sur son PC le contenu de leur repo Github.

Comment rebooter automatiquement son routeur ? (le retour)

Deuxième chose à faire: identifier l'adresse IP de votre prise connectée. Vous devriez pouvoir la trouver depuis l'interface d'administration de votre routeur ou votre box. Il y a de fortes chances que ce soit quelque chose du genre 192.168.1.X. Par exemple, 192.168.1.77 dans mon cas.

Et c'est tout !

Sous réserve que Python soit installé sur votre PC, pour allumer la prise il suffit de lancer le script tplink_smartplug.py avec l'adresse IP et l'option "-c on":

$ ./tplink_smartplug.py  -t 192.168.1.77 -c on
Sent:      {"system":{"set_relay_state":{"state":1}}}
Received:  {"system":{"set_relay_state":{"err_code":0}}}
$

Et pour éteindre la prise il faut lancer ce même script avec l'option "-c off":

$ ./tplink_smartplug.py  -t 192.168.1.77 -c off
Sent:      {"system":{"set_relay_state":{"state":0}}}
Received:  {"system":{"set_relay_state":{"err_code":0}}}
$

Et aussi incroyable que cela puisse paraître (car c'est quand même une faille de sécurité 😉) ça fonctionne parfaitement !

Si l'on revient à notre problème initial (voir l'article): rebooter le router lorsqu'il n'y a plus de connexion à internet, il faut modifier légèrement le script que nous avions écrit, il devient:


# checkinternet
while true
do
   wget -q -s http://google.com
   if [[ $? -eq 0 ]]; then
     echo $(date) was: online
   else
     echo $(date) was: OFFLINE, retry in 30 seconds
     sleep 30
     wget -q -s http://google.com
     if [[ $? -eq 0 ]]; then
       echo $(date) was: now online
     else
       echo $(date) was: still OFFLINE, reboot in 10s
       sleep 10
       tplink_smartplug.py -t 192.168.1.77 -c off
       sleep 3
       tplink_smartplug.py -t 192.168.1.77 -c on
       sleep 600
     fi
   fi
 sleep 300
done

J'ai simplement remplacé les 2 lignes: "echo X > /sys/class/leds/tp-link:blue:relay/brightness" (qui commandait la prise Kankun) par un appel au script "tplink_smartplug.py".

Facile non ?


Conclusion

Cette solution fonctionne bien et permet donc de redéployer une solution de redémarrage automatique du routeur.

Elle a néanmoins un inconvénient: elle nécessite d'avoir une machine qui exécute ce script en permanence. Dans la solution précédente, le script était hébergé sur la prise connectée elle-même. Mais là, vu qu'on n'utilise pas OpenWRT sur la prise, on n'a pas accès au système pour y installer le script.
C'est dommage mais il est toujours possible d'installer ce script sur un mini-serveur (type RaspberryPI) qui serait lui-aussi connecté à votre réseau.

Voilà, j'espère que vous parviendrez à faire fonctionner cette nouvelle solution. Dites-le moi dans les commentaires !

 

(Crédit image de une: Sean MacEntee via Flickr)

Article précédent Article suivant
Retour à l'accueil
Partager cet article
Repost0
Pour être informé des derniers articles, inscrivez vous :
Commenter cet article
C
Bonjour, merci beaucoup pour ces partages, j’ai le même besoin pour un routeur 4G. Intéressée par la solution avec la prise HS100 (que j’ai déjà en plus) finalement le fait de devoir laisser un ordinateur tourner à côté me contraint un peu. Il y a une prise «Shelly smartplug S » qui permettrait cela ; un membre d’un forum « routeur 4G » a décrit sa solution (il faut revenir sur une ancienne version et paramétrer quelques éléments et une scène). Toutefois pour ma part cette solution a fonctionné quelques temps puis la prise s’est éteinte (et à éteindre mon routeur aïe), je n’ai pu identifier la cause. Peut-être (nous) trouveriez vous une solution avec cette prise, je suis sûre qu’il y a du potentiel mais trop limitée en connaissances informatiques pour ma part ? A bientôt !
Répondre
L
Merci pour le retour. Je ne connais pas le Shelly Smartplug S, elle a l'air effectivement de disposer d'une API. Je suis preneur du lien sur le forum 4G pour me faire une idée du bricolage à réaliser avec.
C
Hello,<br /> Super news que je trouve là ^^<br /> Je pars de temps en temps plusieurs jour chez mes parents et ayant des équipements qui tournent H24 chez moi ca me plait pas trop quand la connexion internet lache et ou je ne peux pas acceder à ma caméra en live par exemple.<br /> Par contre je ne touche pas encore trop au raspberry etc pour monter ce genre de chose. Un tuto de zéro serait une bonne idée je pense, pour moi comme pour pas mal de personne dans notre cas ^^<br /> En tout cas merci pour l'idée je vais me pencher dessus ( le script fonctionne parfaitement, me reste plus qu'à monter tout ca dans un RB pi
Répondre
L
Merci. Ravi que ça puisse être utile.<br /> Pour le tuto Rasberry PI, il y a moyen de trouver ça assez facilement sur Internet. Il est possible de s'inspirer de celui-là par exemple : https://hackaday.io/project/27235/instructions