Tous ceux qui se sont renseignés un minimum sur la gestion logicielle d’un système de vidéo surveillance seront tombés à un moment ou un autre sur Zoneminder. J’avais moi même découvert Zoneminder il y a quelques années, mais à ce moment là je trouvais cela trop compliqué. Aujourd’hui, il est enfin installé chez moi, et je dois dire que ce soft est tout simplement excellent !
Cet outil nécessitant un système Linux, je vous en ai fait un tutorial afin de pouvoir l’installer facilement.
[toc title= »Sommaire »]
I. Présentation de Zoneminder
Zoneminder est une solution open source de vidéo surveillance, acceptant des sources vidéo de toute sorte, qu’elles soient analogiques (connectées via une carte d’acquisition), des webcams, ou encore des caméras réseau.
Zoneminder s’occupe de récupérer les flux vidéo, les analyse, les enregistre, et est capable d’envoyer les images capturées sur un serveur déporté via FTP ou SMTP (mail). Il dispose également d’un serveur web dédié permettant de consulter les images et vidéos capturées ainsi que de contrôler le système de vidéo surveillance.
Zoneminder peut controler des caméras motorisées, et même controler des modules X10 (pratique par exemple pour allumer la lumière si un mouvement est détecté sur une caméra).
Pour fonctionner, Zoneminder nécessite un ordinateur (idéalement de faible consommation étant donné qu’il ne sera jamais éteint) sous système GNU/Linux et disposant d’au moins 1 Go de mémoire vive. Zoneminder est également optimisé pour les systèmes multi-coeurs en affectant la gestion d’une caméra par thread. Concernant l’espace disque nécessaire, cela dépend de vos besoins: gardez en mémoire que l’espace disque employé sera forcément important si vous utilisez la fonction enregistrement des caméras.
II. Installation de l’OS Linux
Zoneminder peut être installé sur un ordinateur qui lui sera consacré, mais également sous forme de machine virtuelle, si la machine l’hébergeant est suffisamment puissante, et si on n’utilise que des caméras IP. Car pour des caméras analogiques, une carte d’acquisition vidéo sera nécessaire, et elle ne sera pas reconnue dans une machine virtuelle. La parade est d’utiliser un petit boitier comme l’Aviosys 9100, qui permet de transformer jusqu’à 4 caméras analogiques en IP (je vous invite à lire mon tutorial sur la vidéo surveillance low cost, à ce sujet).
Pour ma part, pour ne pas multiplier les serveurs chez moi, et donc également multiplier la consommation électrique, j’ai préféré l’installer sous forme de machine virtuelle sur mon serveur WHS.
J’ai donc installé Vmware Server, qui est gratuit, sur mon Windows Home Server. A partir de là, j’ai créé une machine virtuelle avec 40Go de disque dur, et 1Go de Ram. Le reste de l’installation se passe comme pour n’importe quel PC physique: on insère le CD et on lance l’installation.
Zoneminder existe sur la plupart des distributions Linux. J’ai sélectionné la version Ubuntu Server 10.04 LTS (la 10.10 n’était pas encore sortie lors de mes tests), pour sa facilité d’installation, sa fiabilité, et sa légèreté, aucune interface graphique n’étant installée par défaut. Nous économisons ainsi les ressources systèmes pour ce qui est vraiment utile.
Une fois Ubuntu téléchargé, on peut soit le graver sur un CD, soit utiliser directement l’ISO si on l’installe sur une machine virtuelle. Dans les deux cas, l’installation est identique.
On commence par sélectionner la langue d’installation:
Puis on lance l’installation d’Ubuntu Server.
On indique son pays, qui normalement sera sélectionné automatiquement
Et la configuration du clavier
On donne un nom à sa machine, ici je la nomme simplement Zoneminder
Puis on configure le fuseau horaire, qui normalement doit être correct par défaut
Enfin, vient le partitionnement des disques durs. Le mode assisté est très pratique et évite de se poser trop de questions. Dans mon cas, je souhaite utiliser tout le disque dur:
J’indique le disque dur à utiliser
Et je confirme:
Et je reconfirme que je veux utiliser tout l’espace:
L’installation peut alors commencer:
On crée ensuite un utilisateur:
Pas besoin ici de chiffrer son dossier personnel
Et pour ma part j’ai désactivé les mises à jour automatiques. Une fois qu’un système est stable, je préfère désactiver les mises à jour, qui viennent parfois mettre la pagaille plus qu’autre chose.
Enfin, il nous est proposé d’installer des applications supplémentaires, mais je préfère passer l’étape, pour garder le système aussi léger que possible.
Enfin, on confirme l’installation de Grub sur le secteur d’amorcage afin de pouvoir démarrer le système.
L’installation est terminée. Elle ne prend que quelques minutes (j’y ai passé là moins de 10 min). On enlève le CD d’installation, et on redémarre.
Voilà, le système est installé ! On tape son nom d’utilisateur défini lors de l’installation, ainsi que son mot de passe (pour les novices sous Linux, quand on tape son mot de passe, rien n’apparait à l’écran, c’est tout à fait normal ;-) )
Une fois logué, on obtient quelques statistiques sur son système: mémoire utilisée, disque dur…
On va maintenant chercher la liste des packages à jour en tapant la commande
sudo apt-get update
Cela va nous permettre de mettre à jour le système en tapant ensuite
sudo apt-get upgrade
Enfin, pour faciliter l’accès distant au serveur, nous installons un serveur SSH. Cela permettra de se connecter d’un autre poste distant à l’aide d’un logiciel comme Putty, par exemple, sans avoir besoin d’aller sur le serveur linux lui même (ca permet de se passer d’écran et de clavier sur le serveur, notamment).
On tape la commande
sudo apt-get install openssh-server
puis on confirme l’installation.
Voilà, l’installation du système d’exploitation est terminée. Ca peut paraitre long comme ca, mais c’est en fait relativement rapide. J’ai volontairement détaillé ici les différents écrans pour ceux qui ne sont pas familiarisés avec Linux et les lignes de commande.
Nous allons maintenant passer à l’installation de Zoneminder.
III. Installation de Zoneminder
L’installation se passe de la même facon que pour openssh. On tape la commande
sudo apt-get install zoneminder
puis on confirme l’installation
Là, tous les packages nécessaires à Zoneminder (Apache, mySQL, etc…) vont être automatiquement récupérés, ce qui est fort pratique !
Lorsque l’installation de mySQL vous demande un mot de passe, ne rien indiquer (la demande est faite plusieurs fois pendant l’installation).
On peut au cours de l’installation configurer l'email du système. On donne un nom, ici Zoneminder
Puis on indique le serveur SMTP à utiliser, avec l’utilisateur et le mot de passe si jamais votre fournisseur demande une identification.
Une fois l’installation de Zoneminder terminée, on configure Apache, qui sera utilisé pour afficher l’interface Web de Zoneminder.
On va éditer le fichier apache.conf en tapant
sudo vi /etc/zm/apache.conf
Il faut ajouter la ligne
Alias /cgi-bin /usr/share/zoneminder/cgi-bin
juste après la ligne Alias /zm . Pour ceux qui n’ont jamais utilisé l’éditeur vi, c’est un peu particulier. On trouve les explications sur internet, mais les principales commandes sont:
- Echap, puis A: pour entrer en mode insertion. On peut alors éditer le fichier
- Une fois fini, on refait Echap pour entrer en mode fonctions, puis on tape :w (la commande va s’inscrire en bas de l’écran) pour enregistrer les modifications
- Enfin, :q pour quitter l’éditeur vi.
Cette modification est nécessaire pour que le streaming fonctionne.
Ensuite, on crée un lien entre le fichier apache.conf de Zoneminder et la configuration d’Apache:
sudo ln -s /etc/zm/apache.conf /etc/apache2/conf.d/zoneminder.conf
On ajoute l’utilisateur www-data (utilisateur utilisé par Apache) au groupe video pour qu’il ait les bons droits d’accès:
sudo adduser www-data video
Une dernière modification à faire sur le fichier sysctl.conf pour la gestion de la mémoire. On tape donc
sudo vi /etc/sysctl.conf
et on ajoute à la fin
kernel.shmall = 512000
kernel.shmmax = 500000000
shmmax correspond à la moitié de ma mémoire physique. On peut modifier cela, tant que la valeur ne dépasse pas la taille de la mémoire physique qu’on a réellement.
Il n’y a plus qu’à rebooter le système:
sudo reboot
Zoneminder devrait se lancer automatiquement au redémarrage. Une fois le serveur redémarré, vous avez sur la page d’accueil l’adresse IP du serveur.
En tapant dans un navigateur web http://adresseipduserveurubuntu/zm , on accède à l’interface web de Zoneminder ! L’installation est terminée :D
IV. Configuration de Zoneminder
La page d’accueil est relativement austère, présentant très peu de fonctions.
Nous allons tout d’abord faire un tour du côté des options (disponible en haut à droite). Plusieurs onglets sont disponibles, la plupart des options par défaut étant très correctes.
On peut toutefois vouloir passer l’interface en francais (pour ma part elle reste en anglais, car je trouve la traduction francaise assez incomplète… j’en ferai peut être une plus tard pour avoir quelque chose de propre ;-)), mais surtout activer l’authentification, car par défaut, tout le monde peut se connecter à Zoneminder.
Une fois l’authentification activée, le système demandera à être redémarré pour activer les modifications. Et il vous demandera de vous logguer. Par défaut, le login est « admin », idem pour le mot de passe. Une fois redémarré, on peut configurer les utilisateurs, en retournant dans les options: un onglet « Users » est apparu.
On peut ici créer autant d’utilisateurs que nécessaire, et définir les droits de facon assez précise: à quelle caméra, à quel type de surveillance, au streaming, etc…
Ensuite, on peut renseigner les paramètres email pour recevoir les notifications lors d’alertes (sur détection de mouvement).
Tout comme définir les paramètres du serveur FTP si on souhaite que Zoneminder envoie les photos sur un serveur externe lors d’une détection de mouvement.
C’est quelque chose que je conseille vivement: imaginez un cambriolage, vos caméras enregistrent l’intrusion, mais les voleurs emmènent également vos ordinateurs, et peut être aussi votre serveur ! Vous n’aurez plus aucun enregistrement disponible. Si c’est stocké sur un serveur externe, vous êtes sauvés !
Je n’expliquerai pas les autres options ici, car la liste est longue, et le paramétrage par défaut convient parfaitement à la plupart des configurations.
Il faut ensuite ajouter quelques caméras pour apprécier les capacités de Zoneminder. En cliquant sur « Add New Monitor », nous allons donc pouvoir configurer la première caméra:
On donne un nom à la caméra, puis on sélectionne son type: local pour une caméra analogique reliée à une carte d’acquisition, ou une webcam; remote pour une caméra IP; File pour l’accès à un fichier image directement; et Ffmpeg pour un flux vidéo streamé.
On sélectionne ensuite la fonction: Monitor pour juste visualiser la caméra, Modect pour un enregistrement sur détection de mouvement, Record pour un enregistrement en continu, etc..
Ensuite, il faut bien cocher « Enabled » pour activer la caméra.
Petite astuce: Zoneminder connait déjà bon nombre de caméras. En cliquant sur « Presets », une liste de caméras reconnues apparait. On sélectionne son modèle, et tous les réglages se font automatiquement !
Dans le cas de mon installation avec le convertisseur Aviosys, j’ai dû entrer moi même les paramètres. J’ai donc sélectionné Remote.
Sur l’onglet suivant, on configure l’accès à la caméra. Cet onglet varie en fonction du type de caméra sélectionné. Ici, pour une caméra IP, on indique l’adresse IP, le port, et le chemin.
Il faut ensuite indiquer la taille de la capture: attention, il faut renseigner la taille d’image réellement configurée sur votre caméra, sous peine d’avoir une image noire.
Il est également possible de retourner l’image dans le sens souhaité, si jamais la caméra n’était pas installée droite ! (consomme toutefois un peu plus de ressources)
Les autres onglets concernent des paramètres plus techniques, tels que le nombre d’image par seconde pour la visualisation, l’enregistrement, etc…
On répète l’opération pour toutes les caméras souhaitées:
Si tout s’est bien passé, les caméras doivent apparaitre en orange. Si une ligne est rouge, la caméra n’est pas reconnue (ca peut arriver bêtement si la taille de l’image renseignée n’est pas bonne).
A partir de là, si on clique sur le nom d’une caméra, on peut l’afficher en direct:
En haut à droite, on peut également visualiser les caméras en boucle (cycle) ou afficher une page les regroupant toutes:
Si on souhaite faire de la détection de mouvement, il est possible de définir des zones à surveiller sur chaque caméra. On clique sur le chiffre de la caméra dans la colonne Zones (le chiffre correspond au nombre de zone définies). On accède à un appercu des zones définies:
On peut alors ajouter différentes zones de détection:
L’utilisation est assez simple: on commence avec 4 points à positionner sur l’image, qui forment une zone à surveiller. Si la zone est un peu complexe, on peut ajouter d’autres points (en cliquant sur le + de la colonne action).
Ensuite, on peut affiner la détection en indiquant le pourcentage de variation, car la détection est faite en comparant les images les unes aux autres.
Pour passer en mode détection, il n’y a plus qu’à retourner sur le paramétrage de la caméra souhaitée en cliquant sur son adresse IP, puis sélectionner le mode Modect. La caméra devrait passer en vert pour indiquer qu’elle est en fonctionnement.
Pour faciliter le passage entre différents modes, il est possible de paramétrer des états différents. On configure chaque caméra dans l’état souhaité, par exemple ici je souhaite une détection de mouvement sur trois caméras en particulier, j’ai donc activé le mode Modect pour chacune d’elle (caméras en vert):
En cliquant ensuite sur le status « Running » (ou « Stop », selon le cas) dans le titre de la page, à côté de « Zoneminder Console », on accède à la liste des états. On peut saisir un nom et cliquer sur « Save » pour créer un état, correspondant à l’état actuel de toutes les caméras:
On procède ainsi pour les différents états qu’on souhaite. Ainsi, en deux clics, on peut facilement passer toutes les caméras d’un état à l’autre, en le sélectionnant dans la liste déroulante, puis en cliquant sur Apply:
Une fois que les premières détections de mouvement ont eu lieu, on peut voir le nombre de détection pour la dernière heure, le dernier jour, etc… directement sur la console:
En cliquant sur l’un des chiffres, on accède à la liste des évènements enregistrés durant la période sélectionnée:
On retrouve dans cette liste l’heure de l’alerte, sa durée, le nombre d’images, etc… La colonne Total Score donne un bon appercu de l’importance de la détection (plus le chiffre est élevé, plus il y a eu de mouvement important, ce qui permet de distinguer les vraies alertes du passage d’un chat, par exemple). En cliquant sur le nom de l’évènement, on arrive sur une page permettant de visionner l’évènement, en vidéo ou image par image, de le renommer pour plus de clarté, de l’archiver, de le télécharger, etc…:
Une autre vue, que j’apprécie beaucoup, est la vue sous forme de barre de temps, disponible à partir de la liste des évènements:
Chaque barre rouge représente un mouvement, plus ou moins important. En passant la souris dessus, on obtient un appercu de l’alerte. Si on clique dessus, on entre dans le détail. C’est très pratique par exemple quand on rentre d’une semaine de vacances, et qu’on veut regarder ce qu’il s’est passé: au lieu de regarder évènement par évènement, on passe tranquillement la souris pour avoir un appercu en accéléré de tout ce qu’il s’est passé.
Toutes ces actions sont également disponibles via une interface pour téléphone mobile. En tapant l’adresse http://adresseip/zm/index.php?skin=mobile, on accède à une interface allégée:
Page d’accueil, avec liste des derniers évènements et statut des caméras
Détail des alertes
Visualisation d’une caméra
V. Zoneminder et le système domotique
De base, Zoneminder est capable d’utiliser un controleur CM11 afin de controler des modules X10. Un détecteur de présence X10 pourrait donc tout à fait déclencher l’enregistrement des caméras dans Zoneminder.
N’ayant plus de controleur de ce type depuis longtemps, je n’ai pas pu tester. Disons que la possibilité existe, à voir si elle fonctionne convenablement.
Pour ma part, ce qui m’intéresse ici est de pouvoir controler Zoneminder à partir de Homeseer. En cherchant bien, cela est possible via une commande qui existe dans Zoneminder: zmpkg.pl
Cette commande sert à mettre Zoneminder dans un état particulier, état que nous avons configuré précédemment (mode Surveillance, par exemple).
Si on tape la commande
zmpkg.pl Surveillance
cela a pour effet de mettre en mode de détection de mouvement les trois caméras que j’ai définies. On peut donc créer autant d’états qu’on le souhaite, un état par caméra si on ne veut activer qu’une caméra. Par exemple, je peux créer un état où toutes mes caméras sont en standby, avec seulement la caméra de l’entrée en mode détection de mouvement. Si je nomme cette état Entree, et que je lance la commande
zmpkg.pl Entree
Je lance l’enregistrement de la caméra de l’entrée !
Le plus dur maintenant est de permettre à Homeseer d’envoyer cette commande au serveur Zoneminder. Cela va être faisable grace à un petit utilitaire, plink, un composant de Putty, qui permet d’envoyer des commandes SSH en ligne de commande. On peut normalement envoyer plusieurs commandes à la chaine via Putty, mais pour je ne sais quelle raison, je n’ai jamais réussi à lancer une connexion, me logguer en administrateur, puis lancer la commande. J’ai donc effectué une première modification sur le serveur Zoneminder, afin que mon utilisateur n’ait pas besoin de mot de passe root pour lancer la commande zmpkg.
Pour cela, il faut éditer le fichier sudoers, en tapant la commande:
sudo EDITOR=/usr/bin/nano visudo
Tout en bas du fichier j’ai ajouté
monutilisateur ALL= NOPASSWD: /usr/bin/zmpkg.pl
Une fois cette modification faite, Homeseer peut envoyer des ordres à Zoneminder très facilement. Il suffit de créer un event, de choisir comme type d’action à effectuer « Launch Application », puis de mettre en paramètres:
Pour lancer ici l’enregistrement de mes trois caméras. On peut donc déclencher des actions sur Zoneminder sur n’importe quel trigger disponible dans Homeseer: détection de mouvement, heure précise de la journée, ouverture d’une porte, etc…
Voilà notre serveur de vidéo surveillance pilotable à partir du système domotique :D
Bien sûr, je n’ai pas fait le tour ici de toutes les possibilités de Zoneminder, tant ce logiciel est puissant. Controle de caméras motorisées, plugins tierces, interfaces personnalisées par des utilisateurs, etc… il y aurait encore beaucoup à dire. Mais nous aurons vu ici le principal: un logiciel très complet, gratuit, qui fait très bien son travail !
4 réactions
Bonjour,
Merci pour le tuto.
Cependant j’aimerai savoir s’il est possible d’utiliser son webcam sous zoneminder pour des captures ?
En attente de vos retour, merci et bonne journée…
Bonjour, super tuto . au niveau de l’install tout s’est déroulé correctement. J’utilise Zoneminder 1.29.0 sous ubuntu server 14.04. J’ai des caméras d-link, dans zone minder je respecte les données des cam d-link , la ligne apparait bien en vert mais lorsque je clique sur la cam elle ouvre une nouvelle fenêtre mais aucune video n’apparait…:( avez-vous une solution à ce problème.?
edit : Jajouterais que lorsque je clique sur zone une image figée s’affiche tout à fait normalement.
il y a bien une détection de mouvement qui se fait car je vois bien les différentes alertes. cependant je ne peux pas les lire vu qu’il n’y a pas de flux video à afficher.
Me manquerait il des codecs sur le serveur?
Bonjour, je suis en train d’installer Zoneminder sous Linux Mint. L’instalation de Linux s’est passée sans problème (je suis nouveau avec Linux) mais je viens de caler sur,la ligne :
sudo vi/etc/zm/apache.conf
j’ai la réponse comme quoi cette commande ne fonctionne pas.
Merci de votre aide
Salut, connecte toi en root (pour cela fait envoi la commande => su). Ensuite envoi la commande => apt install sudo
Cela va t’installer le package sudo