Machine Virtuelle MOTIONEYE

Rédaction le 08/12/2018
Mise à jour le 30/06/2019

Ou comment intégrer la détection de mouvement “correctement” dans Jeedom !

Pré-requis :

  • des caméras dont le flux peut s’intégrer dans MotionEye ;
  • c’est tout ! Le reste c’est dans Jeedom…

Une petite machine virtuelle de plus… mais pourquoi ?

Vous possédez des caméras, oui ! Personnellement pendant longtemps, j’ai souhaité tout centraliser sur Jeedom, mais certaines fonctions ne sont pas ou pas assez bien intégrées et les plugins ne comblent pas certaines lacunes.

Le plugin Caméras vous suffira côté Jeedom pour :

  • enregistrer, transmettre une photo,
  • piloter une rotation de caméra,
  • enregistrer une vidéo.

Mais la détection de mouvement dans tout ça ? Justement une solution est l’utilisation de MotionEye. D’autres solutions existent MotionEyeOS (un OS complet intégrant cette fonction), ZoneMinder la solution préhistorique, Shinobi etc.

Là encore, à vous de vous faire votre opinion. Mais pourquoi ai-je choisi MotionEye ?

  • léger, léger, léger ! La machine virtuelle ou les performances requises pour une machine virtuelle sur d’autres solutions comme Shinobi, ZoneMinder étaient 3 à 6 fois plus importantes !
  • l’application Android superbe et simple (avec le VPN pour y accéder) ;
  • la possibilité de régler des zones de détection de vos caméras, des seuils ;
  • la possibilité d’envoyer cette détection de mouvement à Jeedom pour être notifié, oui !

Mon matériel de vidéo-surveillance :

  • des caméras en streaming par JPI : tablettes domotiques, téléphone connectées en Wifi ;
  • des caméras intérieures de marque Xiaomi Xiaofang (15/20€ pièce) hackées connectées en Wifi ;
  • des caméras extérieures rotatives Wanscam HW0038 branchées en Ethernet+CPL .

Bon, assez parlé, on se lance !

Voici les paramètres que j’ai attribués à cette machine virtuelle après quelques semaines d’utilisation :

  • 512 à 1 Go de RAM suffisant – un peu en limite – je suis récemment passé à 1 à 2 Go ;
  • 1 core, 1 CPU – j’ai testé 2 cores, rares sont les moments où est proche de 100% sur un seul core ;
  • 8 Go de disque dur ;
Ma VM MotionEye …

N’oubliez pas de récupérer votre IP ; le login et le mot de passe de votre  super-utilisateur pour la partie Jeedom.

Reprenez le fil de la machine virtuelle Apache dans sa partie générique et on se retrouve ensuite :

Déroulez la partie générique de l’installation Debian9 sous Proxmox

https://jeedom-facile.fr/index.php/2018/12/06/machine-virtuelle-apache/

Partie générique de la machine virtuelle

Ensuite, direction votre client SSH connecté à l’IP de votre machine virtuelle MotionEye, votre utilisateur – “super-utilisateur” connecté.

Ajoutons le point de montage où seront stockés vos images, vidéos des caméras. L’intérêt est d’avoir un stockage fiable et extérieur à la VM qui imposerait un disque dur plus important ! Personnellement sur mon NAS. Comme pour Jeedom, pensez à ajouter l’IP de MotionEye dans votre NAS comme autorisé dans le serveur NFS.

Cette image a un attribut alt vide ; le nom du fichier est image-118.png
Ajoutez l’IP de la VM MotionEye dans votre NAS sur le partage NFS

mkdir -p /mnt/QNAP
sed -i ‘$a ipdunas:/Domotique /mnt/QNAP nfs rw 0 0’ /etc/fstab
mount -a 
cd /mnt/QNAP et faire tab! vous verrez le contenu du point de montage contenu dans le NAS !

QNAP est ici un exemple, libre à vous de le nommer NAS ou autre chose !

Ajoutons les sources d’installation de MotionEye ; mettons à jour puis installons tout cela :

sudo nano /etc/apt/sources.list

Éditez votre fichier en ajoutant cette ligne :
deb http://www.deb-multimedia.org stretch main non-free

Puis on met à jour et on installe tout ce qu’il faut pour MotionEye :

sudo apt-get update
sudo apt-get install deb-multimedia-keyring
sudo apt-get update -y  && sudo apt-get upgrade -y && sudo apt-get dist-upgrade -y

sudo apt-get install motion ffmpeg v4l-utils -y
sudo apt-get install python-pip python-dev python-setuptools curl libssl-dev libcurl4-openssl-dev libjpeg-dev libz-dev -y
sudo pip install motioneye
sudo mkdir -p /etc/motioneye
sudo cp /usr/local/share/motioneye/extra/motioneye.conf.sample /etc/motioneye/motioneye.conf
sudo  mkdir -p /var/lib/motioneye
sudo cp /usr/local/share/motioneye/extra/motioneye.systemd-unit-local /etc/systemd/system/motioneye.service
sudo  systemctl daemon-reload
sudo systemctl enable motioneye
sudo systemctl start motioneye
sudo pip install motioneye –upgrade

Long mais à la fin c’est installé ! (double tiret !)

Puis rebootez votre machine virtuelle MotionEye :

sudo reboot

On reboote

Si vous souhaitez rendre accessible MotionEye par Apache, suivez le tutoriel de la machine virtuelle Apache pour ajouter une redirection sur l’adresse suivante : http://ipvmmotioneye:8765.

Personnellement, je passe par le VPN quand je veux me connecter depuis l’extérieur. Je ferai le point sur cet accès et la configuration dans Jeedom dans un article à suivre.

Rendez-vous dans votre interface MotionEye pour ajouter, configurer vos caméras et modifier vos accès.

Par défaut : admin et pas de mot de passe !

Je vous donne quelques points pour paramétrer au mieux MotionEye :

  • Dans le menu paramètres, vous pouvez activer les fonctions souhaitées par ON/OFF ;
  • Ajoutez un utilisateur de visualisation et son mot de passe ;
  • Modifiez le mot de passe de votre administrateur ;
  • Comme vous pouvez le remarquer vous pouvez sauver toute la configuration une fois finie ! Sauvez-la sur le NAS.
  • Personnellement, j’utilise les flux suivants :
    • RTSP – pour les caméras Wanscam sous le format (flux HD = 1; flux SD = 2) : rtsp://ipcamera:554/1
    • RTSP – pour le Doorbird : rtsp://ipdoorbird:554/mpeg/media.amp
    • MJPEG – pour les caméras avec l’applicatif JPI : http://ipcamjpi:8080/stream/
  • J’ai limité la solution en 640×352 (faites attention à la résolution de vos caméras et le rafraichissement des images par seconde) cela monte vite en ressources ! et attention à la déformation …
  • Je stocke les images – vidéos dans un répertoire du point de montage NAS – 1 répertoire par caméra ;
  • Je demande à MotionEye de gérer un nettoyage des fichiers avec un an de données stockées ;
Paramétrage d’une caméra (1)
Paramétrage d’une caméra (2)
  • Je stocke les images en cas de détection de mouvement (Motion Triggered) ;
  • J’autorise la prise manuelle de photo (Enable Manual Snapshots) ;
  • J’ai paramétré la détection de mouvement en affinant au fur et à mesure des jours :
    • entre 5 et 8 % – Frame Change Threshold – le seuil de détection de pixels changeants dans une image pour une caméra extérieure ;
    • gestion du bruit automatique par MotionEye – vos pixels “bougent” avec l’ombre, le vent ; laissons MotionEye régler cela ;
    • entre 25 et 50% – Light Switch Detection – le seuil pour gérer un éblouissement soudain et éviter un faux positif par un changement brusque d’un grand nombre de pixels ;
    • 15 secondes – Motion Gap – délai entre 2 mouvements ;
    • 3 – Captured Before – images capturées avant une détection ;
    • 3 – Captured After – après … ;
    • entre 5 et 10 – Minimum Motion Frames ; nombre d’images successives pour avoir une vraie détection de mouvement.

Je vous engage à lire quelques liens pour mieux régler et comprendre ces paramètres :

http://www.dekloo.net/arduino-raspberry/motioneye-detection-de-mouvement/1403

https://github.com/ccrisan/motioneye/wiki

https://github.com/ccrisan/motioneyeos/wiki/FAQ

Configuration de la détection de mouvement
  • La mise en place d’un masque permet d’éviter des zones à problème ou publique : carré foncé = non surveillé ; carré clar = surveillé. Personellement, j’utilise un masque éditable et non pas celui “Smart” ; trop de faux positifs ! On sélectionne Editable ; Edit Mask, puis on caractérise sa ou ses zones et on sauve son masque.
Configuration d’un masque de détection 
  • Enfin, le passage à Jeedom mais non, pas ici ! Dans le principe, pour les plus pressés, j’actionne un interrupteur virtuel dans la rubrique Motion Notifications ON/OFF. Je filtre alors cette information en fonction de notre présence ou non et je reçois une notification par Telegram avec une photographie prise par le plugin Camera.

A ce stade, configurez donc vos caméras. Sauvegardez votre machine virtuelle, une fois fini sur votre NAS. Pensez aussi à sauver votre configuration (voir au début de l’article).

Personnellement, j’ai pris un peu de temps pour régler finement ma détection de mouvement mais cela vaut le coup ! Dans l’onglet Motion Detection, une option existe “Create Debug Media Files”. Vous stockez les paramètres qui ont généré la détection de mouvement. Ces fichiers sont présents dans votre répertoire de stockage des photos/vidéos prises. Ainsi vous pouvez mieux régler les paramètres de détection de mouvement donnés plus haut !

Pour affiner vos détections

Vous allez devoir faire des mises à jour… faire le classique pour votre système si vous souhaitez le mettre à jour :
sudo apt-get update -y && sudo apt-get upgrade -y && sudo apt-get dist-upgrade -y

Attention, si vous migrez d’une 0.3x vers 0.4x ; sauvegardez vos fichiers de configuration (option Backup) et même votre VM. Ensuite faites vos mises à jour système et MotionEye puis suivez ce billet pour faire la mise à jour des configurations, sinon vous perdez vos caméras et configurations !

https://github.com/ccrisan/motioneye/releases/tag/0.40

Puis mettre à jour motioneye (tiret tiret) :
sudo pip install — upgrade motioneye
sudo reboot (pour voir si tout est OK)

Mise à jour de Motioneye

Nous avons mis en place notre troisième machine virtuelle dédiée à la gestion des caméras et en particulier d’une détection de mouvement fiable.

La conclusion de cet article !

Retrouvons-nous pour l’intégration dans Jeedom et l’utilisation de la vidéo-surveillance.

Si vous avez aimé cet article, faites le savoir, partagez-le ! Et n’hésitez pas à me supporter 🙂

Merci à vous !

One thought on “Machine Virtuelle MOTIONEYE

  1. Bon tuto sur cette installation. Je suis assez curieux de savoir la volumétrie occupée au bout d’un an , je sais que cela dépend enormenent du paramétrage, des détections etc , mais dans ton cas peux tu préciser le volume occupé et le nombre de caméras que tu as.
    Pour ma part, je possède 15 caméras (foscam et wanscam , je couvre environ 1 hectare maison + terrain ) . J’ai essayé les captures avec jeedom mais seulement sur évenements,aussi zoneminder mais le pc dedié est vite limité. Je me suis rabatut pour le moment sur un upload ftp de la camera sur un nuc avec 500Go de disks mais la volumétrie fait que je ne peux avoir maxi 3 mois en ligne avec une compression 2 fois par jour des repertoires. Et pour consulter les photos, et bien c’est la galère .
    Je viens de paramètrer motioneye sur une vm vmware sur mon nuc qui héberge jeedom ( 1 CPU et 1Go de RAM ) pour le moment pas de montée en charge constatée, prochaine étape mise en place de la detection et enregistrement des photos, je suis impatient de voir ce que çà représentera en volumétrie.

    Et pour terminer, je pense réellement qu’il faut dissocier les différents outils : la fonction première pour jeedom est la domotique et tout ce que çà comporte ( notifications, gestion de la maison au quotidien ) et l’interaction avec motioneye pour la partie sécurité me semble une bonne alternative.

    Encore merci pour cet article , et je n’hésiterai pas à faire un retour de mon expérience à ce sujet.

    1. Bonsoir Mick,

      Je possède 3 wanscam extérieures, 1 doorbird, 2 xiaomi intérieures, 3 caméras (téléphone + 2 tablettes domotiques).
      J’enregistre uniquement les extérieures sur détection de mouvement, donc seulement 4.
      Comme je l’explique le stockage n’est pas sur la VM et encore moins sur le serveur domotique.
      J’utilise un NAS en 4×4 To en RAID1.

      Après plusieurs essais : Zoneminder, Shinobi, Motion par Jeedom, MotionEye est pour moi le plus abouti : léger, peu gourmand et agréable à prendre en main.

      En toute transparence, depuis 2 mois tout pile !
      https://i.imgur.com/xQtlgo5.png
      9 Go. Donc sur un an, 54 Go. Pas la mort !

  2. Bonjour
    J’ai fait l’installation sur rapsberry pi2. Par contre, la latence est importante sur l’affichage de la video.
    Avez vous une astuce ?
    Merci

  3. Je vais suivre ce tuto. Avant je voudrais savoir quel sont les interactions possible avec Jeedom ? On peut l’utilisé avec le plugin caméra ?

  4. Je me lance dans l’instalation mais au moment de passer :
    sudo pip install motioneye –upgrade

    J’ai :
    Invalid requirement: ‘–upgrade’
    Traceback (most recent call last):
    File “/usr/lib/python2.7/dist-packages/pip/req/req_install.py”, line 82, in __init__
    req = Requirement(req)
    File “/usr/share/python-wheels/packaging-16.8-py2.py3-none-any.whl/packaging/requirements.py”, line 94, in __init__
    requirement_string[e.loc:e.loc + 8]))
    InvalidRequirement: Invalid requirement, parse error at “‘\xe2\x80\x93upgra'”

    Qui s’affiche en rouge. C’est important ? Ca reste assez incompréhensible pour moi.

  5. Je n’ai pas la chance de voir un NAS. Cepandent j’ai un disque du externe brancher en USB sur mon routeur Tp-link. Comment je peux faire pour envoyer mes captures dessus ?

    Autre question, tu parle de piloter les caméras motorisé via l’interface. Comment fais-tu, je ne vois pas de bouton pour faire bouger l’objectif.

    1. Bonsoir, là, il faut monter un partage samba sur votre routeur ou l’équivalent, voir votre routeur et son paramétrage. Pour les caméras motorisés, je passe par Jeedom et des positions pré-enregistrées. Bonne utilisation.

  6. Merci pour ta réponse. J’utilise en fait le upload média sur mon ftp, je n’avais pas vu cette option.
    Mis en place hier soir, bcp de faux positif pour l’instant, il faut que je revois les réglages.

  7. Bonjour,

    Merci pour ce tutoriel.

    J’ai suivi le tutoriel, cependant je bloque sur la partie suivante :
    ——————————————————————————————————————————————-
    mkdir -p /mnt/QNAP
    sed -i ‘$a ipdunas:/Domotique /mnt/QNAP nfs rw 0 0’ /etc/fstab
    mount -a
    cd /mnt/QNAP et faire tab! vous verrez le contenu du point de montage contenu dans le NAS !
    ——————————————————————————————————————————————–
    J’ai donc créer le dossier /mnt/OMV dans mon cas et ensuite je tape la commande suivante :
    sudo sed -i ‘$a 192.168.100.53/MotionEye /mnt/OMV nfs rw 0 0’ /etc/fstab

    La commande se déroule bien cependant au moment de lancer la commande “mount -a” j’obtiens le message suivant :

    mount: mauvais type de système de fichiers, option erronée, superbloc erroné
    sur 192.168.100.53/MotionEye, page de code ou programme auxiliaire manquant, ou autre erreur
    (pour plusieurs système de fichiers (NFS ou CIFS par exemple), un
    programme /sbin/mount. auxiliaire pourrait être nécessaire)

    Aurais-tu une idée concernant cette erreur ? le partage sur mon nas fonctionnant correctement.

    Cordialement,

      1. Bonsoir,
        En effet, il manquait quelques install et quelques erreurs de frappe.
        Une fois tout ça fait, cela fonctionne.
        Merci pour l’aide.
        Cordialement

  8. Bonjour,
    Je pense que des mises à jour ont été publiées mais je ne sais pas comment les installer sur ma VM Debian,
    la commande pip install motioneye –upgrade ne semble pas charger les upgrade concernant motion
    Mes versions actuelles sont :
    motionEye Version 0.39.3
    Motion Version 4.0
    OS Version Debian 9.8

    Motion existe en version 4.2.2

    1. Attention, motion n’est pas motioneye comme vous l’avez remarqué.
      Pour suivre les updates de motioneye, upgrade/update.
      Perso, je préfère rester sur les updates de motioneye.
      J’ai tenté par le passé ZM, Shinobi et Motion en direct… maintenant j’ai quelque chose de stable, je garde.

        1. Benjamin, il manque un post avant celui de 23h44. J’indiquais une petite subtilité lors du passage de montionEye en 0.40 concernant les fichiers de conf des caméras qui changeaient de noms.

  9. bonjour, jai bien installé motioneye sur ma rasbperry pi [B3] mais quand je lance l’adresse ip il s’ouvre pas! je sais pas ou le probleme ?

  10. Bonsoir, merci du tuto 🙂
    a tout hasard avez vous trouver comment controler le live streaming par exemple faire un ON/OFF du streaming sous jeedom ou sous motioneyeOS ? ( URL ? API ?)

    Cordialement.

    1. Bonsoir j’utilise cette feature par JPI pour ma part. Pas pour mes caméras extérieures qui sont tout le temps activées avec détection. Je préfère… Il faut regarder du côté de l’api de vos caméras et non de motioneye. Pour activer le flux ou le désactiver.

  11. Benjamin,
    Pour la partie détection et surtout le masquage, comment fais-tu dans le cas d’une caméra PTZ avec plusieurs zones configurées ?

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *