<?xml version="1.0" encoding="ISO-8859-1"?><!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN" "http://www.docbook.org/xml/4.2/docbookx.dtd">
<article lang="fr">
<articleinfo>
  <title>Mise en place d'un système de vidéo surveillance avec ZoneMinder</title> 
  <subtitle>Mise en place d'un système de vidéo surveillance IP à l'aide du logiciels libre ZoneMinder</subtitle>
  <authorgroup>
  <author>
        <firstname>Nowicki</firstname>
        <surname>Christophe</surname>
        <email>cscm@csquad.org</email>
  </author>
  </authorgroup>
  <keywordset>
        <keyword>Linux</keyword>
        <keyword>Debian</keyword>
        <keyword>Zoneminder</keyword>
        <keyword>CCTV</keyword>
        <keyword>Apache</keyword>
        <keyword>Camera</keyword>
        <keyword>CCD</keyword>
        <keyword>CMOS</keyword>
        <keyword>Sécurité</keyword>
        <keyword>Système de vidéo-surveillance</keyword>
        <keyword>Sécurité</keyword>
  </keywordset>
  <revhistory>
      <revision>
        <revnumber>v0.1</revnumber>
        <date>2008-01-20</date>
        <authorinitials>CN</authorinitials>
		<revremark>Première version publique.</revremark>
      </revision>
  </revhistory>
  <date>janvier 2008</date>
  <legalnotice><para>Permission est accordée de copier, distribuer et/ou modifier ce
  document selon les termes de la Licence de Documentation Libre GNU
  (GNU Free Documentation License), version 1.1 ou toute version
  ultérieure publiée par la Free Software Foundation.
  Pas de section inaltérable.</para></legalnotice>
  <copyright>
      <year>Février 2008</year>
      <holder>Nowicki Christophe</holder>
  </copyright>
</articleinfo>

<abstract>
    <para>
    L'objectif de ce document est de décrire l'installation et la configuration d'un système de Système de vidéo surveillance "Personnel". Ce système se base sur un serveur de video surveillance tournant sous Debian GNU/Linux et utilisant le logiciel libre Zone Minder.</para>
    <para>Le document décrit la procédure complète de mise en place du système (matériel, logiciel, installation et configuration).</para>
</abstract>

<sect1>
  <title>Présentation</title>
  <para>
  </para>
  <sect2>
      <title>Problématique</title>
      <para>Pour des raisons de sécurité, j'ai voulu faire l'acquisition d'un système de vidéo surveillance, après un rapide tour du marché, je suis arrivé à la conclusion suivante :</para>
      <para>La plupart des solutions proposées dans le commerce sont des boîtes noires, disposant de peu de fonctionnalités et qui ne sont pas accessibles pour un particulier ou une PME.</para>
      <para>
          Ces solutions sont baséses sur du matèriel dédié et des logiciels propriètaires.   
      </para>
      <para>
          Une solution basée sur des logiciels libres et du matèriel PC standard, apporte les avantages 
          suivants :
      </para>
      <para>
          <itemizedlist spacing="normal" mark="bullet">

            <listitem>
                <para>Nombreuses fonctionnalités</para>
            </listitem>

            <listitem>
                <para>Evolutivité</para>
            </listitem>

            <listitem>
                <para>Maîtrise et compréhension du système</para>
            </listitem>

            <listitem>
                <para>Maîtrise du coût</para>
            </listitem>

        </itemizedlist>
        </para>
      <para>

      </para>
  </sect2>
  <sect2>
      <title>Architecture</title>
      <para>
          Le système de vidéo surveillance est architecturé de la manière suivante :
      </para>
      <para>
        <imageobject>
            <imagedata fileref="archi.png" format="PNG"/>
        </imageobject>
    </para>
      <para>
      De 1 à 16 caméras de vidéo surveillance sont contrôlées via une carte d'acquisition, celle-ci est branchée directement sur un serveur (ou bien un PC standard). Celui-ci fonctionne à l'aide du système d'exploitation Debian GNU/Linux. L'ensemble de l'installation est piloté par le logiciel ZoneMinder et les vidéos ou événements capturés sont envoyés directement sur un serveur distant.
  </para>
  </sect2>

  <sect2>
      <title>Zoneminder</title>
    <para>
        <inlinemediaobject>
        <imageobject>
            <imagedata fileref="zoneminder.png" format="PNG"/>
        </imageobject>
      </inlinemediaobject>
        Il existe plusieurs solutions de vidéo-surveillance disponible sous GNU/Linux :
        <ulink url="http://www.lavrsen.dk/twiki/bin/view/Motion/WebHome">Motion</ulink>, <ulink url="http://www.fastpath.it/products/palantir/">Palantir</ulink> et <ulink url="http://www.zoneminder.com/">ZoneMinder</ulink>.</para> 
    <para>C'est ce derniere que j'ai souhaité mettre en place, car il dispose des fonctionnalités suivantes :
    </para>
    <para>
        <itemizedlist>
            <listitem>Fonctionne sur toutes les distributions GNU/Linux ;</listitem>
            <listitem>Supporte aussi bien des caméras analogiques, des webcams et des caméras réseaux ;</listitem>
            <listitem>Dispose d'une interface web de contrôle et de visualisation des événements ;</listitem>
            <listitem>Permet d'envoyer à l'aide du protocole FTP ou SMTP, les événements sur une machine distante ;</listitem>
            <listitem>L'interface est traduite dans plusieurs langues dont le français.</listitem>
        </itemizedlist>
    </para>
    <para>Le logiciel est composé de plusieurs éléments écrits en C++, Perl et PHP. Les données sur les événements sont stockées dans une base de données MySQL et les images capturées par les caméras sous forme de fichiers au format JPEG sur le disque dur.</para>
  </sect2>
</sect1>

<sect1>
  <title>Matèriel</title>
  <para>
        <inlinemediaobject>
            <imageobject>
                <imagedata fileref="serveur.jpg" format="JPEG"/>
            </imageobject>
        </inlinemediaobject>
	Pour mettre en place ce système, les éléments suivants sont nécessaires : un serveur, une carte d'acquisition, des caméras, des alimentations et du câble. Dans ce document, je décrits la configuration du système de vidéo surveillance que j'ai mis en place à titre personnel. Cette configuration a été remise au goût du jours, car mon installation à plus d'un an et certains composants ne sont plus trouvables dans le commerce.
  </para>
  <para>
Cette configuration est donnée à titre d'exemple, l'installation d'un système de vidéo surveillance est assez complexe et nécessite parfois de tâtonner. Dans chaque section de ce document, j'essaye de vous donner des informations pour dimensionner votre système. 
  </para>
  <sect2>
      <title>Serveur</title>
      <para>
      Pour le choix de la machine qui fera office de serveur de vidéo surveillance, il faut faire attention aux points suivants :
      </para>
      <sect3>
        <title>Processeur</title>
        <para>
	Pour le choix du processeur, les points les plus importants sont la consommation électrique et la puissance du processeur. En effet, dans la plupart des cas votre machine fonctionnera 24h sur 24h et avec un processeur qui ne prend pas en charge la gestion de l'énergie, la facture risque de devenir rapidement salée.
        </para>
        <para>
Pour cette raison, j'ai choisi un processeur de type Pentium M pour ordinateur portable. Car ces processeurs consomment peu d'énergie, produisent peu de chaleur et fournissent une bonne puissance de calcul. 
        </para>
        <para>
	Une architecture basée sur un Pentium M est difficile à obtenir pour le grand publique, et les processeurs Code 2 Duo, fournissent les même caractéristiques aujourd'hui.
        </para>
        <para>Le système de vidéo surveillance nécessite de la puissance processeur pour la capture et l'analyse des images. La puissance nécessaire varie fortement en fonction :
            <itemizedlist spacing="normal" mark="bullet">
                <listitem>du type d'images (couleur ou noir et blanc)</listitem>
                <listitem>de la taille des images</listitem>
                <listitem>du nombre d'images par secondes</listitem>
                <listitem>du nombre de caméras de vidéo surveillance</listitem>
            </itemizedlist>
        </para>
        <para>
            Les systèmes multi-processeurs (SMP) sont parfaitement exploités par le logiciel, 
            car celui-ci utilise un processus par camèra.
        </para>
      </sect3>
      <sect3>
        <title>Mémoire</title>
        <para>
	Zoneminder utilise fortement le système de mémoire partagée entre processus (SHM, Shared Memory) pour échanger les images entre les différents composants du système. Pour connaître la quantité de mémoire partagée nécessaire à votre système, il faut utiliser la formule suivante :
        </para>
        <para>
            (Nombre de pixels contenus dans l'image) x (Nombre de couleurs dans l'image) x (Nombre d'images dans le tempon de capture) x (Nombre de caméras) x 1.1 
        </para>
        <para>
            Par exemple, pour 4 caméras qui capturent des images d'une résolution de 384x288 en 24bit, avec un tompon de 80 images : 
        </para>
        <para>
            4 x ( 384 x 288 ) x 24 x 80 x 1.1 =  934281216 bits, soit 116785152 kB, soit 114 MB.
        </para>
        <para>
            Un autre exemple, pour 4 caméras qui capturent de images d'une résolution de 640x480 en 24bit, avec un tompon de 80 images : 
        </para>
        <para>
            4 x ( 640 x 480 ) x 24 x 80 x 1.1 =  2595225600 bits, soit 324403200 kB, soit 316 MB.
        </para>
        <para>
Pour des raisons évidentes de performance, les pages de mémoire partagée doivent être obligatoirement stockées en mémoire vive. A cette utilisation mémoire, il faut ajouter la mémoire utilisée par les autres applications telles que : Apache, PHP et MySQL. 
        </para>
        <para>
            Pour cette raison, 1Go de mémoire vive est un minimum raisonnable pour ZoneMinder.
        </para>
      </sect3>
      <sect3>
        <title>Stockage</title>
        <para>
	L'ensemble des images capturées par le système de vidéo-surveillance est stocké sur le disque dur du serveur. Pour connaître, l'espace disque nécessaire, il vous suffit de télécharger, la feuille de calcul disponible sur le site de ZoneMinder : 
	</para>
        <para>
            <ulink url="http://www.jpwilson.eu/ZM_Utils/ZM%20storage%20calc%20sheet.xls">Storage Calc</ulink>
        </para>
        <para>
            La formule utilisé par cette feuille de style est la suivante :
        </para>
        <para>
            (Nombre d'images par secondes) x (Nombre de caméras) x (Taille de l'image) x (Temps)
        </para>
        <para>
            L'élément le plus important du calcul est la taille de l'image, voici quelques exemples :
            <itemizedlist spacing="normal" mark="bullet">
                <listitem>Image couleur 384 x 288 en 8bit  : 24ko</listitem>
                <listitem>Image couleur 384 x 288 en 24bit : 44ko</listitem>
                <listitem>Image couleur 640 x 480 en 8bit  : 64ko</listitem>
                <listitem>Image couleur 640 x 480 en 24bit : 96ko</listitem>
            </itemizedlist>
        </para>
        <para>
            Si on utilise, un système qui capture sur 24h, 10 images par secones, à l'aide de 4 caméras 
            dans une résolution de 640 x 480 en 24bit, cela donne :
        </para>
        <para>
            10 x 4 x 96 x 86400 = 331776000ko, soit 316 Go
        </para>
        <para>
            Comme en peut le constater l'espace disque nécessaire est très important. 
        </para>
        <para>
            Une petite astuce, pour gagner de la place sur cette espace de stockage et de lancer périodiquement 
            le programme <ulink url="http://www.kokkonen.net/tjko/projects.html">jpegoptim</ulink>. 
        </para>
        <para>
            Attention : par défault ZoneMinder conserve tous les évènements capturés, je vous conseille vivement
            de mettre en place une routine qui efface automatiquement les anciens événements.
        </para>
      </sect3>
  </sect2>

  <sect2>
      <title>Carte d'aquisition</title>
      <para>
          Pour faire l'aquisition d'un carte de vidéo surveillance, je vous conseille de vous rendre sur le site 
          de <ulink url="http://store.bluecherry.net/SearchResults.asp?Cat=63">Blue Cherry</ulink>. Ce fabriquant 
          propose de nombreuses réferences. La plupart des cartes d'aquisition proposéees sur ce site se base sur
          le chipset BT878. Ces cartes ne nécessitent aucune installation de drivers, elle sont directement prise en
          compte par le noyau via le driver BTTV. 
      </para>
  </sect2>

  <sect2>
      <title>Cameras de vidéo surveillance</title>
      <para>
          Voici quelques notions et points qu'il faut prendre en considération lors du choix d'un modèle de
          camèra de vidéo-surveillance:
      </para>

      <sect3>
        <title>Capteurs CMOS ou CDD?</title>
        <para>Il existe deux principaux types de capteurs pour les caméras de vidéo-surveillance : 
            <ulink url="http://fr.wikipedia.org/wiki/CMOS">CMOS</ulink> et 
            <ulink url="http://fr.wikipedia.org/wiki/Charge-Coupled_Device">CCD</ulink>.
        </para>
        <para> 
            <inlinemediaobject>
                <imageobject>
                    <imagedata fileref="camera.jpg" format="JPEG"/>
                </imageobject>
            </inlinemediaobject>
	    La qualité de l'image varie fortement en fonction du type et de la qualité du circuit électronique. Mais dans la pratique on peut dire que les caméras qui utilisent des capteurs de type CCD sont plus chères, plus consommatrices d'énergie mais de meilleure qualité. Les capteurs CMOS sont réservées au marché d'entrée de gamme. Mais attention, cela n'est pas forcément vrai dans tous les cas, car il existe d'excellentes caméras CMOS, en règle générale ces caméras sont aidées par le traitement numérique des données.
        </para>
      </sect3>

       <sect3>
          <title>Type de camèra (analogique, USB ou réseau)?</title>
          <para>
              Zoneminder prend parfaitement en charge ces trois types de caméras. 
              Mais mon choix s'est porté vers des caméras de type analogique pour les raisons suivantes :
          </para>
          <para>
            <itemizedlist spacing="normal" mark="bullet">
                <listitem>Le prix des camèra de vidéo surveillance réseau est prohibitif.</listitem>
                <listitem>Le drivers des webcams sous Linux ne sont pas tous de bonne qualité (problème
                de fiabilité du driver, problème de vitesse de capture, etc...)</listitem>
            </itemizedlist>
          </para>
      </sect3>


      <sect3>
          <title>Capteurs Noir/Blanc ou Couleurs?</title>
          <para>
              En terme de ressources, des images en couleurs nécessitent 3 à 4 fois plus de
              résources en terme de puissance CPU, mémoire et espace disque. Et la couleur n'apporte que
              peu de bénéfices en terme d'identification.
          </para>
          <para>
              Donc, dans 80% des cas une camèra Noir/Blanc couvrrira vos besoins.
          </para>
      </sect3>

      <sect3>
          <title>Camèra filaire ou sans-fils?</title>
          <para>
              Les fabriquants proposent des camèra sans fils. qui utilisent les ondes radio
              pour transfmettre les images.
          </para>
          <para>
              Les systèmes sans-fils présentent peu d'interêt, car il ne présentent que peu de garanties
              au niveau de la sécurité.
          </para>
          <para>
              C'est à vous de choisir si vous voulez quelques cables dans votre maison ou bien votre
              tête sur la télévision de votre voisin ;0)
          </para>

      </sect3>

  </sect2>

  <sect2>
      <title>Alimentations</title>
      <para>
      Pour alimenter les caméras analogiques, il faut utiliser un transformateur. Les deux principales caractéristiques à prendre en compte sont  l'ampérage et le voltage. La plupart des caméras nécessitent une alimentation stabilisée et un courant continu.
      </para>
  </sect2>

  <sect2>
      <title>Cablage</title>
      <para>
           <inlinemediaobject>
                <imageobject>
                    <imagedata fileref="cable.jpg" format="JPEG"/>
                </imageobject>
            </inlinemediaobject>
          La connexion entre la caméra et la carte d'aquisition est réalisée à l'aide
          de câbles vidéos analogiques de type BNC (75 Ohms) ou bien RCA. 
      </para>
          <para>Vous pouvez changer le type d'extrémité  avec des adaptateurs : RCA vers BNC et BNC vers RCA.
      </para>
      <para>
          Le meilleur choix pour le cablage est de prendre un câble qui fait à la fois l'image 
          et l'alimentation. Cela permet de n'avoir qu'un seul câble par caméra.
      </para>
  </sect2>

  <sect2>
      <title>Budget Total</title>
      <para>Voilà le budget de mon déploiement :</para>
      <para>
          <table frame="all">
                <title>Budget de l'installation</title>
                <tgroup cols="6" align="left" colsep="1" rowsep="1">
                    <colspec colnum="4" align="right"/>
                    <colspec colnum="6" align="right"/>
                    <thead>
                        <row>
                            <entry>Composant</entry>
                            <entry>Produit retenu</entry>
                            <entry>Acheté chez</entry>
                            <entry>Prix unitaire TTC</entry>
                            <entry>Quantité</entry> 	
                            <entry>Total TTC</entry>
                        </row>
                    </thead>
                    <tbody>
                        <row>
                            <entry>CPU</entry>
                            <entry>Intel®  Core 2 Duo E6750</entry>
                            <entry>Materiel.net</entry>
                            <entry>170 &#8364;</entry>
                            <entry>1</entry> 	
                            <entry>170 &#8364;</entry>
                        </row>

                        <row>
                            <entry>Carte mère</entry>
                            <entry>Intel®  DG33FB</entry>
                            <entry>Materiel.net</entry>
                            <entry>100 &#8364;</entry>
                            <entry>1</entry> 	
                            <entry>100 &#8364;</entry>
                        </row>


                        <row>
                            <entry>Mémoire</entry>
                            <entry>Corsair  Twin2X 2 x 1 Go DDRII PC6400</entry>
                            <entry>Materiel.net</entry>
                            <entry>52 &#8364;</entry>
                            <entry>1</entry> 	
                            <entry>52 &#8364;</entry>
                        </row>

                        <row>
                            <entry>Disque dur</entry>
                            <entry>Seagate  Barracuda 7200.10 SATA - 250 Go - 16 Mo</entry>
                            <entry>Materiel.net</entry>
                            <entry>62 &#8364;</entry>
                            <entry>1</entry> 	
                            <entry>62 &#8364;</entry>
                        </row>

                        <row>
                            <entry>Boîtier</entry>
                            <entry>Cooler Master Elite RC-332</entry>
                            <entry>Materiel.net</entry>
                            <entry>35 &#8364;</entry>
                            <entry>1</entry> 	
                            <entry>35 &#8364;</entry>
                        </row>

                        
                        <row>
                            <entry>Alimentation PC</entry>
                            <entry>Antec Earthwatts 380</entry>
                            <entry>Materiel.net</entry>
                            <entry>45 &#8364;</entry>
                            <entry>1</entry> 	
                            <entry>45 &#8364;</entry>
                        </row>

			<row>
                            <entry>Onduleur</entry>
                            <entry>MGE O.P.S.  Protection Center 500 USB</entry>
                            <entry>Materiel.net</entry>
                            <entry>110 &#8364;</entry>
                            <entry>1</entry> 	
                            <entry>110 &#8364;</entry>
                        </row>


                        <row>
                            <entry>Carte d'aquisition</entry>
                            <entry>PV-153 - 4 port video, 4 port audio capture card (120FPS)</entry>
                            <entry>Bluecherry</entry>
                            <entry>160 $</entry>
                            <entry>1</entry> 	
                            <entry>160 $</entry>
                        </row>
                        
                        <row>
                            <entry>Camera de vidéo-surveillance</entry>
                            <entry>Mini-caméra CCD couleur avec support</entry>
                            <entry>Conrad électronique</entry>
                            <entry>105 &#8364;</entry>
                            <entry>4</entry> 	
                            <entry>420 &#8364;</entry>
                        </row>
                        
                        <row>
                            <entry>Alimentation pour camèra</entry>
                            <entry>Série d'alimentation P2EFSW3 - 12VDC 500mA</entry>
                            <entry>Conrad électronique</entry>
                            <entry>24 &#8364;</entry>
                            <entry>4</entry> 	
                            <entry>96 &#8364;</entry>
                        </row>

                        <row>
                            <entry>Cable</entry>
                            <entry>Cable de 20M pour caméra analogique (BNC + Alim)</entry>
                            <entry>Abix</entry>
                            <entry>42 &#8364;</entry>
                            <entry>4</entry> 	
                            <entry>168 &#8364;</entry>
                        </row>

                    </tbody>
                </tgroup>
            </table>
      </para>
      <para>
          A ce budget, il faut ajouter 10% pour ce qui concerne les frais de port et de douane.
      </para>
  </sect2>

</sect1>

<sect1>
    
  <title>Installation</title>
  
  <para>
      Pour l'installation du système, nous allons nous baser sur une distribution Debian GNU/Linux "etch"
      fraichement installée.
  </para>
  
  <sect2>
      <title>Zoneminder</title>
      <para>
          Zoneminder est une application LAMP, qui nécessite les composants suivants :
      </para>
        <para>
            <itemizedlist spacing="normal" mark="bullet">
                <listitem>Apache</listitem>
                <listitem>MySQL</listitem>
                <listitem>PHP</listitem>
                <listitem>FFMpeg</listitem>
                <listitem>libjpeg</listitem>
            </itemizedlist>
        </para>
        <para>
            Nous allons procèder à l'installation de l'ensemble de ses éléments :
        </para>
        <sect3>
            <title>Compilation de libjpeg avec le support des instructions MMX</title>
            <para>
	    La bibliothèque jpeg de Debian est compilée pour une architecture i386, par conséquent les instructions MMX sont désactivées dans le paquet Debian. C'est extrêmement gênant car l'absence de ces instructions pénalise les performances du processus de capture des images au format JPEG. Par conséquent il est nécessaire de re-compiler le package Ubuntu (libjpeg-mmx) à l'aide des instructions suivantes :
            </para>
            <para>
<programlisting format="linespecific">
    <prompt moreinfo="none">#</prompt><userinput moreinfo="none">cd /usr/src</userinput>
    <prompt moreinfo="none">#</prompt><userinput moreinfo="none">apt-get install build-essential dpkg-dev wget gcc-3.3</userinput>
    <prompt moreinfo="none">#</prompt><userinput moreinfo="none">wget http://archive.ubuntu.com/ubuntu/pool/universe/libj/libjpeg-mmx/libjpeg-mmx_0.1.5-4.dsc</userinput>
    <prompt moreinfo="none">#</prompt><userinput moreinfo="none">wget http://archive.ubuntu.com/ubuntu/pool/universe/libj/libjpeg-mmx/libjpeg-mmx_0.1.5.orig.tar.gz</userinput>
    <prompt moreinfo="none">#</prompt><userinput moreinfo="none">wget http://archive.ubuntu.com/ubuntu/pool/universe/libj/libjpeg-mmx/libjpeg-mmx_0.1.5-4.diff.gz</userinput>
    <prompt moreinfo="none">#</prompt><userinput moreinfo="none">dpkg-source -x libjpeg-mmx_0.1.5-4.dsc</userinput>
    <prompt moreinfo="none">#</prompt><userinput moreinfo="none">cd libjpeg-mmx-0.1.5</userinput>
    <prompt moreinfo="none">#</prompt><userinput moreinfo="none">CC=gcc-3.3 dpkg-buildpackage -b</userinput>
    <prompt moreinfo="none">#</prompt><userinput moreinfo="none">dpkg -i ../libjpeg-mmx-dev_0.1.5-4_i386.deb</userinput>
</programlisting>
            </para>
        </sect3>
        <sect3>
            <title>Installation des packages Debian</title>
            <para>
                Pour tous les autres programmes nous allons utiliser les packages Debian :
            </para>
            <para>
<programlisting format="linespecific">
    <prompt moreinfo="none">#</prompt><userinput moreinfo="none">apt-get install mysql-server-5.0 libapache2-mod-php4 php4-mysql ffmpeg</userinput>
</programlisting>
            </para>
        </sect3>
        <sect3>
            <title>Compilation de Zoneminder</title>
            <para>
                Pour la compliation et l'installation de ZoneMinder, il faut procèder de la manière suivante :
            </para>
<programlisting format="linespecific">
    <prompt moreinfo="none">#</prompt><userinput moreinfo="none">apt-get install dh-make-perl</userinput>
    <prompt moreinfo="none">#</prompt><userinput moreinfo="none">dh-make-perl --install  --cpan PHP::Serialization</userinput>
</programlisting>
            <para>
<programlisting format="linespecific">
    <prompt moreinfo="none">#</prompt><userinput moreinfo="none">apt-get install g++-3.3 libsys-syslog-perl libdbi-perl libdbd-mysql-perl \
        libtime-hires-perl libdate-manip-perl libmodule-load-perl libarchive-tar-perl libarchive-zip-perl \
        libdevice-serialport-perl libmime-perl libwww-perl libphp-serialization-perl</userinput>
    <prompt moreinfo="none">#</prompt><userinput moreinfo="none">cd /usr/src</userinput>
    <prompt moreinfo="none">#</prompt><userinput moreinfo="none">wget http://www2.zoneminder.com/downloads/ZoneMinder-1.23.1.tar.gz</userinput>
    <prompt moreinfo="none">#</prompt><userinput moreinfo="none">tar xzf ZoneMinder-1.23.1.tar.gz</userinput>
    <prompt moreinfo="none">#</prompt><userinput moreinfo="none">cd ZoneMinder-1.23.1</userinput>
    <prompt moreinfo="none">#</prompt><userinput moreinfo="none">CXX=g++-3.3 CC=gcc-3.3 ./configure \
        --with-webdir=/var/www --with-webuser=www-data --with-webgroup=www-data --with-cgidir=/usr/lib/cgi-bin \
        --with-libarch=lib --disable-debug --disable-crashtrace --with-mysql=/usr  --with-ffmpeg \
        --with-extralibs= --includedir=/usr/include --prefix=/usr --sysconfdir=/etc</userinput>
    <prompt moreinfo="none">#</prompt><userinput moreinfo="none">make</userinput>
    <prompt moreinfo="none">#</prompt><userinput moreinfo="none">make install</userinput>
</programlisting>
</para>
        </sect3>
    </sect2>
</sect1>

<sect1>
  <title>Configuration</title>
  
  <para>
      Une fois les composants installés, il faut les configurer individuellement :
  </para>
  
  <sect2>
      <title>Base de données</title>
      <para>
          Le schèma de la base de données se trouve dans le répértoire <filename moreinfo="none">db</filename>, du
          package zoneminder. Il faut initialiser la base mysql à l'aide du fichier <filename moreinfo="none">zm_create.sql</filename> :
      </para>
      <para>
          <programlisting format="linespecific">
    <prompt moreinfo="none">#</prompt><userinput moreinfo="none">mysql &lt; /usr/src/ZoneMinder-1.23.1/db/zm_create.sql</userinput>
    <prompt moreinfo="none">#</prompt><userinput moreinfo="none">mysql</userinput>
    <prompt moreinfo="none">mysql&gt;</prompt><userinput moreinfo="none">use mysql;</userinput>
    <prompt moreinfo="none">mysql&gt;</prompt><userinput moreinfo="none">CREATE USER 'zmuser' IDENTIFIED BY 'zmpass';</userinput>
    <prompt moreinfo="none">mysql&gt;</prompt><userinput moreinfo="none">GRANT ALL ON zm.* TO 'zmuser'@'localhost';</userinput>
        </programlisting>
      </para>
  </sect2>

  <sect2>
      <title>Apache</title>
      <para>
          Dans le répertoire <filename moreinfo="none">/etc/apache2/site-available</filename>, vous pouvez créer le 
          fichier <filename moreinfo="none">zone</filename>, pour y mettre la configuration du site :
      </para>
      <para>
          <programlisting format="linespecific">
<![CDATA[
<VirtualHost *:80>
        ServerName zonemainder.domain.tld

        DocumentRoot /var/www

        ScriptAlias /cgi-bin /usr/lib/cgi-bin
</VirtualHost>
]]>
          </programlisting>
      </para>
      <para>
          Puis activer la configuration à l'aide des commandes suivantes : 
      </para>
      <para>
          <programlisting format="linespecific">
    <prompt moreinfo="none">#</prompt><userinput moreinfo="none">a2ensite zone</userinput>
    <prompt moreinfo="none">#</prompt><userinput moreinfo="none">/etc/init.d/apache2 reload</userinput>
          </programlisting>
      </para>
      <para>
          Vous pouvez vous connecter sur l'interface du logiciel à l'aide de l'URL du type :
          http://zonemainder.domain.tld
      </para>
      <para>
          Le login et mots de passe par défault de l'application est : 'admin', 'admin'.
      </para>
  </sect2>

</sect1>

<sect1>
  <title>Faiblesses de la solution</title>
  
  <para>
      Voici les points faibles et les points d'attaque qui j'ai identifié dans cette solution :
  </para>

  <sect2>
      <title>Voix et enregistrement sonore</title>
      <para>
      	Certaines caméras de vidéo-surveillance disposent de microphone omni-directionnel de bonne qualité qui permettent d'enregistrer les différents bruits. Malheureusement ZoneMinder ne dispose d'aucune fonctionnalité en matière de détection de bruits et enregistrement sonore. 
      </para>
      <para>
          La gestion de l'audio est sur la feuille de route du projet.
      </para>
    </sect2>
  
  <sect2>
      <title>Coupure de courant</title>
      <para>
      	En cas de coupure de l'alimentation électrique, l'enregistrement des événements est arrêté et le système est neutralisé. 
      </para>
      <para>
          La meilleurs solution pour palier à ce problème est d'équiper l'ensemble de 
          l'installation d'Onduleurs. 
      </para>
  </sect2>

  <sect2>
      <title>Vitesse de transfert entre le serveur distant et le système de vidéo surveillance</title>
      <para>
      Zoneminder ne prend pas en charge le streaming des événements, lorsqu'un événement donne lieu à une alerte, celui-ci attend la fin de l'enregistrement pour le transférer sur le serveur. En moyenne, avec mon installation, un événement donne lieu à un fichier de 50Mo et le transfert de ce fichier vers le serveur distant prend en moyenne plus de 5 minutes.
      </para>
      <para>
          Cette limitation est liée à la vitesse d'upload de ma connexion ADSL.
      </para>
      <para>
          Les solutions envisagables sont les suivantes :
          <itemizedlist spacing="normal" mark="bullet">
            <listitem>Réduction de la qualité des images, permet de réduire la taille des archives.</listitem>
            <listitem>Encodage sous forme de vidéo, nécessite beaucoup de puissance CPU, 
                pour un résultat final peu 
                convaincant, en effet, l'encodage de la vidéo peut prendre plus de temps que 
                l'upload de l'archive.</listitem>
            <listitem>Augmentation de la bande passante, nécessite un investissement dans une ligne de type SDSL.</listitem>
          </itemizedlist>
      </para>
  </sect2>

</sect1>

<sect1>
  <title>Idées d'amélioration et fonctionnaliteés avancées</title>
  
  <para>
  </para>
  
  <sect2>
      <title>Interaction avec une PABX IP</title>
      <para>
          Il serait intéressant de pouvoir accèrder aux enregistrements via un système de téléphonie.
      </para>
      <para>
          Asterisk dispose de peu de fonctionnalités en matière de vidéo. Il ne dispose pas 
          d'un système de "transcodage", il faut donc que les vidéos envoyées aux clients soit 
          directement comprehensibles par ceux-ci. 
      </para>
      <para>
          Il n'est pas possible à l'heure actuelle d'interconnecter les deux systèmes. 
      </para>
  </sect2>

  <sect2>
      <title>Interfaces utilisateur</title>
      <para>
          ZoneMinder dispose de plusieurs interfaces utilisateurs supplèmentaires :
      </para>
      <sect3>
          <title>ZoneMinder Viewer</title>
          <para>
              Une interface graphique riche écrite en Qt4 permet de se conneter au
              système de vidéo-surveillance directement à partir de votre bureau :
              <ulink url="http://zmviewer.sourceforge.net/">ZMViewer</ulink>.
          </para>
      </sect3>
      <sect3>
          <title>MythZoneMinder</title>
          <para>Le projet <ulink url="http://www.mythtv.org/wiki/index.php/MythZoneMinder">MythZoneMinder</ulink>, propose
                  un plugin pour MythTV, celui-ci permet de visualiser les événements directement sur l'interface
             d'un système multi-média basé sur MythTV.</para>
      </sect3>
      <sect3>
          <title>Xlib SHM</title>
          <para>Le programme <ulink url="http://dig.hopto.org/xlib_shm/">Xlib SHM</ulink>, permet
              d'affiché sous X, les images capturées par ZoneMinder, en allant les chercher directement
              dans la mémoire partagé. Cela permet d'affiché en local sur la machine les images
              en utilisant très peu de ressources CPU.</para>
      </sect3>
  </sect2>

  <sect2>
  	<title>Diffusion des images via le système de TV Perso de la Freebox</title>
	<para>
	<inlinemediaobject>
            <imageobject>
                <imagedata fileref="tvperso_sm2.png" format="PNG"/>
            </imageobject>
        </inlinemediaobject>

	Free propose à ses abonnés de diffuser des flux vidéo à l'aide du terminal Freebox.
	Il suffit de brancher la carte vidéo (S-Video) de votre serveur directement sur 
	la Freebox pour diffuser en direct les images du systèmes de vidéo-surveillance
	dans un cadre restreint. 
	</para>
  </sect2>

</sect1>

<sect1>
  <title>Législation</title>
  <para>
    <inlinemediaobject>
        <imageobject>
            <imagedata fileref="legislation.png" format="PNG"/>
        </imageobject>
    </inlinemediaobject>
      Voici un raccourci rapide sur les obligations et les possiblités offertes par la législation Francaise :
  </para> 
  <para>
      Dans le cadre d'un lieu privé, les caméras ne doivent pas filmer à l'extérieur de votre propriété, 
      même derrière la vitre d'une fenêtre privée. 
      L'utilisation des caméras à l'intérieur d'une propriété relève du droit à l'image. 
      Vous avez le droit de filmer le personnel employé dans votre maison (Babysitter, agent d'entretiens, etc...) 
      à la seule condition que celui-ci en soit dûment informé par écrit.
  </para>
  <para>
      Dans le cadre d'un lieu de travail, la législation est beaucoup plus réstrictive, l'installation du système
      de vidéo surveillance nécessite l'aval de plusieurs authorités (représantant du personnel, préfecture, CNIL, etc...).
      La partie administrative d'un projet de vidéo surveillance est complexe et lourde dans le cas d'une entreprise. 
  </para>
</sect1>



</article>
