La problématique
Le boitier Freebox Serveur ne plante pas souvent. Cependant, en trois ans, il a planté 3 fois pendant des vacances (au début tant qu’à faire). C’est très embêtant car :
- Impossible de savoir si c’est la Freebox qui est plantée ou s’il n’y a plus de courant dans la maison
- Le réseau de la maison n’est plus accessible, donc plus d’accès à ses données personnelles stockées sur le NAS
- Plus de domotique non plus (remise en route du chauffage avant le retour par exemple)
- Plus non plus de josdblog
- … bref, pas top du tout !
La solution décrite dans ce billet consiste à repartir de la solution présentée dans le billet Synology : Notification du passage sur onduleur (Server is on battery) en intercalant une prise commutateur Zwave entre l’onduleur et l’alimentation du boitier Freebox Serveur afin que le NAS Synology, par l’intermédiaire de SynoZwave, puisse couper puis restaurer l’alimentation du boitier Freebox Serveur pour le contraindre à redémarrer.
J’énumère ci-dessous une liste des difficultés à considérer.
- Le boitier Freebox serveur est le modem ADSL. Quand il est planté, on ne peut plus accéder depuis l’extérieur au réseau, et donc au NAS. Le NAS Synology doit donc détecter et solutionner le problème tout seul.
- Le boitier Freebox serveur est le routeur du réseau, rien ne garanti donc que, même coupé de l’extérieur, le réseau fonctionne encore. Le NAS risque donc d’être totalement isolé et de ne plus pouvoir interagir par l’intermédiaire du réseau avec une box domotique dédiée connectée (comme la Zibase de Zodianet). Le contrôleur Z-Wave (Aeon Labs Z-Wave USB Z-Stick S2) de SynoZwave est directement branché sur le Synology, le pilotage des dispositif Zwave ne nécessite donc pas un réseau fonctionnel, ce qui constitue un avantage certain !
- Une prise commutateur Zwave peut ne pas mémoriser son état après une coupure de courant de plus de quelques secondes (c’est le cas de la prise commutateur Everspring AN157-6 par exemple). Quand le NAS redémarre après une coupure de courant, il faut qu’il redémarre aussi la prise commutateur Zwave pilotant l’alimentation du boitier Freebox serveur. De plus, mieux vaut que le NAS Synology soit configuré avec une IP statique pour qu’il n’attende pas son adresse du routeur qui risque de démarrer bien plus tard que lui.
- SynoZwave n’est pas très stable, mieux vaut vérifier périodiquement qu’il est encore actif.
- Les requêtes http utilisées pour piloter la prise commutateur Zwave peuvent faire planter SynoZwave.
Raccordements
Le schéma ci-dessus propose un exemple d’interconnexions du boitier Freebox serveur, du NAS, de l’onduleur, des alimentations et de la prise commutateur Zwave. Sur le schéma, les connexions d’alimentation sont en bleu et les connexions réseau en rouge.
Le script de redémarrage du boitier Freebox Serveur
#!/opt/bin/bash
export PATH=/bin:/sbin:/opt/bin:/opt/sbin:/usr/bin:/usr/sbin:/usr/syno/bin:/usr/syno/sbin:/usr/local/bin:/usr/local/sbin
# _____ Fonction pour démarrer SynoZwave
start_SynoZwave ()
{
/var/packages/synozwave/scripts/start-stop-status start > /dev/null
sleep 60
}
# _____ Fonction pour redémarrer SynoZwave
reboot_SynoZwave ()
{
sleep 10
killall synozwave
sleep 10
start_SynoZwave
}
echo -e "\n__________ DomoInternetTest.sh [$(date +%c)]"
# _____ Vérification que SynoZwave est toujours actif
ps | grep -v grep | grep synozwave > /dev/null
if [ $? -ne 0 ]
then
start_SynoZwave
echo -e "Redémarrage de SynoZwave"
fi
# _____ Vérification de la connexion Internet
TEST1="www.google.com"
TEST2="ping.funet.fi"
ping -q -c1 $TEST1 > /dev/null
if [ $? -ne 0 ]
then
ping -q -c1 $TEST2 > /dev/null
if [ $? -ne 0 ]
then
reboot_SynoZwave
# Extinction
wget --quiet --spider "http://localhost:4020/data=devices&action=edit&deviceNum=8&valueNum=1&setValue=0"
reboot_SynoZwave
# Rallumage
wget --quiet --spider "http://localhost:4020/data=devices&action=edit&deviceNum=8&valueNum=1&setValue=1"
reboot_SynoZwave
# Notification par email du redémarrage de Freebox Server
sleep 300
echo "Redémarrage du Freebox Server !" | /opt/bin/nail -s "[Synology] Internet connexion down" mon_adresse@electronique
fi
fi
exit 0
Adapter (adresse électronique, deviceNum de la prise commutateur Zwave utilisée, …) et enregistrer le script ci-dessus à l’emplacement de son choix, par exemple : /volume1/scripts/DomoInternetTest.sh
Ce script devra être appelé à intervalles réguliers grâce à la commande cron (cf. plus bas). Voici son déroulement :
- Tester si SynoZwave est bien actif et le réactiver le cas échéant.
- Tenter ensuite de faire un ping sur
www.google.com
. Si le ping échoue, tenter de joindreping.funet.fi
. Si les deux pings ont échoués, il est probable que la connexion Internet soit tombée. Dans ce cas (en principe, cela doit survenir moins d’un fois par mois), il faut rebooter le boitier Freebox serveur en prenant le maximum de précautions avec SynoZwave pour se prémunir de son instabilité.- Redémmarrage de SynoZwave
- Extinction de la prise commutateur Zwave (l’utilisation de
localhost
permet de s’affranchir d’un réseau fonctionnel) - Redémmarrage de SynoZwave
- Rallumage de la prise commutateur Zwave
- Redémmarrage de SynoZwave
- Notification par courriel (cf. Synology : email en ligne de commande) de la tentative de redémarrage du boitier Freebox serveur
Ce script est a appeler dans la crontab (cf. Synology : installation et utilisation de ipkg pour installer la commande cron si ce n’est déjà fait).
Par exemple, pour appeler ce script toute les 2 heures entre 6h du matin et 22h il faut insérer dans la table cron la ligne :
0 6-22/2 * * * /volume1/scripts/DomoInternetTest.sh >> /volume1/scripts/DomoInternetTest_Log.txt 2>&1
Le script appelé au démarrage du Synology
En cas de redémarrage de tout le système informatique (NAS, Boitiers Freebox, Switch…) suite à une coupure de courant (dont vous devriez être informé grâce à Synology : Notification du passage sur onduleur (Server is on battery)), il se peut que la prise commutateur Zwave reste sur Off. Le script de redémarrage du boitier Freebox Serveur devrait résoudre ce problème quand il sera appelé, mais cela risque de prendre du temps. Voici un script à placer dans /opt/etc/init.d/
(afin qu’il soit appelé au démarrage du NAS Synology) avec, par exemple, comme nom S99_PriseFreeBoxOn.sh
(Sxx
permet d’ordonner l’enchainement des scripts de ce répertoire au démarrage du NAS).
#!/opt/bin/bash
export PATH=/bin:/sbin:/opt/bin:/opt/sbin:/usr/bin:/usr/sbin:/usr/syno/bin:/usr/syno/sbin:/usr/local/bin:/usr/local/sbin
# _____ Vérification que SynoZwave est toujours actif
sleep 300
ps | grep -v grep | grep synozwave > /dev/null
if [ $? -ne 0 ]
then
/var/packages/synozwave/scripts/start-stop-status start > /dev/null
sleep 60
fi
# _____ Prise sur On
wget --quiet --spider "http://localhost:4020/data=devices&action=edit&deviceNum=8&valueNum=1&setValue=1"
sleep 300
# _____ Vérification Accès Internet
/volume1/scripts/DomoInternetTest.sh >> /volume1/scripts/DomoInternetTest_Log.txt 2>&1
exit 0
Tester la solution
Test 1 (Simulation de plantage du boitier Freebox Serveur) :
- Débrancher la prise téléphone du boitier Freebox Serveur
- Exécuter dans un terminal ssh sur le Synology le script de redémarrage du boitier Freebox Serveur
- Vérifier que le boitier Freebox Serveur redémarre comme il le devrait
- Débrancher l’onduleur (qui reste actif)
- Attendre que le NAS s’éteigne
- Mettre sur off manuellement (en utilisant le bouton dédié) la prise Zwave
- Éteindre l’onduleur
- Rebrancher l’onduleur
- Allumer l’onduleur
- Vérifier que tout revient bien à la situation normale
/volume1/scripts/DomoInternetTest_Log.txt
) pour s’assurer que le cron est bien actif et que le script veille sur la connexion Internet.
Shopping : EVERSPRING – Module Prise ON/OFF Z-Wave AN1576
Shopping : Alimentation Transformateur Chargeur 12V 5A 60W adaptée
Shopping : Alimentation Transformateur Chargeur 12V 5A 60W utilisable
Shopping : NAS Synology DS213+