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

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