Reboot routeur automatique si coupure Internet


Dans cette article, je décris la création d’un programme qui redémarre votre routeur en cas de coupure d’Internet.

J’utilise ce programme pour une installation radioamateur connectée mais vous pourrez l’adapter à vos applications.

Le relais des Vosges F1ZBV, (logiciel SvxLink) est connecté à Internet pour pouvoir prendre la main avec Dwservice et également de pouvoir l’interconnecter sur le réseau régional ou le réseau RRF.

Nous avons constaté des coupures Internet régulières, peut être du à la neige ou autre.

Jean-Paul F5FIM, doit dans un premier temps pelleter la neige et dégivrer les différentes serrures, tout cela pour un simple reboot, il était temps de faire quelque chose :).

Nous avons constaté qu’un reboot du routeur nous permettait de retrouver notre connexion Internet. Par contre, il était nécessaire de se rendre sur site pour faire l’opération.

Pour ce faire, il suffit de relier un relais sur un gpio du Raspberry et de créer un programme qui va regarder si Internet est présent, si nous ne sommes pas connecté le relais coupera l’alimentation du routeur pendant 10s ce qui permettra de l’initialiser.

Schéma de montage:

Il s’agit d’un exemple sur le GPIO 2 vous pouvez choisir celui que vous souhaitez.

Programme:

#!/bin/bash
# Reboot Router01/2021 F8ASB.COM

if : >/dev/tcp/8.8.8.8/53; then
echo 'Internet disponible'
else
echo 'Internet non disponible'
echo 1 > /sys/class/gpio/gpio2/value
echo "Reboot web [`date`]" >> /var/log/netcheck
sleep 10
echo 0 > /sys/class/gpio/gpio2/value
fi

Le programme teste la connexion internet, si nous sommes connecté il écrit Internet disponible. Sinon il active le relais pour couper l’alimentation du route, patiente 10s et remet l’alimentation.
Nous écrivons dans le fichier /var/log/netcheck à chaque reboot.
Le lancement du programme sera fait d’une manière cyclique ( tous les 15min) en le lançant grâce au planificateur Crontab.

Installation:

Se connecter en SSH sur votre Raspberry

Se rendre dans le répertoire pi,
cd /home/pi/
Créer un répertoire par exemple routeur
mkdir routeur
se rendre dans se répertoire crée.
cd routeur
copier le programme dans ce repertoire
wget https://raw.githubusercontent.com/F8ASB/F1ZBV/master/internet.sh
rendre le fichier exécutable
chmod +x internet.sh

Changer le port gpio selon votre besoin, pour éditer taper nano internet.sh
echo 1 > /sys/class/gpio/gpio2/value
et
echo
 0 > /sys/class/gpio/gpio2/value

Initialisation des GPIO
Il est nécessaire de déclarer au systeme quel gpio nous allons utiliser, pour cela il faut l’écrire dans le rc.local.

Edition du rc.local
nano rc.local

Insérer les lignes suivantes avant le exit 0:

# GPIO 17 : PTT

echo “2” > /sys/class/gpio/export &
sleep 2
echo out > /sys/class/gpio/gpio2/direction

Changer le port gpio selon votre configuration

La prise en compte de la déclaration des gpio nécessite un reboot général.

Il nous reste plus qu’a insérer une ligne dans le crontab pour que le test s’exécute toutes les 15 min, vous pourrez bien sûr modifier cette valeur à votre convenance.

Edition du fichier crontab
nano /etc/crontab

Ajouter cette ligne en fin de fichier:

*/15 * * * * root /home/pi/routeur/internet.sh

Conclusion:

La mise en oeuvre est simple, il nous a fallu peut de temps pour l’intégrer sur le relais F1ZBV qui utilise la logique SvxCard qui est équipée de 4 relais.
Nous avons utilisé le GPIO20.
Le routeur possède peut être une commande SSH pour effectuer un reboot, n’étant pas sur place, une solution hardware a été retenue.

Vous pouvez recevoir un email dès la parution d’un article sur le Blog F8ASB.COM, entrez votre mail sur la fenêtre à droite et cliquer sur abonnement. Tous les articles en 1 clic ICI
Ce contenu a été publié dans radioamateur, Raspberry, Relais F1ZBU /F1ZBV, Svxlink, avec comme mot(s)-clé(s) , , , , , , , , . Vous pouvez le mettre en favoris avec ce permalien.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.

Time limit is exhausted. Please reload CAPTCHA.

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.