ArticlesDécouvrirGuidesRaspberrySynology

Des notifications SMS sur SYNOLOGY

Des notifications SMS sur NAS SYNOLOGY

Envoyer des SMS avec un NAS Synology

Depuis quelques temps, je surveille mon habitat avec des caméras via l'application Synology Surveillance Station. L'application est gratuite et permet de gérer sans license supplémentaire 2 caméras IP; dans mon cas, je dispose de 4 caméras, j'ai dû acheter 2 licences supplémentaires que l'on trouve facilement sur Amazon pour 49€ l'unité. Professionnelle et confortable, l'application Web est vraiment bien concue et l'on peut féliciter Synology pour ses solutions de grande qualité. De plus, des applications mobiles gratuites viennent compléter le module serveur, afin de diposer d'un client de surveillance sur iPhone ou Android. L'application Web offre de grandes capacités de personnalisation. Le système d'alerte est totalement paramétrable avec de nombreuses possibilités d'envois. Comme pour toute solution de sécurité, il faut prévoir les pannes éventuelles. En effet, l'idée de subir une coupure Internet ou électrique m'est intolérable. Il me fallait donc trouver un moyen pour m'alerter d'un quelconque problème de ce type. L'envoi d'un SMS est une méthode apropriée dès lors que l'on a un serveur SMS (cf. mon article Envoyer des sms avec un raspberry).

Dans un premier temps, j'ai placé sous onduleur la box Internet, le petit NAS Synology, le switch Ethernet et le serveur Raspberry. Du coup, si je subis une coupure électrique ou encore un perte de connexion Internet, le système est capable de réagir localement et de m'avertir du problème par SMS.

Les solutions pour envoyer des SMS à partir d'un NAS Synology ne sont pas nombreuses. Si l'on veut disposer d'une vraie solution indépendante et sécurisée alors il vous faudra réaliser des réglages techniques sur le système Linux du NAS Synology. En général, le serveur SMS est accessible via une API Web, ainsi l'envoi et la réception de SMS sont très simples à exploiter. Voici ma solution avec pour seul prérequis la présence d'une serveur SMS (cf. mon article Envoyer des sms avec un raspberry).

 

Ma solution : un serveur Web et CURL

Vous devez dans un premier temps, faire des réglages de notification sur DSM. Ouvrez le panneau de configuration, puis choisir le menu Notification. Cliquez sur l'onglet SMS.

Cliquez sur le bouton Ajouter un fournisseur de service SMS. Indiquez un nom de fournisseur SMS (RASPISMS) et saisissez précisemment l'URL pour faire appel à l'API d'envoi SMS.

Vous remarquez que j'appelle une URL locale (http://localhost/api/sendsms.php?user=0&pwd=0&appkey=ID&to=1234&text-Hello+World) et non une URL de serveur SMS distant. En effet, il s'agit de gérer l'appel de l'API SMS avec une page Web locale simplifiée et reformattée. L'URL de l'API RaspiSMS ne passe pas le contrôle du formulaire Synology (pourquoi ? je ne sais pas mais rien à y faire) - dans le cas contraire c'était plus simple, pas besoin de reformatté l'URL et donc pas besoin de serveur Web local.

Contraint, j'ai donc suivi le formattage Synology de cette URL en utilsant un serveur Web local qui renverra sur l'URL RaspiSMS - plus complexe - via CURL. Ainsi, je vous demande de respecter le nommage de l'URL comme ci-avant ; cliquez sur le bouton Suivant.

Un second formulaire apparait pour renseigner les valeurs des champs indiqués dans l'URL. Chosissez les variables avec les menus déroulants pour chaque champs ; validez en cliquant sur le bouton Appliquer.

 

Activer l'accès SSH

Revenir sur l'option d'Accueil du panneau de configuration et chosir le menu Terminal & SNMP ; cliquez sur l'onglet Terminal et cochez l'option Activer le service SSH (port 22) et validez avec le bouton Appliquer.

 

Ajouter les paquets pour le serveur Web

Puisque je fais appel à une URL locale, je suis donc obligé d'installer un serveur Web avec PHP. Allez dans le Centre de paquets puis installez le package Web Station ainsi que le package PHP 5.6 .

Puis paramètrez Web Station avec NGINX et PHP 5.6 en allant dans l'onglet Paramètres Généraux. Sélectionnez NGinx et PHP 5.6. 

Allez ensuite dans les paramètres PHP puis activez l'extension CURL (cochez l'option) ; validez avec Appliquer . Le serveur Web est donc prêt.

Contrôlez ensuite le status du Web Station ; PHP 5.6 doit être installé avec le serveur Web NGINX par défaut.

Coder une page PHP pour faire l'interface avec le serveur RaspiSMS

Connectez vous en SSH au NAS Synology (utilisez un outil de type Terminal) :

Mac-Pro:~ thbarr$ ssh admin@192.168.0.32
admin@192.168.0.32's password:
Could not chdir to home directory /var/services/homes/admin: No such file or directory
admin@DShomeserver3:/$ sudo su -
Password:
root@DShomeserver3:~#

Créez un dossier spécial pour les API dans le dossier racine Web Station :

# chmod 775 /volume1/web/api
# chown http:http /volume1/web/api

Se placer dans le répertoire de Web Station pour ajouter une page PHP :

# cd /volume1/web
# mkdir -p /volume1/web/api
# cd /volume1/web/api
# vi /volume1/web/api/sendsms.php

Editez et copiez le code suivant dans le fichier PHP sendsms.php :

< ?php
if ( isset($_GET['user']) AND isset($_GET['appkey']) AND isset($_GET['pwd']) AND isset($_GET['to']) AND isset($_GET['text']) ) {
if ($_GET['user'] == 'user_raspisms' ) {
$email='email@domain.fr';
} else { echo "error username"; die; };
// *** http://ADRESSEIP_RASPISMS_SERVER/RaspiSMS/smsAPI/?email=email@domain.fr&password=monPassWord&numbers=07000000000&text=test+ok
$MYURL='http://192.168.0.16/RaspiSMS/smsAPI/?';
$MYURLVARS='email='.$email.'&password='.$_GET['pwd'].'&numbers='.$_GET['to'].'&text='.$_GET['text'];
$CH=curl_init($MYURL);
echo $MYURL.$MYURLVARS;
curl_setopt( $CH, CURLOPT_POST, 1);
curl_setopt( $CH, CURLOPT_POSTFIELDS, $MYURLVARS);
curl_setopt( $CH, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt( $CH, CURLOPT_HEADER, 0);
curl_setopt( $CH, CURLOPT_RETURNTRANSFER, 1);
$response=curl_exec($CH);
echo $response;
curl_close($CH);
} else { echo "vars incompletes"; }; ?>

Quelques explications concernant le code PHP :
Indiquez l'adresse IP de votre serveur RaspiSMS (ou autre),
Indiquez ensuite un user RaspiSMS ('user_raspisms') et son email correspondante ('email@domain.fr'),
Le reste des champs sera renseigné par le formulaire lui-même.

Préparez le fichier et le répertoire pour un accès Web :

# chmod -R 775 /volume1/web/api
# chown -R www:www /volume1/web/api

 

Conclusion

Et voilà... le tour est joué ; il ne reste plus qu'à tester l'envoi de SMS par le panneau de controle DSM. Au passage, vous avez remarqué que je n'ai pas utilisé PERL pour cette procédure... j'aborderais les scripts PERL en mode service dans d'autres articles plus techniques - à venir. Cette méthode est parfaitement fonctionnelle et surtout très simple. N'hésitez pas à me solliciter pour plus d'explications.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

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