Introduction:
Un projet à présenter lors de la soirée raspberry pi du
LUG dont je suis membre... Bon je vais pas faire un mediacenter ou une machine de retrogaming trop classique. Faisons quelqu chose qui a du sens avec une raspberry qui est économe en énergie et en prix. Un système de vidéo-surveillance à petit prix et faible consommation d'énergie. 40€ pour le raspberry pi 2, 10-20-30€ pour un switch ethernet gigabit d'occasion, 4-6€ pour une carte SD 8Go classe 10, un point d'accès wifi soit 20-40 € d'occasion et enfin le vieux smartphone qui traîne au fond d'un tiroir sinon quelques dizaines d'euros, quelques câbles UTP et un microusb avec plug 220V. En avant...
Matériel:
Un raspberry pi 2 ou 3 fonctionnel (carte microSD 8 go classe 10, alimentation électrique via micro USB et un boîtier)
Un point d'accès wifi
Un commutateur ethernet
2 câbles UTP cat 5 ou supérieur
Un smartphone android avec wifi et caméra
Pendant la phase de configuration seulement:
un clavier et une souris usb
un moniteur hdmi
un câble HDMI
Installer le système d'exploitation sur le raspberry:
Installer la dernière version de raspbian (debian optimisé pour raspberry pi) sur le raspberry, la version jessie-lite, à la date de mai 2016, pas besoin d'interface graphique.
On trouve cette image à cette adresse:
http://raspbian-france.fr/telechargements/
Voir ce lien pour la procédure de copie de l'image de raspbian sur la carte micro sd à partir d'une machine Linux:
https://www.raspberrypi.org/documentation/installation/installing-images/linux.md
Configuration de base du raspberry
Raspbian est configuré via l'outil raspi-config via la commande:
sudo raspi-config:
Pour un système vivant en Belgique voilà les points à configurer
expand filesystem, langue fr_BE.UTF-8 UTF-8, timezone Europe/Brussel,
clavier azerty belge (garder les options par défaut à priori), ssh
actif, changer le mot de passe par défaut (pi/raspberry)
Pour une configuration standard on peut suivre ce guide (prévu pour un clavier français):
http://raspbian-france.fr/installer-raspbian-premier-demarrage-configuration/
Attention on a installé la version jessie-lite donc pas d'interface graphique donc pas de startx à la différence du guide ci-dessus
Schéma du réseau:
Mon système vient se greffer sur un réseau avec une passerelle (routeur) en 10.0.0.254 qui distribue par DHCP des adresses dans le range 10.0.0.1 à 10.0.0.128. Je vais donc configurer les différents éléments constitutifs de mon réseau avec des adresse ip fixes en partant de 253 et en descendant. On peut aussi fixer la distribution des adresses IP via le serveur DHCP en fonction de l'adresse MAC pour toujours donner la même adresse mais je souhaite pouvoir avoir une solution indépendante de la passerelle.
Point d'accès wifi en 10.0.0.253
raspberry en 10.0.0.252
caméra/smartphones 10.0.0.251 250 etc...
La passerelle est 10.0.0.254
Serveurs DNS 10.0.0.254 et 8.8.8.8
Installation de zoneminder avec raspbian-lite jessie 64 bits
Inspiré et traduit de
https://wiki.zoneminder.com/Raspbian
Attention si vous suivez le wiki de zoneminder à la date de mai 2016, il y a des choses à modifier sur jessie-lite notamment la configuration de l'adresse ip statique qui ne fonctionne pas si on suit le wiki, à priori ici il suffit de copier les commandes...Par contre je ne reprends pas les adaptations pour supporter l'horreur made in Redmond comme navigateur pour consulter Zoneminder, Firefox ou un autre navigateur open-source sera parfaitement fonctionnel.
Configurer l'IP en statique
sudo nano /etc/dhcpcd.conf
ajouter à la fin du fichier:
interface eth0
static ip_address=10.0.0.252/24
static routers=10.0.0.254
static domain_name_servers=10.0.0.254 8.8.8.8
sudo nano /etc/network/interfaces
iface eth0 inet static au lieu de iface eth0 inet manual
Mise à jour de raspbian
sudo apt-get update
sudoapt-get upgrade
sudo apt-get dist-upgrade
Ajout du dépôt Debian Jessie backports
sudo nano /etc/apt/sources.list
y ajouter:
deb http://http.debian.net/debian jessie-backports main
Ctrl+o Enter to save
CTRL+x to exit
Mettre la priorité à ce dépôt
sudo nano /etc/apt/preferences.d/zoneminder
mettre ceci dans ce nouveau fichier:
Package: *
Pin: origin http.debian.net
Pin-Priority: 1100
Ctrl+o Enter to save
CTRL+x to exit
Importer les clés pour signature du dépôt:
gpg --keyserver pgpkeys.mit.edu --recv-key 8B48AD6246925553
gpg -a --export 8B48AD6246925553 | sudo apt-key add -
gpg --keyserver pgpkeys.mit.edu --recv-key 7638D0442B90D010
gpg -a --export 7638D0442B90D010 | sudo apt-key add -
Prise en compte du nouveau dépôt
sudo apt-get update
Une nouvelle mise à jour pour la route ;o):
sudo apt-get upgrade
sudo apt-get dist-upgrade
MariaDB (mariadb-server) a ma préférence, mais en attendant pour pouvoir présenter
un tout fonctionnel à la réunion de mon LUG je reste à MySQL:
sudo apt-get install php5 mysql-server php-pear php5-mysql
Voilà ZoneMinder:
sudo apt-get install zoneminder
Quelques compléments:
sudo apt-get install libvlc-dev libvlccore-dev vlc
Création de la base de données Zoneminder dans MySQL et aussi de l'utilisateur par défaut Zoneminder et les permissions dans MySQL.
sudo cd /root
Création d'un fichier caché pour le mot de passe
sudo nano .my.cnf
Entrer les informations suivantes (remplacer par le mot de passe choisi)
[client]
user=root
password=(motdepassechoisisql)
Ctrl+o Enter to save
CTRL+x to exit
Create database (press ENTER after each command)
sudo mysql < /usr/share/zoneminder/db/zm_create.sql
sudo mysql -e "grant select,insert,update,delete,create on zm.* to 'zmuser'@localhost identified by 'zmpass';"
Supprimer le fichier caché contenant le mot de passe
sudo rm .my.cnf
Définir les permissions pour /etc/zm/zm.conf à root:www-data 740
sudo chmod 740 /etc/zm/zm.conf
sudo chown root:www-data /etc/zm/zm.conf
Zoneminder démarre automatiquement au démarrage de la machine
systemctl enable zoneminder.service
Add www-data to the sudo group (to enable use of local video devices)
adduser www-data video
Démarrer Zoneminder
systemctl start zoneminder.service
Vérifier que Zoneminder est bien démarré
systemctl status zoneminder.service
Activer CGI et Zoneminder dans la configuration d'Apache.
a2enmod cgi
a2enconf zoneminder
Vérifiez ( sudo nano /etc/php5/apache2/php.ini) le fichier /etc/php5/apache2/php.ini il devrait contenir ceci:
[Date]
; Defines the default timezone used by the date functions
;
http://php.net/date.timezone
date.timezone = Europe/Brussels
Il faut enlever le ";" avant date.timezone...et adapter à votre zone Europe/Paris etc...
Redémarrer Apache
service apache2 restart
A partir de Firefox ou autre navigateur respectueux des standards du web:
http://10.0.0.252/zm
Aller dans le menu Paths
Changer PATH_ZMS de /cgi-bin/nph-zms en /zm/cgi-bin/nph-zms si nécessaire et sauver
Optionnel: changer PATH_SWAP en /dev/shm (processus mis en RAM drive) et sauver
Redémarrer le système pour vérifier que tout se lance au démarrage
Se reconnecter à l'interface web de Zoneminder
On passe à l'ajout d'une caméra extérieure
Un vieux smartphone android est aussi une caméra wifi sur batteries...
1. Installer IP Webcam sur le smartphone android.
2. Se connecter au point d'accès wifi en définissant une adresse ip fixe pour le smartphone 10.0.0.251 dans notre cas ( détails pour configurer une adresse ip fixe sous Android
http://www.androidpit.fr/comment-configurer-adresse-ip-statique-android )
En version rapide:
Dans les paramètres Android, rubrique wifi
choisissez le réseau pour lequel vous voulez changer l'IP en IP fixe.
Effectuez un appui long sur le nom du réseau, puis choisissez
Modifier le réseau.
Faites défiler vers le bas et activez "Afficher les options avancées" en cochant la case adéquate.
Changer
Protocole DHCP par Statique
puis définir adresse IP (10.0.0.251 dans notre cas), masque( /24 ou 255.255.255.0 selon la notation), passerelle (10.0.0.254) et serveurs DNS (10.0.0.254 et 8.8.8.8) .
3.Ouvrir l'application IP Webcam et activez le serveur par défaut il sera lancé à l'adresse ip fixée à l'étape 2 and go through the menu and activate the
server.Now you can view the IP address of the phone and the port number
on the screen.Write down the IP Address an
d the port .(my IP Address and
port 192.168.1.3:8080)
4. Ajouter un "monitor" dans la console Zoneminder
Remplir les sous-menus general et source avec les paramètres qui vont bien ;o)
Dans notre cas, les sous-menu general et source ressembleront à (sachant que mon vieux smartphone est de marque jiayu):
5.On redémarre Zoneminder via l'interface web. Il suffit depuis la page web d'accueil de ZM de cliquer sur le nom de la caméra pour visualiser l'image.
6. N'oubliez pas de laisser le smartphone/camera branché sur le 220 V et ce dans un endroit frais et ventilé
Voilà on a un début de solution fonctionnelle...
Pour accéder à ZM http://10.0.0.252/zm depuis votre navigateur web ou depuis android cela vaut le coup de télécharger l'application Zm View
A faire (sera peut-être ajouté un jour repassez voir...):
Mettre le raspberry sur batterie et avec un accès à Internet via une clé usb 3G/4G pour être autonome
Peaufiner la configuration des alarmes dans zoneminder
Configurer une caméra USB directement branchée sur le raspberry et utiliser une pi cam
Remplacer apache par Nginx pour ces raisons
https://www.wikivs.com/wiki/apache_vs_nginx
Remplacer MySQL par MariaDB pour ces raisons
https://seravo.fi/2015/10-reasons-to-migrate-to-mariadb-if-still-using-mysql
Remplacer IP Webcam par une application open-source
Merci d'avance pour vos commentaires constructifs et vos correctifs