Gérer ses caméras avec Zoneminder

Cédric
4 novembre 2010

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:

 

Image 3

Puis on lance l’installation d’Ubuntu Server.

 

Image 4

On indique son pays, qui normalement sera sélectionné automatiquement

 

Image 5

Et la configuration du clavier

 

Image 6

On donne un nom à sa machine, ici je la nomme simplement Zoneminder

 

Image 7

Puis on configure le fuseau horaire, qui normalement doit être correct par défaut

 

Image 8

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:

 

Image 9

J’indique le disque dur à utiliser

 

Image 10

Et je confirme:

 

Image 11

Et je reconfirme que je veux utiliser tout l’espace:

 

Image 12

Image 13

L’installation peut alors commencer:

 

Image 14

On crée ensuite un utilisateur:

 

Image 15

Pas besoin ici de chiffrer son dossier personnel

 

Image 16

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.

 

Capture d’écran 2010 10 07 à 23.23.29

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.

 

Capture d’écran 2010 10 07 à 23.25.18

Capture d’écran 2010 10 07 à 23.27.19

Enfin, on confirme l’installation de Grub sur le secteur d’amorcage afin de pouvoir démarrer le système.

 

Capture d’écran 2010 10 07 à 23.28.57

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.

 

Capture d’écran 2010 10 07 à 23.29.31

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 ;-) )

 

Capture d’écran 2010 10 07 à 23.34.01

Une fois logué, on obtient quelques statistiques sur son système: mémoire utilisée, disque dur…

 

Capture d’écran 2010 10 07 à 23.34.55

On va maintenant chercher la liste des packages à jour en tapant la commande

 

sudo apt-get update

 

Capture d’écran 2010 10 07 à 23.36.01

Cela va nous permettre de mettre à jour le système en tapant ensuite

 

sudo apt-get upgrade

 

Capture d’écran 2010 10 07 à 23.36.34

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.

 

Capture d’écran 2010 10 07 à 23.48.16

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

 

Capture d’écran 2010 10 07 à 23.50.05

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).

 

Capture d’écran 2010 10 08 à 07.10.06

On peut au cours de l’installation configurer l'email du système. On donne un nom, ici Zoneminder

 

Capture d’écran 2010 10 08 à 07.10.27

Puis on indique le serveur SMTP à utiliser, avec l’utilisateur et le mot de passe si jamais votre fournisseur demande une identification.

 

Capture d’écran 2010 10 08 à 07.11.07

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

Image 17

 

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

Image 19

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

Image 20

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

Image 22

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

 

Image 25

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.

 

zoneminder01

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.

 

zoneminder04

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).

 

zoneminder02

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 !

 

zoneminder03

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:

 

Capture d’écran 2010 11 02 à 21.17.25

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 !

 

zoneminder05

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.

 

Capture d’écran 2010 11 02 à 21.17.39

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:

 

Capture d’écran 2010 11 02 à 21.32.55

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:

 

Capture d’écran 2010 11 02 à 21.41.211

En haut à droite, on peut également visualiser les caméras en boucle (cycle) ou afficher une page les regroupant toutes:

 

Capture d’écran 2010 11 02 à 21.37.35

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:

 

zoneminder06

On peut alors ajouter différentes zones de détection:

 

zoneminder07

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):

 

Capture d’écran 2010 11 02 à 22.03.46

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:

 

Capture d’écran 2010 11 02 à 22.04.08

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:

 

Capture d’écran 2010 11 02 à 22.04.32

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:

 

zoneminder08

En cliquant sur l’un des chiffres, on accède à la liste des évènements enregistrés durant la période sélectionnée:

 

zoneminder09

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…:

 

zoneminder11

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:

 

zoneminder10

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:

 

IMG 0018

Page d’accueil, avec liste des derniers évènements et statut des caméras

IMG 0019

Détail des alertes

IMG 0020

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.

 

zoneminder15

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

zoneminder17

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:

 

zoneminder16

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 !

share Partager

Ces articles pourraient aussi vous intéresser:

20 Astuces pour sécuriser sa maison avant de partir en vacances !

Je vous propose ici 20 points à vérifier pour sécuriser votre maison avant de partir en vacances, histoire de partir plus serein.

Une porte d'entrée blindée pour la maison ? Les choses à savoir...

Une porte blindée pour votre logement ? C'est possible ! Certaines choses sont toutefois à connaitre pour bien la choisir...

Sécurisez facilement une baie vitrée grâce à ce verrou pour baie coulissante !

Bien que très pratique, une baie vitrée est une vraie passoire en sécurité. Mais ce verrou pour baie coulissante est parfait pour remédier à cela !

4 réactions

balamine gassama
10 décembre 2015

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…

maikeul k
27 avril 2016

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?

Daniel Kousen
28 mars 2018

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

Alexandre
31 mars 2018

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

Votre réaction
Nom
Adresse de messagerie
Site internet