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.