motionPie, surveillance vidéo avec Raspberry Pi

Posté le par | Réponse(s) : 41

Vous avez un projet de vidéo surveillance personnel pour surveiller votre chat (ou les autres qui viennent lui manger ses croquettes), vos schtroumps jouant dans le jardin ou surveiller votre habitation, motionPie est fait pour vous. J'ai déjà abordé ce genre d'installation dans cet article et dans celui-là. motion est un programme relativement puissant et efficace mais il faut reconnaitre que l'utilisation et la consultation des images/vidéos/stream ne sont pas très "user-friendly".

Je vais vous présentez aujourd'hui MotionPie, une "quasi-distribution" pour votre Raspberry Pi développée autour de rpi-BluidRoot (une distribution très légère pour Raspberry Pi basée sur Buildroot), utilisant motion en arrière-plan (Back-end) et motionEye comme interface de communication avec motion et l'administrateur/utilisateur (Front-end).

motionPie va donc permettre d'analyser le signal vidéo (à partir d'un ou plusieurs appareils), de détecter si une partie importante de l'image a été modifiée (en d'autres termes détecter le mouvement) et d'agir en fonction des paramétrages de l'utilisateur : faire une capture d'image ou une capture vidéo. Le tout sera mis à disposition de l'utilisateur via une interface web simple, consultable sur n'importe quel navigateur web (ordinateur de bureau ou smartphone) ou au travers de son réseau de partage local grâce à Samba fonctionnant avec des systèmes d'exploitation Microsoft® Windows® et Apple® Mac OS® X, ainsi que des systèmes GNU/Linux, *BSD et Solaris.

Matériel nécessaire

  • un Raspberry Pi
  • module de Caméra Raspberry Pi et/ou une webcam et/ou Caméra IP
  • une alimentation en 5 volts
  • une carte SD (ou microSD)
  • un adaptateur WIFI USB ou câble RJ45 pour le réseau. Je conseille un dongle Edimax (utilisé par les développeurs). Pour l'instant, motionPie ne prend pas encore en charge la majorité des dongles, vérifiez la compatibilité du votre sur le site eLinux (un adaptateur Ralink Technology, Corp. RT5370 fonctionne très bien). Après test, motionPie ne semble fonctionner que sur les réseaux wifi en WPA. Si vous utilisez WEP, passez votre chemin et utilisez un câble ethernet.
  • en option, un disque dur USB
  • un "habillage" pour le module de Caméra à l'extérieur (je n'en parlerai pas ici).

Installation de motionPie

Rendez-vous sur la page GitHub consacrée au téléchargement de motionPie.

  • télécharger la dernière version disponible
  • extraire l'image nommée motionPie.img
  • écrire l'image sur la carte SD (la technique est là même que pour installer Raspbian par exemple). L'opération dure moins de 2 minutes.

Connectez votre câble réseau (RJ45), insérez la carte SD et mettre sous tension le RPi. Il est totalement inutile de raccorder votre RPi à un quelconque écran, motionPie n'intègre pas de gestionnaire d'affichage, seule une image "arc-en-ciel" correspondant au chip graphique ne sera diffusée. La gestion/visualisation des caméras se fait par le biais d'une interface web (tout navigateur confondu).

Patientez une à deux minutes lors de la première mise en route le temps que motionPie :

  • organise ses dossiers,
  • configure l'accès à distant par SSH,
  • mette en place le mot de passe root lors de l'accès à l'interface,
  • configure toutes les caméras connectées au RPi.

fing

Pour se connecter, il faut se rendre sur l'adresse IP de votre RPi. Chez moi, ce sera 192.168.1.19 que je taperai dans la barre d'adresse Firefox.

Si vous n'avez aucune idée de l'adresse IP, vous pouvez soit

  • jeter un œil dans la liste des appareils connectés de votre Box Internet
  • soit télécharger et installer Fing, une application Android qui permet de lister en détail tous les appareils connectés sur le même réseau).

La capture vous montre ici la liste de mes appareils connectés, celui qui nous intéresse est 192.168.1.19 MP-xxxxxxxx. Les chiffres suivant MP représentent le numéro de série de votre RPi. Il servira entre autre comme mot de passe pour une éventuelle connexion SSH.

 

 

L'interface motionPie

L'interface motionPie se charge dans votre navigateur. À la première connexion, on va s'identifier avec le login "admin" et aucun mot de passe.

L'interface se résume à une grande fenêtre comprenant la ou les caméras (motionPie affiche par défaut le module caméra RaspiCam) et un bandeau supérieur dans lequel on trouve des icônes pour accéder aux paramètres (le premier), permuter utilisateurs/admin (le second). Vous noterez que le numéro MP-xxxxxxxx est aussi présent. L'utilisateur simple n'a pas accès aux réglages.

Dans un premier temps, effectuez les réglages nécessaires :

  • passer en mode paramétrages avancés (Show Advanced Settings) ,
  • mettre un mot de passe à l'admin,
  • mettre un mot de passe user,
  • renseignez votre fuseau horaire.

Appliquez les changements.

Après s'être à nouveau connecté à l'interface avec vos nouveaux identifiants, vous avez accès à :

  • Wireless Network : c'est ici que vous renseignerez le nom SSID de votre réseau et la clé (PSK) de votre réseau
  • Video Device : fenêtre des paramètres de la caméra que vous avez sélectionné (détection de lumière activée par un interrupteur, réglage de l'image, résolution de l'image, nombre d'images par seconde)
  • File Storage : représente le chemin du répertoire où seront stockées les images et vidéos prises lors d'une détection de mouvement ou un enregistrement manuel. Vous pouvez définir de stocker sur la carte SD, sur un disque dur externe ou sur un partage réseau. Même si vous choisissez un stockage carte SD ou DD externe, les archives (images et vidéos) sont disponible sur le partage en réseau SAMBA via votre explorateur de dossiers (Windows Explorer/Windows ou Nautilus/Linux par exemple)
  • Text Overlay : réglages du texte imprimé sur la vidéo (stream)
  • Video Streaming : réglages et informations concernant le streaming vidéo
  • Still Images : réglage des images fixes
  • Motion Detection : réglage de la détection de mouvements
  • Motion Movies : réglage de la qualité d'enregistrement vidéo
  • Motion Notifications : réglage de la notification lors de la détection de mouvements
  • Working Schedule : (horaire de fonctionnement) permet d'activer ou désactiver l'enregistrement lors de mouvements à certaines plages horaire pour chaque jour de la semaine.

Ajouter une caméra

Dans mon exemple, j'ai réussi très facilement à faire tourner la RaspiCam (par défaut), une webcam Microsoft LifeCam, une webcam Logitech QuickCam Communicate STX et les Nexus 5, Nexus 72 en mode IP Webcam. Le tout s'est déroulé plug and play. (PS : non, mon bureau n'a rien à envier en ce moment à celui de Linus Torvalds 😉 )

Pour ajouter une caméra il faut être en mode "settings", branchez préalablement vos webcam, activez vos caméras IP puis on clic sur le menu déroulant où figure la caméra (bandeau en haut) et on sélectionne "add camera". Ajoutez successivement vos webcams :

motionPie04

Pour une caméra IP, idem puis renseignez l'adresse de la caméra (si vous utilisez l'application Android IP Webcam, l'adresse sera http://ip.du.smartphone:8080/video) :

motionPie05

Si vous utilisez plusieurs RaspiCam, donc plusieurs dispositifs de surveillance Raspberry Pi, vous pouvez les regrouper sur une seule et même interface de surveillance :

motionPie06

Chaque caméra est paramétrable par le biais de l’icône "outil" visible sur chaque image de caméra. On y trouve aussi, pour chaque caméra, des icônes pour mettre en plein écran, accéder aux images fixes prises et aux vidéos :

motionPie07

Voilà votre système de surveillance est au point. Si vous souhaitez avoir accès à cette interface (hors réseau local), pensez à mapper les différents ports utilisés sur votre Box.

Pour conclure

motionPie devrait plaire à tous ceux qui ont eu des problèmes de configuration avec motion et avec le streaming avec visionnage par navigateur. L'installation et la mise en place de motionPie est relativement simple, ce système très léger parait robuste et efficace, je n'ai pas encore testé dans la durée mais il a bien fonctionné durant mes 48 heures de test. Il faut saluer le travail de Calin Crisan, le principal développeur de ce système spécialisé motion qui ne cesse d'améliorer son bébé depuis la première release du 11 juillet 2014 (nous en sommes à la 12ème).

J'ai été très surpris par l'efficacité de la prise en charge des webcams, visiblement de nombreux drivers ont été intégrés dans cette petite distribution, en revanche je suis un peu déçu par la prise en charge des dongles USB et l'utilisation exclusive du WPA. Je l'ai contacté à ce sujet et il m'a confirmé qu'il travaille dessus. Cela fera parti des prochaines releases.

On peut noter qu'il y a un léger décalage plus ou moins long en fonction du nombre de caméras connectée (quelques secondes), ceci doit aussi être amélioré. Il faut tout de même reconnaitre que le petit CPU du RPi doit gérer tous les flux vidéos préalablement traités, les captures d'images, les captures vidéos ainsi que les flux réseau et qu'il fait plutôt bien le job. À mes yeux l'inconvénient majeur repose sur le fait que plus on connecte de caméras, plus on est obligé de descendre en résolution pour un streaming fluide. Les vidéos sauvegardées lors d'une détection de mouvement sont quant à elles fluides.

Si je devais mettre en place un tel système de surveillance personnel (ou semi-pro), je ferais entièrement confiance à motionPie, mais à part analyser le comportement des chats attirés par les croquettes du mien, je ne vois pas (encore) l'utilité (pour le moment) de déployer un tel système. Par contre, il peut s’avérer très utile dans le cadre de surveillance en boutique ou dans des zones privée avec du passage. Quoiqu'il en soit, gardons à l'esprit quela vie privée n'a pas de prix : réfléchissez bien à ce que vous allez surveiller, comment et pourquoi, et à protéger votre système de surveillance avec un mot de passe maousse costaud.

Compléments et sources :

La page GitHub de motionPie.

La page de téléchargement motionPie.

La page de Average Man VS Raspberrypi pour un montage avec une Nwazet Pi B+ Camera Box.


Licence Creative Commons
Cet article, sauf mention contraire expresse, est publié sous licence Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported Licence.

Vous avez aimé cet article ? Alors partagez-le avec vos amis en cliquant sur les boutons ci-dessous :
Google Plus Twitter Facebook Linkedin Framasphere email Flattr !

41 commentaires sur “motionPie, surveillance vidéo avec Raspberry Pi

  1. Bonjour,

    félicitations pour votre article, très bien fait. Mais comment sauvegarder les paramètres. Sur les copies d'écran que vous présenté, Il me semble qu'il manque le bouton (couleur orange) "apply" dans la barre horizontale sur le haut de l'écran. (Je suis enregistré comme admin sans mot de passe). Pouvez vous m'indiquer la procédure à suivre pour effectuer la sauvegarde des paramètres.
    Merci pour votre aide et joyeuses fêtes de fin d'années.

    Rusty Breisach

  2. Bonjour,

    Je suis pleine installation d'un système de sécurité équivalent.

    En fait, celui-ci est composé d'une caméra Pi Noir (Infrarouge) et d'un projecteur Infrarouge.

    Je souhaiterais déclencher le projecteur infrarouge via une carte relais à la détection de mouvement. Est ce que l'envoie du signal sur la carte relais est gérable via cette appli, ou nécessite un script externe ?

    Merci pour vos réponses !

    Cordialement,

  3. Bonjour
    Félicitations aussi pour cette doc, j'ai procédé à l'install sur une nouvelle carte avec Isodumper sous Mageia, c'est super rapide a mettre en place de l'installation a la configuration.
    Un point était déroutant pour moi, la diode rouge était fixe et je pensais que l'image n'était pas correctement installée.
    J'ai connecté sans problème une Logitech et une Créative, mais pas la camera IP Heden vision cam, comme sous raspbian avec zoneminder.
    Bravo

  4. Bonjour,
    J'aimerais vous féliciter pour cette article sur le motionpie... Malgré des recherches sur le net, je n'arrive pas à trouver réponses aux questions suivantes:
    Le motionpie installé sur mon raspberry est connecté sur mon réseau wifi via un dongle Edimax... Après quelques heures d'inactivités, le dongle wifi rentre en veille et pour le "réveiller", je dois utiliser l'application Fing sur mon smartphone afin de lui envoyer un ping, qui le sort de son "hibernation"... Est ce normal ou on peut le modifier via une ligne de commande...
    Pour finir, Motionpie est installé sur une SD de 32go... Après une journée d'enregistrement, je n'arrive pas à avoir la liste des photos et enregistrement, celui ci m'indique la phrase suivante " failed to get pictures list". Est ce que cela pourrait venir de ma carte SD sur le formatage en fat ou ntfs???
    Merci pour vos réponses, au plaisir de vous lire....

    • Bonjour Widder,
      Dans un premier temps, l'alimentation est-elle suffisante ? Pour être certain d'être efficace une alimentation de 5V 2A est recommandée.
      D'après ce que j'ai pu lire, le dongle Edimax aurait une option de mise en veille automatiquement. Si le dongle Edimax a un chipset Realtek 8192cu, une manipulation simple peut résoudre le problème de deux manières via SSH :

      - l'option de mise en veille est activée dans les paramètres réseau wifi, dans une console :
      sudo iwconfig
      Rechercher une ligne "Power Management:on".
      sudo nano /etc/network/interfaces
      changer la valeur "on" par "off" de "Power Management:on".
      ajouter cette ligne : wireless-power off
      ("Ctrl + x" pour fermer le document, "O" ou "Y" pour permettre d'écrire sur le document, "ENTER" pour valider)

      - modifier les paramètres du dongle (en console) :
      sudo nano /etc/modprobe.d/8192cu.conf
      Ajouter ces deux lignes :
      # Déactiver power management
      options 8192cu rtw_power_mgnt=0

      ("Ctrl" + X, "O", "ENTER")
      Rebooter

      Normalement tout devrait rentrer en ordre 🙂

      • Bonsoir ookpik...
        Merci de m'avoir répondu... J'ai pu échanger quelques mails avec le créateur du Motion pie sur mes problèmes rencontrés. Malgré la derniere mise à jour (20150331), mon dongle wifi Edimax fait de la résistance, il rentre toujours en "hibernation" après quelques heures d'inactivité.
        Ma question, comment fait on pour rentrer les lignes de commande que vous indiquez?? Avec le logiciel putty??? Pourriez vous de donnez une marque de dongle wifi dont "l'hibernation" est arrêté et vérifié....
        Pour ce qui est de la phrase "failed to get pictures list", lorsque je demande un timelapse après une journée d'enregistrement, cela proviendrait de la limite des performances du rapsberry Pi model B (petit processeur)... Je vais devoir investir sur le rapsberry pi 2...
        Celui ci devrait mieux gérer toutes les informations...

        Pour finir, ayant testé la PiNoir, je suis déçu par le rendu....

        Très cordialement....

  5. Pingback: Raspberry Pi et Vidéo surveillance : Installation de MotionEye | lairbag

    • Plop,
      En ce moment je n'utilise pas motionPie (pas de réel besoin pour le moment). Je me souviens que, pour avoir accès à l'interface depuis l'extérieur, j'ai dû mapper l'IP du Rpi et du port depuis le panneau de configuration de la box. Sur ma box (SFR) : onglet Réseau > NAT :
      Protocole : TCP
      Type : port
      Ports externes : 8081
      Adresse IP de destination : IP du RPi
      Ports de destination : 8081

      Activer et/ou rebooter la box.

      Chez moi, un certain nombre de services fonctionnent ainsi avec plusieurs RPi et ports différents.

  6. Bonsoir,
    J'ai un autre problème, je reçois bien les images mais seulement juste après avoir démarrer le raspberry, après plus rien. Comme si motion était en veille, pourtant je vois bien via l'interface web la visu de la cam donc pas en veille ...
    Je ne comprends pas, une idée ?

  7. La solution se trouve peut être dans le fichier etc.init.d/S95motioneye, mais je ne sais pas quoi modifier.

    #!/bin/sh

    watch_timeout=120
    conf="/data/etc/motioneye.conf"
    dev_v4l_by_id="/dev/v4l/by-id/"

    def_port=$(cat /programs/motioneye/settings.py | grep PORT | tr -d ' ' | cut -d '=' -f 2)

    if [ -f "$conf" ]; then
    opts=$(cat "$conf" | while read line; do echo "--$line"; done)
    port=$(echo "$opts" | grep -oE 'port [[:digit:]]+' | cut -d ' ' -f 2)
    else
    echo "port $def_port" > "$conf"
    port=$def_port
    fi

    responsive() {
    if wget -q -t 1 -T 2 -O - http://127.0.0.1:$port/static/img/motioneye-logo.svg >/dev/null 2>&1; then
    return 0
    else
    return 1
    fi
    }

    watch() {
    count=0
    while true; do
    sleep 5
    if responsive; then
    count=0
    else
    if [ $count -lt $watch_timeout ]; then
    count=$(($count + 5))
    else
    logger -t motioneye -s "not responding for $watch_timeout seconds, rebooting"
    reboot
    fi
    fi
    done
    }

    find_persistent_device() {
    device=$1

    if ! [ -d $dev_v4l_by_id ]; then
    echo $device
    return
    fi

    for p in $dev_v4l_by_id/*; do
    if [ $(realpath "$p") == $device ]; then
    echo $p
    return
    fi
    done

    echo $device
    }

    start() {
    echo -n "Starting motioneye: "
    /usr/bin/python2.7 /programs/motioneye/motioneye.py >>/var/log/motioneye.log $opts 2>&1 &

    count=0
    while true; do
    sleep 1

    if responsive; then
    break
    fi

    if [ $count -gt $watch_timeout ]; then
    echo "failed"
    reboot
    return
    fi

    count=$(($count + 1))
    done

    # add connected camera(s) with default settings
    if responsive && ! [ -f /data/etc/motion.conf ]; then
    count=$(ls /dev/video* 2>/dev/null | wc -l)
    index=1
    for device in $(ls /dev/video* 2>/dev/null); do
    if [ "$count" -gt "1" ]; then
    output_dir="/data/output/camera$index/"
    else
    output_dir="/data/output/"
    fi
    uri="/config/add/?_username=admin"
    device=$(find_persistent_device $device)
    body="{\"uri\": \"$device\", \"proto\": \"v4l2\"}"
    signature=$(echo -n "POST:$uri:$body:" | sha1sum | cut -d ' ' -f 1)

    curl -s -m 60 --data "$body" "http://127.0.0.1:$port$uri&_signature=$signature" > /dev/null
    index=$(($index + 1))
    done
    fi

    watch &

    echo "done"
    }

    stop() {
    echo -n "Shutting down motioneye: "
    ps | grep motioneye | grep -v $$ | grep -v grep | tr -s ' ' | sed -e 's/^\s//' | cut -d ' ' -f 1 | xargs -r kill
    echo "done"
    }

    restart() {
    stop
    start
    }

    case "$1" in
    start)
    start
    ;;

    stop)
    stop
    ;;

    restart)
    restart
    ;;

    *)
    echo "Usage: $0 {start|stop|restart}"
    exit 1
    esac

    exit $?

  8. Bonjour,
    J'ai installé en Raspberry pi avec Motion pie il y a quelques semaines et tout fonctionne très bien, cependant je souhaiterais y connecter une caméra IP.
    J'en ai donc acheté une, mais elle ne fonctionne pas avec Motion pie,
    J'ai écrit à Calin Crisan qui m'a répondu que "HTTP Digest authentication" n'était pas supporté par motion pie.
    Je ne connais pas grand-chose en Webcam et j'aurais voulu savoir si l'un d'entre vous aurait une liste de WebCam Ip fonctionnant avec Motion Pie, ou si quelqu'un en aurait une à me conseiller,
    Merci d'avance.

  9. Bonjour,
    Après plusieurs mois d'utilisation. Il s’avère que je rencontre un problème plutôt gênant, après quelques jours, l'image fige sur motionpie et l'accès à la micro SD est impossible (erreur : An error occurred. Refreshing is recommended) mais l'accès à l'interface est fonctionnel. Le reboot via l'interface web n'y change rien, il faut un reboot physique.
    Ce problème se reproduit en boucle après chaque relance de l'appareil. Un collègue utilise également cette distribution et rencontre exactement le même problème (pourtant autre alim, autre caméra mais même raspberry, même carte wifi).
    Je vais faire quelques test (réinstallation distribution, si ko changement alim, si ko changement caméra, si ko branchement sur réseau filaire).

    Si vous avez rencontré le même problème et que vous avez trouvé une solution je suis biensur preneur.

    Configuration:
    Raspberry Pi RBCA000
    Caméra infra rouge SainSmart (compatible).
    Wifi : Edimax EW-7811UN Nano
    MicroSD : Lexar 16GO LSDMI16GBBEU300A
    Alimentation : 5V/2.4A
    Distribution : Motionpie 20150719

    • Bon après quelques test il semble que le problème vient de la distri, j'ai réinstallé la ditri, utilisé une autre alim, autre caméra, testé également avec le raspberry 2, le pb persiste, au bout de 4-5 jours image figée ! Je vais tester l'application motionPie.

  10. Bonjour , j'ai installé motionPie sur mon raspberry et tout fonctionne très bien. Maintenant, j'aimerais savoir quelles sont les manipulations a effectuer pour avoir accès à l'interface en dehors du réseau local depuis mon smartphone par exemple. Merci d'avance.

  11. Bonjour,

    J'ai un souci avec la réception des emails... Ben je reçois rien en faite !!! J'ai essayé plusieurs emails, Free, Gmai, Yahoo... TLS ou non, port 465 ou 587...
    Pourquoi working schedule reste sur OFF ?

    J'ai comme l’impression que c'est un truc tout bête mais quoi ???

    Merci à vous

  12. Bonjour,

    Ok j'ai déjà testé hier cette méthode. J'ai donc mis working schedule sur ON ainsi que sunday de 00h30 à 23h30 et ça change rien. Faut peut être le faire tout les jours ? C'est quoi la différence entre input et outpout ? Entre les horaires ou hors des horaires ? En tout cas il reste sur OFF.

    • Non pas besoin tout les jours, par contre si tu as sélectionné during working schedule la détection ne fonctionnera que le dimanche entre 00h30 à 23h30, donc le reste du temps pas de détection et donc pas de mail. Si malgré la sélection d'une plage horaire et après application de la conf, l'option revient sur OFF. Sans plus d'informations je ne serais dire d’où vient le problème .

  13. Bonjour,

    J'ai renseigné during working schedule du lundi au dimanche de 00h30 à 23h30.
    j'ai bien par défaut le port 80, donc j'ai rien touché de plus.
    Dans l'adresse je met donc : 192.168.xx.xx:80. '80' s'efface et je suis sur la page d’accueil. Si je met 8080 erreur connexion réseau.
    J'ai un truc à faire de plus sur le navigateur ?

    Merci

  14. Merci pour ce tuto

    Par contre, un peu perdu avec cette distribution minimaliste, je n'arrive pas à changer le mot de passe root ( lecture seule)

    Une idée sur la manip pour changer ce mot de passe (il apparaît en clair comme nom de machine) ou à défaut, changer le nom de la machine

    Merci d'avance

  15. Bonjour a tous, et merci de m'avoir fais découvrir motion pi ! 😉
    J'avais une petite question cependant, peut on mettre motion pi sans mettre la distribution au complet ?? Dit autrement, installer motionPi sur une distribution classique ?

    Merci bien 🙂

  16. Bonjour,
    Après galère pour installer Motion sur RPI 3 (la même version 3.2.12 de Motion sous Raspian ne reconnait pas les commandes motion.conf qui fonctionne très bien sous Motion-Xubuntu ??), je découvre votre MotionPie. Je l'ai téléchargé et installé .img sur carte sd, malheureusement mon RPI3 avec Motionpie n'apparait même pas dans les ip locales (ni sur router Bbox3 ni sur Fing).
    Y a t il un MotionPie prévu pour RPI3 avec caméra Rasp car en effet Motionpie semble alléchant ?
    Merci

  17. Bonjour.
    J'essaye d'utiliser motionpie ou motioneyeos sur Raspberry Pi 2, avec des caméras ip Heden VisionCam HD. Ces caméras ne sont pas reconnues, à cause, je pense de leur format de fichier qui est du MP4 codec H264. Est-ce bien là la raison, et y a-t-il une version, une possibilité quelconque pour faire reconnaitre ces caméras par le logiciel ?
    Merci par avance de votre aide.

Laisser un commentaire

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