MyAlarm (26-12-2015)
Transcription
MyAlarm (26-12-2015)
Contact : Thierry BERIT-DEBAT Association Azerty Club [email protected] MyAlarm (26-12-2015) Pendant les vacances d’hiver, alors que je n’avais pas envie de bouger de la terre dehors ou d’essayer de terminer ma maison, l’idée m’est venu de réaliser une alarme avec caméras de surveillance maison à moindre cout. Une bonne alarme, ça coute facile 1000€. Pour cette somme, vous aurez droit à 3 ou 4 caméras, des détecteurs de mouvement, un écran de surveillance, une sirène, un clavier pour activer l’alarme et une box comprenant un OS propriétaire et un abonnement par mois de 30€, pour prévenir quand l’alarme a été déclenchée et avoir droit à un appel d’un type qui vous demande si c’est normal. Bon, ça fait un peu cher… Peut-on faire la même chose à un prix réduit ? Je me suis fixé une limite de 200€ pour réaliser la même chose. Matériel : - Un Raspberry Pi 2 model B à 40€ : http://www.amazon.fr/Raspberry-Pi-Processeur-900MHzlecteur/dp/B00T2U7R7I/ref=sr_1_1?ie=UTF8&qid=1451641983&sr=81&keywords=raspberry+pi+2 - une carte SD (Il faut une classe 10 supportant au moins 80Mb/s (ca c’est de la théorie…). J’ai opté pour la marque SanDisk (assez réputée) à 8€ : http://www.ldlc.com/fiche/PB00174961.html - Une clé WIFI: prendre un modèle reconnu directement : moi j’ai pris l’Edimax , la plus http://www.amazon.fr/Edimax-EW-7811UN-Nano-Adaptateurutilisée à 11€ : sans/dp/B003MTTJOY/ref=sr_1_12?ie=UTF8&qid=1451642035&sr=812&keywords=cl%C3%A9+wifi+usb - Une boite pour mettre le raspberry pi 2. Ce n’est pas obligatoire mais je le conseille fortement. Prendre un modèle ou on peut passer la caméra et où peut sortir les câbles du GPIO. Oui je sais, ca parait bête mais j’ai fais l’erreur… Je conseille celle-la à 10€ : http://www.amazon.fr/TBS%C2%AE2100-protection-transparente-Raspberryventilateur/dp/B00Q9P7GNY/ref=sr_1_11?ie=UTF8&qid=1451642160&sr=811&keywords=raspberry+pi+case - Une pi Cam: il est possible aussi de faire avec des caméras USB mais celle-ci est toute petite et se branche directement sur le raspberry pi. Prendre le modèle black : http://www.amazon.fr/gp/product/B00GIHO212?keywords=pi%20cam%20black&qid=14516 41870&ref_=sr_1_fkmr0_3&sr=8-3-fkmr0 . Chez Amazon : 24€ mais je pense qu’il y a moins cher. - Une Lampe à LED IR pour éclairer la nuit en Infrarouge : celle la éclaire mon salon (qui fait 35m²) :15€ : http://www.amazon.fr/illuminateur-cam%C3%A9ra-s%C3%A9curit%C3%A9infrarouge-Vision/dp/B00AAZRYD6/ref=sr_1_4?ie=UTF8&qid=1451642241&sr=84&keywords=lampe+IR . Ne pas oublier son alimentation : http://www.amazon.fr/noirs%C3%A9curit%C3%A9-CCTV-alimentationcam%C3%A9ra/dp/B00B0T5D5W/ref=pd_sim_421_2?ie=UTF8&dpID=41AlQjSzebL&dpSrc=si ms&preST=_AC_UL160_SR160%2C160_&refRID=02VBQ6X1XRY4AF8CC1N9 - Un hub USB avec alimentation externe. Même si le raspberry pi 2 est équipé de 4 ports USB, une fois avoir branché la clé WIFI et un équipement supplémentaire, il n’y a plus assez de jus. J’ai fais une mauvaise expérience en branchant la clé Wifi, une clé 3g et une caméra et j’ai cramé ma clé 3G. Bref, ca coute 15€ : http://www.amazon.fr/D-Link-DUB-ports-pourNoir/dp/B00006B7DA/ref=sr_1_11?ie=UTF8&qid=1451642428&sr=811&keywords=hub+usb+alimentation+externe - Une clé 3G : moi je l’avais déjà : une option icon 505. Mais ce modèle est aussi compatible avec le raspberry. : 42€ WWAN HSDPA UMTS MODEM USB 7.2M : http://www.amazon.fr/Huawei-Nouveau-Original-d%C3%A9verrouill%C3%A9HSDPA/dp/B004UIVIBS/ref=sr_1_6?ie=UTF8&qid=1451642587&sr=86&keywords=cl%C3%A9+3G . Noter qu’il faut une SIM pour pouvoir envoyer et recevoir des SMS. Moi je suis chez Free, j’ai tout compris : donc ca me coute 0€. - Un buzzer puissant : moi j’ai pris un détecteur de fumé avec un bouton test : ça coute qu’une dizaine d’euros et ça balance 60db dans la tronche. C’est alimenté avec une pile de 3V. http://www.amazon.fr/dp/B00U5ZCAU8/ref=asc_df_B00U5ZCAU831065766/?tag=googshop fr21&creative=22698&creativeASIN=B00U5ZCAU8&linkCode=df0&hvdev=c&hvnetw=g&hvqmt Bon, je crois qu’on a fait le tour du matos. Alors on résume : 175 € ! Bon, avec les frais de port, on s’approche des 200€ , surtout si vous commandez en plusieurs fois. Les logiciels : Je veux rien de payant. Tout existe déjà. Il faut juste l’installer, batailler pour le faire fonctionner et l’intégrer. J’ai pris les logiciels suivants : - Raspbian : bon ca c’est l’OS du Raspberry pi 2. Une raspbian jessie. Prenez la distribution NOOB et vous ne serez pas embêté. - Motioneye : Ce soft, basé sur motion est super bien fait. Il permet à travers une interface web de configurer toutes les caméras ; et toutes les options. Motioneye permet d’ajouter des webcams USB ou la PiCAM, des caméras IP et aussi de piloter des webcam placées sur d’autres raspberry. - Les librairies lwiringpi : Ça c’est pour la compilation de notre buzzer qui va utiliser le GPIO du raspberry. - Un serveur Apache + PHP : ça c’est pour la petite interface web que j’ai créé, qui permet de voir les caméras et de l’activer et désactiver simplement. Oui, car ca n’existait pas sur Motioneye et je voulais pouvoir l’activer et désactiver très facilement de n’importe où avec un gros bouton. J’ai donc créé MyAlarm. J’ai ajouté quelques scripts en PHP et bash pour pouvoir réaliser des actions du type : Déclencher le buzzer, ou désactiver l’alarme ou encore recevoir ou envoyer des SMS. - On peut aussi ajouter de la commande vocale. Moi j’ai installée Yana-server : yana est un système de domotique. Moi je ne l’utilise vraiment pas pour ça. Je l’utilise car il y a une application sur Android et sur Windows de reconnaissance vocale (STT) et de synthèse vocale (TTS). J’en ai testé un paquet (surement tous à ce jour). J’ai retenu yana même si Jasper aussi est très prometteur. En ce qui concerne la reconnaissance vocale, il y a beaucoup de chose à savoir et à tester… mais ça fera partie d’un autre tutoriel. Installation de motioneye : Prérequis : Passer en root pour l’ensemble des commandes (sudo su -). sudo echo deb http://www.deb-multimedia.org jessie main non-free >>/etc/apt/sources.list sudo apt-get update sudo apt-get install deb-multimedia-keyring sudo apt-get update Les dépendances : apt-get install motion ffmpeg v4l-utils python-dev python-pip libssl-dev libjpeg-dev libcurl4-openssldev Les dépendances Python: pip install tornado jinja2 pillow pycurl Installation: pip install motioneye mkdir -p /etc/motioneye cp /usr/local/share/motioneye/extra/motioneye.conf.sample /etc/motioneye/motioneye.conf mkdir -p /var/lib/motioneye cp /usr/local/share/motioneye/extra/motioneye.systemd-unit-local /etc/systemd/system/motioneye.service systemctl daemon-reload systemctl enable motioneye systemctl start motioneye Pour être sûr d’avoir la dernière version de motioneye: \ pip install motioneye --upgrade systemctl restart motioneye Configuration de motioneye: A ce stade, vous avez accès à la console d’administration: http://IP_LAN_RASPBERRY:8765 Vous devriez tomber sur la page d’administration. Les identifiants par défaut sont : Login : admin Mot de passe : laisser vide A vous de jouer et d’ajouter des caméras. Pour info une caméra locale aura comme petit nom : /dev/videoX ou X est le numéro de la caméra. Ajouter dans les notifications de chaque caméras, le script de MyAlarm qui permet de réaliser les notifications : Exemple de la caméra du couloir : /var/www/html/MyAlarm/scripts/plan_notification.sh Couloir Le mot clé Couloir permet au script de connaitre quelle caméra a déclenché la notification ; et donc de l’inscrire dans le SMS ou dans le mail. Installation de MyAlarm MyAlarm comporte une interface web (HTML5/CSS3) et des scripts. Les scripts permettent d’ajouter des fonctionnalités tels que la gestion des SMS (envoi : pour dire qu’on a reçu une intrusion, et en réception : pour pouvoir activer ou désactiver l’alarme via l’envoi d’un SMS). Prérequis : apt-get install apache php5 libapache2-mod-php5 cd /var/www/html/ wget http://azertyclub.com/files/Tigrou/MyAlarm.tar tar –xvf MyAlarm.tar . rm MyAlarm.tar cd MyAlarm Configuration de MyAlarm: Editer le fichier de configuration /var/www/html/MyAlarm/config.ini Changer les valeurs des $Cam_image_path. Il s’agit de la dernière image vue par motioneye. Cette variable est donnée dans l’interface de motioneye lors de la mise en place des caméras. <?php $Cam_image_path[]="/picture/1/current/?_username=admin&_signature=ad34415d8830d705cc660 d41a74ea979730c37de"; $Cam_image_path[]="/picture/4/current/?_username=admin&_signature=bc4e1517de7e74b2bc827 5939ea07fefd85bdfcc"; $Cam_image_path[]="/picture/3/current/?_username=admin&_signature=4483494aaec2714ec8bdc 1f3c310f7df850ffa6d"; $video_store_path[]="/alarme/videos/cam1"; $video_store_path[]="/alarme/videos/cam2"; $video_store_path[]="/alarme/videos/cam3"; $cam_name[]="Couloir"; $cam_name[]="Salon"; $cam_name[]="Cuisine"; //Entrer ici votre IP WAN $MyIP="88.188.155.42"; //Entrer ici la liste des adresses mails qui recevront les notifications $notif_mail[]="[email protected]"; $notif_mail[]="[email protected]"; $notif_SMTP="smtp.free.fr"; //Entrer ici la liste des numéros de téléphone qui recevront les notification $notif_tel[]="0606060606"; $notif_tel[]="0606070707"; //Path des scripts. Je vous conseille de ne pas changer le path. $script_path=" /var/www/html/MyAlarm/scripts/"; //notification=1 si vous souhaitez recevoir les notifications; sinon mettre à 0 pour les tests de caméras. $notification=1; Mettre la variable $notification à 0 pour les tests. Nous n’avons pas encore installé tout ce qu’il faut pour les SMS, le buzzer… Lancer l’interface : http://IP_LAN_RASPBERRY/MyAlarm/ Installation de gammu-sms Gammu va permettre d’envoyer des SMS (pour avertir d’une intrusion) mais de piloter également le démarrage et l’extinction de l’alarme. Brancher la clé USB (avec la carte SIM) et lancer les commandes suivantes. apt-get update apt-get install gammu apt-get install gammu-smsd Configuration de gammu-smsd Editer le fichier /etc/gammu-smsrc comme suit : # Configuration file for Gammu SMS Daemon # Gammu library configuration, see gammurc(5) [gammu] # Please configure this! port = /dev/ttyHS0 connection = at # Debugging logformat = textall PIN = 0000 # SMSD configuration, see gammu-smsdrc(5) [smsd] service = files logfile = syslog # Increase for debugging information debuglevel = 1 # Paths where messages are stored inboxpath = /var/spool/gammu/inbox/ outboxpath = /var/spool/gammu/outbox/ sentsmspath = /var/spool/gammu/sent/ errorsmspath = /var/spool/gammu/error/ RunOnReceive=/var/www/html/MyAlarm/scripts/receive_sms.sh PIN = 0000 Dans mon cas, le port de la clé 3G est /dev/ttyHS0. Entrer le code PIN de votre carte SIM. Je l’ai volontairement mis à deux endroits : une fois pour l’envoi, une fois pour la réception. Renseignez comme ci-dessus la cariable RunOnReceive , vers le script de réception des SMS de MyAlarm. Redémarrer gammu-smsd : service gammu-smsd restart Test de gammu-sms Un petit test pour voir si gammu-sms fonctionne. echo « ceci est un test » | gammu-smsd-inject TEXT 0607070707 Si vous recevez, le SMS vous avez gagné ! Un autre test : envoyer un SMS à votre carte SIM en entrant comme message « ping » . Si vous recevez « pong », c’est gagné ! Pour déclencher l’alarme par SMS, envoyer « start ». Pour la stopper, envoyer « stop ». En fait, cela aura pour effet, lors d’un « start » de démarrer motioneye. L’action du « stop » sera d’arrêter le service motioneye et de stopper le buzzer. Installation du Buzzer Bon, le buzzer est un bidouillage maison très facile à réaliser. Le détecteur de fumée est un mécanisme simple équipé d’un bouton de test. Relier l’entrée du bouton de test à la masse et le buzzer sonnera. C’est ce principe que j’ai mis en place en mettant un interrupteur virtuel à la place du fil. J’ai donc utilisé une PIN et la masse du GPIO. Attention : une précaution à prendre est de mesurer la tension entre les 2 bornes de l’interrupteur. J’ai pris un détecteur qui fonctionne en 3V. J’avais une tension de 1,76V. Faites attention que la tension ne dépasse pas 3V ; sans quoi vous allez griller le raspberry en le branchant. Mettez une résistance entre afin de diminuer la tension si c’est la tension est supérieure à 3V. J’ai utilisé le GPIO 0 et la masse. Sur le raspberry pi 2 modele B, la masse et le GPIO sont situés à côté ; respectivement sur les PIN 9 et 11. Donc on relie le PIN9 à la masse du détecteur et le PIN11 à l’autre côté de l’interrupteur. Pour tester, très simplement : /var/www/html/MyAlarm/scripts/Buzzer_start Pour stoper ce maginifique bruit, /var/www/html/MyAlarm/scripts/Buzzer_stop Le code source est fourni dans le même répertoire. Il s’agit tout simplement d’un petit code pour activer GPIO 0 et le désactiver au bout d’une seconde. Vous pouvez ainsi changer le PIN si vous n’utilisez pas le 0, et le délai d’une seconde. Il faudra cependant recompiler : gcc Buzzer_start.c –o Buzzer_start –lwiringPi gcc Buzzer_stop.c –o Buzzer_stop –lwiringPi Installation de yana-server On va essayer de donner un peu de voix à tout ça. Yana-server, à la base, ne sert pas à la reconnaissance et synthèse vocale. Elle permet d’amener de la domotique avec un système de plugin. Cependant, un package pour Windows et Linux permet d’amener la reconnaissance et la synthèse vocale. Ce n’est donc pas le raspberry qui parle, mais un téléphone ou une tablette. Yanaserver permet simplement de programmer des actions ou des sons sur le serveur (raspberry) ou sur le client (le téléphone). La commande d’installation est longue mais installe tout ce qu’il faut : sudo apt-get install git-core && sudo apt-get install sqlite3 && sudo apt-get install php5-sqlite && cd /var/www/html/ && sudo git clone https://github.com/ldleman/yana-server.git /var/www/html/yana-server && sudo chown -R www-data:www-data yana-server && sudo chown root:www-data /var/www/html/yana-server/plugins/radioRelay/radioEmission && sudo chmod +s /var/www/html/yana-server/plugins/radioRelay/radioEmission Configuration de yana-server Se connecter à l’interface : http://IP_LAN_RASPBERRY/yana-server/ Suivez le formulaire d’inscription. A la fin de l’installation supprimer le fichier install.php. Pour installer yana sur votre Android, allez sur le play store , télépcharger yana. Configurer-le. Je ne documentairerai pas la partie de configuration, car elle est très simple. Ajout du module MyAlarm à yana-server : cd /var/www/html/yana-server/plugins/ wget http://www.azertyclub.com/files/Tigrou/YS-alarme.tar tar –xvf YS-alarme.tar Il ne manque plus qu’activer le module dans yana-server depuis l’interface d’administration (configuration->plugins->Inactifs puis Activer) et à tester en disant à yana, « YANA, activation de l’alarme » par exemple. (Bon, moi je l’ai appelé Jarvis et pas Yana ! Pour cela, regarder sur le site http://projet.idleman.fr/yana/ , pour suivre les instructions de renommage de Yana). Tests de l’ensemble : Maintenant, vous pouvez activer les notifications dans MyAlarm en editant le fichier /var/www/html/MyAlarm/config.ini . Passer la variable $notification à 1. Démarrer la surveillance en allant sur l’interface http://IP_LAN_RASPBERRY/MyAlarm/ et en activant l’alarme. Passez deant la caméra ; vous devriez au bout de quelques secondes recevoir un mail et un SMS. Conclusion Voilà, pour moins de 200€, vous avez un système de vidéo surveillance et une alarme. Il faudra cependant sécuriser la solution. En effet, puisque le système est ouvert depuis l’extérieur (pensez à rediriger le port 80 de votre box internet), il faudra sécuriser la solution. Pour MyAlarm, penser à faire un fichier .htaccess et un fichier .htpassword. en suivant cette procédure : https://shop.alterlinks.com/htpasswd/passwd.php . N’hésitez pas à me contacter si vous avez un soucis à mettre en œuvre ce tutoriel. [email protected]