VidéoSurveillance avec MotionEye sur Raspbian Stretch et plusieurs Caméras

Page mise à jour le : 29 juillet 2019

—> Article vérifié le 05/07/2019 : bon anniversaire Céline R 😉
Ça tourne sur un Rpi3 avec Raspbian Strecth (ne pas utiliser Buster pour le moment).
Je viens de mettre à jour pour que Motion soit en version 4.2.2 ; tout fonctionne, je viens de refaire toute l’installation chez moi.

—> Article vérifié le 22/04/2019 :
Sur un Raspberry Pi Zero V1.3 avec Raspbian Lite = il faut absolument appliquer la ligne sudo python -m pip install --upgrade pip setuptools wheel avant de faire sudo pip install motioneye ; sinon, on réapplique les 2 lignes en cas d’échec avec sudo pip install motioneye
(je n’ai pas encore testé sur mes Rpi3 ou Rpi3B+ avec Raspbian graphique)

–> Article vérifié et mis à jour le 17/01/2019
–> Tutoriel applicable sur un Raspberry Pi mais aussi sur un PC tournant avec la version x86 de Raspbian

Allez zou –> Le tuto :

Ayant la volonté de réaliser un cours/tutoriel/tutoral complet sur MotionEye depuis longtemps, je suis un peu poussé à le faire suite à quelques demandes ; notamment iPapy 🙂

Alors, je m’y mets vraiment cette fois.

–> Le sujet est “simple” (en théorie) :
Réaliser un système de vidéosurveillance qui va tourner sur un Raspberry Pi au moyen du très simple système MotionEye (le Démon Motion accompagné de son interface graphique).

–> La réalisation de l’article sera plus longue.
En effet, on va aborder plusieurs points:

  1. Installation de Raspbian Strech
  2. Installation de MotionEye
  3. Intégration des Caméras (et paramétrage pour envoyer des courriels, prendre des photos, …)
  4. Mise en place d’un système d’alerte sonore locale (le Raspberry Pi va parler dans la maison/appartement) avec alarme (un bruit de sirène) et (si vous avez un forfait FreeMobile) une notification par SMS.
  5. Mise en place de l’envoi d’un SMS avec l’option WebHook

Compte tenu du travail à fournir, ce tuto sera réalisé au fil de l’eau …
Car, je souhaite vraiment détailler chaque partie avec des captures d’écran.

Pour tenter de faire un tuto de qualité, je vais essayer de tout reprendre à zéro.
N’hésitez pas à me reprendre/corriger/compléter via les commentaires ou par courriel.

Installation de Raspbian Strech

Téléchargez Raspbian Desktop depuis le site officiel

Depuis la version “2018-06-27” de Raspbian Stretch, certaines améliorations sont intéressantes pour les non-initiés en raison du caractère automatique de certaines configurations de base (l’utilisateur est guidé pas à pas).

Donc, on télécharge l’image officielle depuis le vrai site, c’est à dire https://www.raspberrypi.org/downloads/raspbian/ et surtout pas depuis n’importe où sur le Net.
Le choix va se porter sur “Raspbian Stretch with desktop” qui est l’image avec un bureau graphique basée sur Debian Stretch (à l’heure de l’écriture de l’article, on est à la version de juin 2018).
Personnellement, je préfère toujours télécharger mes images via le système Torrent car ça accélère les choses + évite d’avoir une image ne venant que d’un endroit + participe à la diffusion de cette image.
Mais il est vrai que je fonctionne sous Linux et suis habitué au images de Linux partagées par Torrent.

Maintenant, il faut écrire (installer) cette image sur la carte microSD.
Vous devrez utiliser un outil d’écriture d’image pour écrire cette image.
Sous LinuxMint/Ubuntu, on a “créateur de clef USB” qui fonctionne, mais je conseille (pour Windows, Mac et Linux), l’excellent programme Etcher.

Capture d'écran de l'application Etcher en train d'écrire l'image de Raspbian sur Clef USB
Écriture de l’image de raspbian avec etcher

En effet, Etcher est un outil d’écriture graphique qui fonctionne sur Mac OS, Linux et Windows et (cerise sur le gâteau) qui vérifie que l’écriture a bien été réalisée + vérifie la carte SD (ou la clef USB) + ne nécessite aucun dézippage. Le bonheur quoi 🙂

Téléchargez Etcher depuis le site officiel et installez-le selon votre système d’exploitation.

Ensuite, il suffit de connecter votre carte SD puis de lancer Etcher.
Le programme demande de sélectionner le fichier à écrire et le support sur lequel écrire.
Voici un exemple avec une écriture sur clef USB (mon Raspberry Pi3 tourne avec clef USB et pas avec carte SD).
(Cette capture a été faite en Avril pour un autre tuto)

Une fois l’image écrite, insérez la carte SD (ou la clef USB si votre Rpi sait démarrer dessus), connectez un clavier, une souris, un écran et allumez le Raspberry Pi.

La nouveauté de cette version est que vous allez être invité automatiquement a réaliser diverses modifications.
Je trouve que cela est beaucoup plus sécurisé/sérieux car cela demande notamment de changer le mot de passe et lance une recherche des mises à jour !

En simplifiant, on passe tout en Français, on change le mot de passe, on active le SSH, la caméra et le VPN ; ensuite, on applique les mises à jour et on redémarre.

Compte tenu de l’heure (et du fait que la bande passante est prise), je ne vais pas lancer le démarrage de la nouvelle image maintenant mais je vous mettrai des images par la suite. (sinon, je vais encore me coucher à “pas d’heure”).

Pouf, magie de la TV … heu de l’Internet … C’est déjà réalisé 🙂

Écran d’accueil suite au premier démarrage de Raspbian
Écran de configuration des locales (en anglais par défaut)
Écran de configuration des locales passées en Fr
Mise en application des localisations
Demande de modification du mot de passe
Intégration du nouveau mot de passe (conseil = avec majuscules+chiffres+minuscules au minimum)
Recherche du réseau Wifi ; perso, je passe cette étape avec skip (suis en RJ45)
Écran de recherche des Mise à Jour de Raspbian lors de la configuration initiale
Vérification des mises à jour à réaliser
Lecture de la liste des mises à jour
Comparaison entre les listes locales et distantes
Obtention des mises à jour
Téléchargement des mises à jour à appliquer
Installation des mises à jour
Écran de confirmation de la fin de la mise à jour
Invitation à effectuer un redémarrage (Reboot) suite aux MàJ
Premier écran après redémarrage ; information que le système est à jour
Désactivation de l’Overscan afin de couvrir la totalité de l’écran (ici = passer de 1824×984 à 1920×1080)
Activation de la Caméra, du SSH et de VNC
Invitation à redémarrer pour application des modification de configuration

On passe donc à la seconde partie.

Installation de MotionEye

Alors, là, je vais reprendre un de mes précédents articles justement intitulé Installation de MotionEye sur Raspbian Strech sur Raspberry Pi3

Je n’ai absolument RIEN inventé. Ce protocole est en fait l’installation de MotionEye selon la méthode de Calin Crisan, le créateur du programme. J’ajoute juste des sudo apt-get update car j’ai déjà eu des erreurs de fichiers non trouvés et je préfère forcer les mises à jour des listes de fichiers (ceci est vrai de manière générale ; pas que pour MotionEye).

Attention, faites toutes ces commandes en faisant des [copier/coller] pour éviter les erreurs.
Pour copier, c’est facile, c’est la combinaison des touches “Ctrl” + “C” si vous travaillez directement sur votre Raspberry.
Mais, pour coller dans le Terminal, il faudra faire la combinaison “Maj” + “Ctrl” + “V” (ou “⇧” + Ctrl” + “V”)
(Vous pouvez voir mon article sur les [copier/coller] pour plus d’informations)

Préparation de l’installation :

sudo apt-get update
sudo apt-get install ffmpeg v4l-utils
sudo apt-get install libmariadbclient18 libpq5 libmicrohttpd12

Récupération et installation de Motion (le cœur du programme) :

sudo apt-get update
sudo wget https://github.com/Motion-Project/motion/releases/download/release-4.2.2/pi_stretch_motion_4.2.2-1_armhf.deb
sudo dpkg -i pi_stretch_motion_4.2.2-1_armhf.deb

Installation des dépendances nécessaires :

sudo apt-get update
sudo apt-get install python-pip python-dev libssl-dev libcurl4-openssl-dev libjpeg-dev libz-dev

Récupération et installation de la partie GUI pour avoir MotionEye (GUI = Graphical User Interface soit « interface graphique » en Français) :

sudo pip install motioneye

(En cas d’erreur, Claude, dans un commentaire d’un autre article sur MotionEye) préconise de lancer la ligne sudo python -m pip install --upgrade pip setuptools wheel puis de relancer la commande sudo pip install motioneye )

Ajout du 22/04/2019 (bonne fête Alexandre L) : à noter que j’ai testé 3 fois sur mon RpiZero V1.3 en réinstallant totalement Raspbian Lite et MotionEye = c’est bien la ligne sudo python -m pip install --upgrade pip setuptools wheel qui permet de débloquer la situation.

Configurations nécessaires au bon fonctionnement :

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

Automatisation de lancement du programme au démarrage du Raspberry Pi (MotionEye sera actif dès le démarrage du Raspberry ; ça devient automatique) :

sudo systemctl daemon-reload
sudo systemctl enable motioneye
sudo systemctl start motioneye

A noter que pour faire une mise à jour de MotionEye (puis une relance du programme MotionEye), on procède ainsi :

sudo apt-get update
sudo pip install motioneye --upgrade
sudo systemctl restart motioneye
Première connexion à MotionEye via http://localhost:8765

Par défaut, le port choisi par le créateur du programme est 8765, donc, vous pouvez (depuis votre Raspberry Pi) taper cette adresse dans le navigateur : http://localhost:8765/
Pour se connecter, la première fois, il faut juste entrer le nom de l’administrateur (“admin”) et valider puisqu’il n’y a pas de mot de passe pour le moment).

Pour le moment, entrez juste admin et validez.
Ne cochez pas Remember Me puisque nous allons modifier en mettant un mot de passe immédiatement.

Enfin, là, je vais gérer le lave vaisselle et aller au lit.

A demain !

Intégration des Caméras et divers paramétrages

Explications à suivre … Des images basiques pour le moment. Je vais rédiger les commentaires de chaque image par la suite.
A noter que les captures ont été relativement “anonymisées” par modification à la main, une par une, avec Gimp (oui, sacré boulot).

Premier écran de connexion à MotionEye
Il suffit de renseigner “admin” et de valider (sans mot de passe)
A ce stade, pas grand chose à part qu’il n’y a rien à voir 🙂 … et … que le programme nous invite à ajouter une caméra
Attention, par défaut, MotionEye propose une caméra locale mais de type USB (V4L2)
Il faudra bien choisir “Local MMAL Camera” si vous avez le module camera sur port CSI (Camera Serial Interface)
Une fois le type de caméra choisi, la caméra est proposée automatiquement
Arrivée sur la page de paramétrage de base où il reste pas mal de choses à régler
Je commence par passer la mise en page en 1 ou 2 colonnes
Après, d’emblée, je conseille d’activer les “Paramètres Avancés” (Advanced Settings) pour devenir le chef !
On peut alors changer les Noms d’Utilisateur (Username) et les mots de passe (Password) et valider avec “Apply”
Une fois les modifications validées (avec “Apply” en orange en haut), il faut se reconnecter (logique)
Là, on peut demander la sauvegarde du couple “User/Password” pour rendre la chose plus rapide par la suite
A la reconnexion, on tombe sur la vidéo en grand sans voir les paramètres. On va donc cliquer sur Settings (les 3 lignes à gauche)
Et voilà l’accès aux réglages plus fins pour mettre la surveillance vraiment en action
Modification de la qualité de la vidéo ; je ne pousse pas trop ; ce n’est pas utile et c’est un Raspberry Pi 😉
Zone de modification du stockage des images (là, on ne touche à rien, mais je vous montre tout de même 😉 … Je suis cool)
Ici, on accède aux modifications des “tampons” (stamps) incrustés sur les images ; souvent je passe la date en jj-mm-aaaa
Modification des règles de sauvegarde des images. Sélectionnez l’option “Motion Triggered” pour capturer des images en cas de détection de mouvement. C’est la seule option possible pour faire des photos tout au long des alertes
Réglage du temps de maintien en mémoire des images (là, je sélectionne juste 1 mois pour purger ni trop tôt ni trop tard)
Message d’alerte informant que toutes les images du dossier “Camera1” seront effacées par la tache cron créée par “Preserve Pictures”, même celles non prises par MotionEye (raison pour laquelle, on ne modifie pas le lieu de stockage précédemment)
Réglage du seuil de modification de l’image pour activer la détection. Souvent, je mets le curseur à 3%
Déroulement de “Motion Notifications” où il est possible de choisir différentes possibilités notamment la réception de courriels.
Réglages à utiliser pour Gmail. (Évidemment, ces adresses sont fausses 😉 ; c’est pour être explicite) A noter le choix de 3 secondes pour laisser le temps d’ajouter des images dans le courriel ; vous affinerez si besoin.
Il est possible de tester les paramètres pour vérifier que ça fonctionne. Ici, vous avec la notification de réussite.
Maintenant, n’oubliez pas de valider en cliquant sur le “Apply” pour appliquer les modifications !
Pour ajouter une autre caméra, il faut cliquer sur la caméra actuelle et choisir “Add Camera” ; tout simplement.
Exemple pour une caméra réseau (dans le cas présent, un Rpi Zéro tournant avec MotionEyeOS en “simple flux”). Il faut cependant bien choisir “Network Camera”. Parfois les bons paramètres ne sont pas si faciles à trouver. Patience et courage 😉
Et voilà la seconde caméra en visuel. C’est un Raspberry Zero doté d’un module noIR avec LED infrarouges = vision nocturne.
Enregistrement d’images si détection de mouvement + effaçage automatique après 1 mois (comme pour la première caméra)
Réglage des paramètres de détection. Je laisse souvent tout d’origine (sauf le 3%).
Ajout d’une troisième caméra. Celle-ci est une caméra IP de marque Heden qui a 6 ans. Elle possède une vision nocturne mais une qualité visuelle limitée (640×480). Avec les Caméra IP, le plus dur est de trouver l’adresse du flux vidéo exploitable.
Et voilà ce que ça donne avec 3 caméras (je suis repassé en “Layout” avec 2 colonnes pour l’exemple). Il y a 1 module caméra connecté au Raspberry Pi + 1 caméra réseau (un RpiZero sous MotionEye) + 1 Camera IP du commerce (marque HEDEN)
Ho ; j’ai cru voir un M&M’s … Ha mais oui, j’ai bien vu un M&M’s !!! Nous allons donc illustrer une intrusion
Et là, vous voyez que MotionEye est passé en mode “Alarme” ou “Détection” car il passe en rouge et prend donc des photos
Sur cet écran, vous voyez le retour à l’état d’origine suite à la disparition de l’intru ; c’est à dire le disparition du cadre rouge
Ici, je fais afficher les photos prises lors de l’alerte au M&M’s. Il y a 1 image par seconde avec une photo avant la détection.
Voici la première image enregistrée ; vous voyez que c’est l’état AVANT l’intrusion ; c’est pratique pour voir ce qui a changé
Et voilà donc l’objet du délit. Un M&M’s qui ne se mange pas ; franchement ; fallait le dénoncer !
Lorsque nous demandons l’effacement des images, nous avons une demande de confirmation par sécurité.
Retour automatique à l’écran de base une fois que les images précédentes ont été purgées.
Pour l’exemple, voici comment laisser le Raspberry Pi en fonctionnement mais couper la surveillance : il suffit de taper la commande “sudo systemctl stop motioneye” dans le Terminal. Et on relance avec un simple “sudo systemctl start motioneye” (voir ci-dessous)
Pour supprimer une caméra de MotionEye, on la sélectionne puis on clique sur la corbeille à droite de son nom (Remove Camera)
Demande de confirmation avec de supprimer cette entrée vidéo
On a bien supprimé totalement la caméra n°3 de MotionEye. Tous les paramètres sont purgés ; il faudra tout refaire (sauf si on a fait une sauvegarde avec “Backup”)

Mise en place d’un système d’alertes sonores

Le concepteur de MotionEye a bien fait les choses ; il a prévu moult options (moult est invariable) et il a même prévu que nous pouvions … en prévoir d’autres 🙂

Je vous propose d’utiliser l’option “Run A Command” que j’ai encadrée en rouge sur la capture ci-dessous.
Cela permet de demander au programme de lancer une commande personnalisée en cas de détection de mouvement.

L’option “Run A Command” est désactivée par défaut ; il suffit de l’activer.
On active simplement l’option en cliquant sur le “off” qui se transforme en “on” et laisse apparaitre une zone de texte.
Et là, on inscrit la commande à exécuter ; ici, c’est un script mis dans un dossier spécifique (plus logique)

Attention : n’oubliez pas de valider en cliquant sur “Apply”.

Oui, je sais … Comment cela va-t-il pouvoir fonctionner puisque rien de tout cela n’existe ???

OK ; vous avez raison et c’est pour cela que nous passons à la partie “programmation”.

Tout va débuter par la création du dossier “notifications” avec cette simple ligne :

mkdir notifications

Comme on n’a rien précisé, le dossier “notifications” sera créé où nous sommes. Mais nous pouvons aussi donner le chemin complet si vous préférez :

mkdir /home/pi/notifications

Vous vous demandez peut-être “Mais, Alban, pourquoi diable avoir créé un dossier et pas juste un fichier ?

La réponse est simple : “Hé, c’est qui le chef ?” ; “C’est lui, c’est moi, c’est nous !” ; “Et nous, on aime bien les dossiers !!!

Bon, en fait, plus objectivement, l’idée est simpliste = avoir un dossier pour y mettre tout ce qui nous sera nécessaire pour les notifications.
C’est plus propre et plus facile en cas de migration sur autre système (on sauvegarde le dossier).
Mon dossier “nofitications” contient donc le notification.sh mais aussi le fichier son “alarme.mp3” et la phrase d’alerte “lue” par le Raspberry Pi.

Pour la réalisation du script, on va faire soit en ligne de commande soit en mode graphique.

Pour le mode graphique, faites :

sudo leafpad /home/pi/notifications/notification.sh

Et ça ouvrira l’éditeur de texte.

Sinon, faites :

sudo nano /home/pi/notifications/notification.sh

Et vous pourrez alors le faire à la méthode du “Linuxien de la mort qui tue” = en codage directement dans le Terminal !

Quelques soit la méthode, le fichier va ressembler à ça :

#!/bin/sh

# 01 - Script pour jouer un son d'alarme

mplayer /home/pi/notifications/alarme.mp3

# 02 - Script pour lire une phrase d'alerte

mplayer /home/pi/notifications/alerte.wav

01 – Pour jouer le son, on va installer mplayer (qui est un lecteur hyper léger) en faisant :

sudo apt-get install mplayer

01 bis – Et faudra vous trouver un fichier son que vous renommerez en “alarme.mp3” et déplacerez dans le dossier “notifications”)
(en voici des exemples via ce lien respectueux de votre vie privée)

02 – Pour lire la phrase, il va d’abord falloir réaliser 1 action basique = donner la parole à votre Raspberry Pi pour lui permettre de créer le fichier à lire (sera lu avec mplayer ensuite).
Vous allez installer un programme (connu dans le monde Linux) nommé SVOX Pico TTS (TTS signifie Text To Speach).
L’installation est d’une simplicité enfantine avec :

sudo apt-get install libttspico-utils

Ensuite, il vous reste juste à créer une phrase avec une ligne de commande de ce type : pico2wave -l fr-FR -w /home/pi/notifications/alerte.wav "... Hé, zy va l'intru ; on t'a vu ! Arrache toi d'là si tu veux pas goûter à mes sabres"
(Pour l’exemple, j’ai laissé DeadPool parler ; DeadPool, c’est un mec cool 🙂 Surtout si on l’énerve)
A noter l’usage de « … » en début de phrase pour laisser au Raspberry Pi le temps nécessaire à la mise en lecture (sinon, il bouffe le début)

Par sécurité, donnez les droits au script avec :

sudo chmod +x /home/pi/notifications/notification.sh

Mise en place d’un envoi de SMS

Contrairement à mes premiers articles sur Motion et MotionEye, je ne vais pas utiliser le script pour envoyer les SMS mais recourir à l’option “Call A Web Hook” en insérant juste https://smsapi.free-mobile.fr/sendmsg?user=XxXxXxXxX&pass=XxXxXxXxXxX&msg=Alarme+Cam_IP+garage+!!!".
Évidemment, il faut avoir un forfait de téléphone chez FreeMobile pour bénéficier du service tel que je le décris (à voir chez les autres opérateur). Chez FreeMobile, c’est une option gratuite à activer sur son compte.

Capture d'écran de MotionEye montrant l'option "Web Hook"
L’option “WebHook” permet de passer des commandes http.

Cela permet d’envoyer un SMS sur son portable grâce à un simple navigateur en tapant https://smsapi.free-mobile.fr/sendmsg?user=XxXxXxXxX&pass=XxXxXxXxXxX&msg=LeTexteVoulu et en validant … mais, surtout, cela permet d’utiliser cette fonction dans des systèmes de domotique ou équivalents au moyen de différentes options/commandes.
Dans notre cas, on utilise la fonction “get” du “WebHook” qui permet d’interpréter le “https:…” (on pourrait aussi le faire en wget directement dans le script).
Pour le texte à envoyer par SMS, il faut noter “+” entre les mots pour réaliser un espacement entre les mots.
Ainsi “LeTexteVoulu” sera plus facile à lire sur le téléphone si vous codez “Le+Texte+Voulu”.

Capture d'écran avec la ligne "WebHook renseignée
On entre juste par [copier/coller] la ligne proposée ci-dessus (en adaptant)
Cette façon de faire (SMS hors script) permet de séparer les choses pour que MotionEye m’envoie “Alarme Cam_IP garage !!!” quand la caméra du garage détecte un mouvement ; “Alarme Cam_IP cuisine !!!” quand c’est la caméra de la cuisine qui est solicitée ; “Alarme Raspberry Zéro” quand … (je pense que vous avez un peu percuté, non ?!?)

Par contre, toutes les caméras exécutent le même script et “lisent” donc le même son et la même phrase.
Je n’ai plus qu’un script contre 4 autrefois et j’ai seulement le ligne “WebHook” qui est différente par caméra.

On pourrait améliorer la chose en faisant en sorte que si l’alarme et l’alerte sont exécutées par une caméra, elles ne puissent pas être relancées avant X secondes.
En effet, actuellement, on peut avoir chevauchement de son car 2 caméras peuvent détecter à quelques secondes près une intrusion et le système de sons est alors un brin “de la purée de pois”.
A priori, il suffirait de limiter mplayer à une seule instance, mais je ne sais pas encore le faire (pas cherché).

Conclusion :

Et voilà.
Si vous avez bien tout suivi sans faire d’erreur, vous avez un système de vidéosurveillance parfaitement autonome et automatique.

(si erreur il y a, partons du principe que le problème = c’est vous … mais bon, autant m’en parler 😉 On ne sait jamais).

A partir de maintenant, il suffit d’allumer le Raspberry Pi et tout est fonctionnel ; elle n’est pas belle la vie ?!?

Du coup, je vous entends déjà dire :
Merci Alban ; t’es trop cool avec nous ! Passer des heures à installer, faire des captures d’écran, retravailler tes captures et rédiger cet article, vraiment, c’est classe de ta part”.
Et nous (ou lui ou moi, faut voir) de répondre :
“Ho, mais pas de quoi ; avec plaisir ! Vous pouvez me remercier en m’aidant à améliorer des articles, en me donnant des vieilles machines (ou même des neuves évidemment), en m’envoyant un petit mot d’encouragement/remerciement, en me faisant un don minime de principe sur Paypal ou Leetchi, en me léguant votre fortune, en venant boire un café, en pensant vraiment que je suis le meilleur, en étant respectueux avec les cyclistes (sauf avec les cons qui grillent les feux), en sortant de ma tête, en …”.

Comme je suis vraiment cool, j’ajoute un truc :
Évitez le son par le biais d’un écran HDMI car les écrans se mettent en veille au bout d’un moment … et … cela coupe le son ; pas cool (bon, les SMS fonctionnent toujours).
Il faut avoir des Hauts Parleurs. Toutefois, il en faut avec un système d’amplification afin que le son soit audible.
Et, il faudra modifier la sortie son en “analog” (en faisant clic-droit sur le dessin du Haut Parleur en haut à droite).

Dans un prochain article, j’explorerai l’idée d’un script pour commander les ports GPIO afin qu’une mitraillette puisse tirer de manière automatique après la phrase de sommation.
Ça sera cool, non ?!? 😀

En attendant, rappelez-vous :
Sourions, on ne pourra pas tous les tuer …

A propos de Alban

Papa de 4 enfants étant lui même resté un enfant. Tombé par obligation dans l'informatique à 22 ans pour le boulot et s'étant "un peu" pris au jeu ... Pas un génie de l'informatique (loin de là), mais intéressé et carrément orienté Linux et entraide.

118 commentaires à propos de “VidéoSurveillance avec MotionEye sur Raspbian Stretch et plusieurs Caméras”

  1. Bonjour Alban,
    J’utilise depuis quelques années Motioneye, j’ai utilisé pour l’install plusieurs didacticiels (notamment pour régler la détection et éviter les trop nombreux faux positifs) dont le tien.
    Suite à une màj de la version de motioneye, j’ai perdu la config de mes cams, je l’ai donc refaite complètement et notamment la partie envoie de mails avec photos;;;et c’est là que le bas blesse ! Je reçois biens les mails d’alertes, mais la pj (donc les photos) ne sont plus envoyées, j’ai eu beau me creuser la tête reprendre les différents didacticiels (dont le tien 🙂 ) rien n’y fait !

    Si tu as une idée (à force d’avoir le nez dedans, je n’ai certainement pas le recul nécessaire pour trouver) je suis preneur…

    Merci d’avance.

    • Bonsoir Steve,

      Il faudrait que je tente de faire une réinstallation pour voir.
      Tu peux peut-être tenter ça :
      sudo apt-get install sharutils
      Dans le but d’installer uuencode

      Mais sans certitude aucune.
      Un collègue a eu besoin de ça dans le temps, mais est-ce le même souci ???

      Questions :
      Quelle machine ?
      Quel Système d’Exploitation ?
      Tu as une capture de ta partie configuration courriel à me passer (en privée et en masquant ton mot de passe) ?

      @+

      • Re,
        Juste une idée comme ça :
        Tu peux tester avec une autre adresse que Gmail ?
        Car Gmail désactive les “applications moins sécurisées”.
        Je viens de tester avec une adresse Gmail en expédition = échec ; alors qu’avec une adresse Orange = succès.
        @+

  2. Bonjour,
    Merci pour cet article. J’ai réussi à installer Motion Eye. Je ne parviens pas à utiliser le rtsp. Je suis bien en 0.4 et selon ce que j’ai pu lire ça devrait fonctionner.
    L’erreur est ” Protocol “rtsp” disabled in libcurl ” sur la page d’ajout d’une camera.
    Mes différentes recherches sur le net ne me permettent pas de régler ce problème. Une idée ?
    Merci !!

    • Aie, j’ai fait tellement de fautes dans ce message que j’ai les yeux qui brûlent…la fatigue. En tout cas si quelqu’un sait pourquoi le protocole rtsp est “disable”… Merci !

        • Yo wanabo,

          Oups, les messages étaient dans le dossier “indésirables”.
          Je n’utilise pas le RTSP.
          Mais un grand merci pour ton retour avec “il s’agit d’installer cette version : pi_buster_motion_4.2.2-1_armhf.deb” car effectivement, mon tuto porte sur MotionEye sur Raspbian Stretch (version 9) et il a fallu attendre que Crisan Calin fasse les mises à jour de MotionEye pour que ça passe sur Buster (version 10)
          Mais … ça veut dire que je dois refaire un article ??? 😉

          • Aussi bizarre que cela puisse paraître mais sur le tuto cité plus haut, il s’agit bien d’un raspbian STRETCH sur lequel on installe motioneye version pi_buster.
            Donc pas forcément besoin d tout refaire…mais c’est toi le pro !!

            • Hello,
              Effectivement :
              “These instructions apply only to an up-to-date Raspbian Stretch.”
              Là, franchement, je ne pige pas.
              Je vais tenter de prendre le temps de faire des tests pour voir différentes choses.
              (Pour “mais c’est toi le pro”. Heu … C’est gentil … mais … “le pro” … en étant Diététicien-Nutritionniste durant plus de 20 ans … comment dire … 😉 )

  3. M E R C I
    Tu dois prendre la grosse tête vu le nombre de commentaires de remerciements mais c’est sincère!

    Enseignant, j’ai décidé de profiter de mes 2 mois de vacances pour découvrir Raspberry et construire une camera de surveillance. L’objectif est d’en installer plusieurs dans les nichoirs construits par mes élèves…

    J’ai trouvé plusieurs tutos mais je n’avais pas capté l’existence de plusieurs versions de raspbian au début d’où recherche de solutions aux nombreux problèmes…

    Enfin, ton tuto marche à merveille avant d’avoir des soucis de détection de mouvement mais en fait c’est la caméra qui est lente à détecter les mouvements. Si je passe dans le champ de vision 2 secondes (genre couloir) la détection et l’enregistrement ne s’enclenchent pas mais en restant plus de 5 secondes là cela fonctionne…
    Est-ce réglable?

    J’ai encore une question sur une “option” à ajouter à mon système:
    – Comment y accéder de l’extérieur? Les systèmes étant logés dans le nichoir comment enregistrer les images sur un serveur de l’école ou plus simple pour moi, comment accéder à motioneye depuis un ordinateur?

    En espérant que tu puisses encore m’aider, encore un tout grand merci pour ton tuto!

    • Hello,
      La grosse tête ?
      Non, qd tu sais que tu es un être suprême, tu ne prends pas la peine de perdre du temps à ces considérations 😀

      Bref,
      Pour la détection, tu peux jouer sur le seuil de sensibilité, mais effectivement, un Rpi reste un peu léger + la détection sur modification d’image est un peu limité donc, la perfection n’est pas à espérer.

      Pour y accéder de l’extérieur, tu bascules le port de MotionEye vers le port de ton choix (sur ton IP Fixe).
      Tu as quoi comme box ?
      Si l’école te met un serveur à dispo, tu peux balancer les images dessus ; j’avais testé l’enregistrement sur le Rpi + sur ma FreeBox.

      ++

      • Merci pour ta réponse à l’arrache 😉

        Pour la sensibilité j’ai trouvé ceci:
        https://www.dekloo.net/arduino-raspberry/motioneye-detection-de-mouvement/1403

        “L’option « Minimum Motion Frames » est à regarder avec soin, car elle permet d’éviter les déclenchement intempestifs, mais si sa valeur est trop grande, vous allez louper un évènement.

        Par exemple, avec la valeur « 20 » (par défaut) une personne passant dans le champ de la caméra sans s’arrêter ne provoquait pas de déclenchement. Alors que le pourcentage de variation de l’image était parfaitement détecté. Seulement ca allait trop vite. C’était trop furtif.

        Je suis passé à 10 voir 5 sur cette option suivant la caméra.”

        –> Perso j’ai du descendre à 3!

        Pour y accéder de l’extérieur je n’ai pas compris. Est-il possible d’y accéder depuis n’importe quel pc et réseau?

        • Re,

          Comme je le note dans le tuto, pour « Minimum Motion Frames » : “Réglage du seuil de modification de l’image pour activer la détection. Souvent, je mets le curseur à 3%”
          Et là, actuellement, je suis à 1% pour les 4 caméras.
          Sauf que je suis obligé de fermer le volet pour que celle du salon ne s’énerve pas au moindre passage de nuage 🙂

          Pour voir le flux vidéo depuis le réseau local :
          Imaginons que tu sois (le Raspberry) sur l’IP 192.168.0.19 avec le port 8765 pour MotionEye.
          Tu y accèdes depuis ton réseau interne (le réseau local) en tapant http://192.168.0.19:8765

          Pour l’accès depuis l’extérieur :
          Tu dis à ta box de rediriger le port que tu veux (tu peux garder 8765) afin que cela ouvre l’accès.
          Imaginons maintenant que tu sois sur l’IP 89.67.123.456.
          Comme tu as redirigé le port 8765 de l’adresse 192.168.0.19, tu accèdes (depuis l’extérieur) à MotionEye en tapant http://89.67.123.456:8765

          Redirection du port 8765 (vers 8765) sur la FreeBox.

          Tu pourras alors accéder aux images depuis n’importe quel PC (Windows/Mac/Linux) du réseau local en tapant http://192.168.0.19:8765 et depuis n’importe quel PC ou téléphone depuis l’extérieur en tapant http://89.67.123.456:8765
          Attention, si tu veux tester en étant sur place, tu devras passer par ton téléphone en 3 ou 4G et pas en wifi ou avec ton PC mais via le navigateur TOR car tu seras vu comme venant de l’étranger.

          ++

    • Salut Alban,
      Nouveau venu sur ton site je dois reconnaître que c’est l’éclate de te lire

      Bon rentrons ds le vif du sujet à propos de “run command” j’ai beau y mettre toute ma bonne volonté mais compte tenu du résultat ce ne doit pas être lourd le son d’alarme ne se déclenche pas.
      a noter que la commande bash /home/pi/notifications/alarme.mp3 me dit ne pouvoir exécuter le fichier binaire

      Et pour ce qui est du texte même combat ou presque en essayant d’installer il me dit que la librairie est obsolète
      Ah et pour le fun saurais-tu comment rendre les “action button” momentanés ?

      En te remerciant d’avance

      Un admirateur

      • Yo !
        Heu, Toi, J’taime bien !
        Et pas parce que tu me brosses dans le sens du poil.
        Ha soi, en fait, si.
        C’est pour ça.
        Ha non, je sais.
        Je t’aime bien parce que tu es un mec intelligent.
        Ben oui, un mec qui dit “c’est l’éclate de te lire” + qui signe “Un admirateur” est un gars objectif, intelligent, observateur, …
        Merci !

        Bon, je te mets sur le piste :
        bash /home/pi/notifications/alarme.mp3
        Dis, la commande bash … elle ne doit pas lancer un fichier .sh ???
        Allons, tu peux le faire.

        Aide :
        Tu peux essayer mplayer /home/pi/notifications/alarme.mp3

        Je reviens ; on m’appelle (purée de famille ; sont pénibles ses enfants à avoir besoin de leur père 😉 Sans blague)

        • Well well well well
          pas mieux msieur !

          pour que nous soyons synchro sur notre façon d’interpréter. Tu me conseilles d’indiquer ds “RUN A COMMAND” mplayer /home/pi/notifications/alarme.mp3

          Ah pour info je suis bien en sortie son analogique sur le RPI ou est installé motioneye. Le son de L’alarme déclenché par la caméra 3 pour ex doit bien sortir du RPI équipé de motioneye
          me suis je bien fait comprendre du patron non parce que de temps en temps voire plus j’ai du mal à me comprendre

          A tout de suite….n’est ce pas !

          • Hello,

            Mes excuses, je suis pas mal pris pour finaliser un photomaton sur mesures pour un mariage samedi.
            Entre le boulot, la famille (N°1 à 4 = ça occupe) et le Photomaton … Pas trop de temps !
            Pour tester la commande dans le Terminal, tu dois taper mplayer /home/pi/notifications/alarme.mp3 (et entendre ledit son)
            Mais dans “Run A Command”, tu dois taper /home/pi/notifications/notification.sh
            Et dans le dossier /home/pi/notifications/ tu dois mettre le fichier notification.sh qui contient
            #!/bin/sh
            # 01 - Script pour jouer un son d'alarme
            mplayer /home/pi/notifications/alarme.mp3

            ++

            • Salut,
              j’ai lu le tuto photomaton ça m’plait bien et je range ça ds un ptit recoin

              Bon pour mon PB v’là ce que ça me dit

              pi@raspberrypi:~ $ mplayer /home/pi/notifications/alarme.wav
              MPlayer 1.3.0 (Debian), built with gcc-6.2.1 (C) 2000-2016 MPlayer Team
              do_connect: could not connect to socket
              connect: No such file or directory
              Failed to open LIRC support. You will not be able to use your remote control.

              Playing /home/pi/notifications/alarme.wav.
              File not found: ‘/home/pi/notifications/alarme.wav’
              Failed to open /home/pi/notifications/alarme.wav.

              Exiting… (End of file)

              Met d’avis que le remote control y est pas pour rien
              j’ai bien mon fichier notifications ds home/pi qui contient notification.sh et alarme.wav

              • Yo,

                “le remote control y est pas pour rien”
                Je crois que c’est LE problème en effet.
                Tu peux détailler ta configuration ?
                Et je te renvoie vers ce commentaire :
                https://trevilly.com/videosurveillance-avec-motioneye-sur-raspbian-stretch-et-plusieurs-cameras/#comment-705

                Il faut que le fichier soit sur le Rpi qui filme (et que mplayer soit installé dessus) ; Rpi qu’on appellera “Client”
                Tu testes la lecture sur ce Rpi.
                Ensuite, tu testes via le Rpi de contrôle (le maître ou serveur)

                ++

              • Re moi
                bon en fait ça fonctionne mais seulement sur la cam usb connecté sur le RPI ou motioneye est installé
                Pour les autres sous motioneyeos (des RPI3A+) das fonktionieren nicht
                voilà voilà
                Et une bonne soirée la dessus
                bye

                • Yep ; c’est LE souci de MotionEyeOS ; on ne peut pas installer comme sous Raspbian.
                  (sans compter le souci de la fonction “remote”)
                  Mais tu ne peux pas les inclure comme des caméras Réseau plutôt ?
                  Genre je colle mon RpiZero en “Fast Network Camera” (dans Expert Settings”) et je l’intègre comme une “Network Camera” sur le Rpi3.
                  In meinem Haus, es funktioniert!

                  Mise à jour à 22h05 ; des détails utiles à toi et à tous :
                  J’ai écris la dernière version de MotionEyeOs sur mon RpiZéro.
                  (J’ai configuré pour avoir des ports spécifiques et des identifiants, mais c’est optionnel)
                  Surtout, j’ai passé mon RpiZero en « Fast Network Camera » puis j’ai intégré ce RpiZero au sein de mon MotionEye (qui tourne actuellement sur un mini PC en remplacement de mon Rpi3 qui me sert pour la phase de développement d’un Photomaton).
                  Ce Mini PC de récupération (Merci Olivier F) fonctionne avec Raspbianx86 et MotionEye donc exactement comme un Rpi.
                  Sur ce MotionEye « serveur » ou « maître », j’ai intégré le RpiZero comme une “Network Camera”.
                  Du coup, le système d’alerte = tu colles ça dans le « Maître ».
                  Ça fonctionne, je viens de recevoir un SMS et l’alarme vient de se mettre à brailler et j’ai dû courir pour couper le son pour ne pas réveiller N°1 à N°3 !!! (Ben oui, il est plus de 22h)

  4. Bonjour,
    J’ai un serveur motionEye sur lequel j’ai connecté une caméra de surveillance.
    Lorsque la caméra détecte un mouvement, motionEye envoie une alerte à Jeedom. La configuration motionEye qui permet ça :
    – Onglet Motion detection, activation de “run a command” et “run an end command” pour lesquelles j’envoie une requêtes wget à jeedom. Lorsqu’une détection est faite, la valeur 1 est envoyée à jeedom et quand c’est terminé, la valeur 0 est envoyée.
    Dans Jeedom, j’ai un virtuel qui permet de gérer la reception de ces valeurs et ça déclenche un scénario qui prend des captures de la caméra et envoie le tout à telegram.

    Mon problème est que les captures envoyées ne correspondent pas à ce que je veux car la plupart du temps la capture est faite trop tard par Jeedom.

    Voici ce que je souhaiterai faire :

    Dès qu’une détection est faite par motionEye, prévenir Jeedom (comme c’est déjà le cas) et envoyer le fichier capturé à Jeedom.
    Ensuite Jeedom envoie ces captures via Telegram.

    J’ai vu la notion de webhook URL dans l’onglet “File Storage” mais je n’arrive pas à voir à quoi ça sert et surtout comment ça marche.

    Merci d’avance 🙂

  5. Bonjour Alban et merci pour cet excellent tuto.
    J’ai eu un problème de streaming avec une camerai pi embarquée alors que raspistill, motion, etc fonctionnait.
    En fait, j’utilisais Chrome sur le poste client.
    Avec Firefox plus de problème.
    Pour info et éviter, comme moi, de passer du temps sur un faux problème.

  6. Bonjour,

    Entrain de vouloir continuer à améliorer ma domotique qui tourne sous jeedom avec un Rpi3 (pas le “+”, hein :)), Je suis tombé sur ton site/tuto, très bien fait d’ailleurs merci à toi de partager tout çà et d’aider les personnes qui posent en plus des questions 🙂
    D’ailleurs je me pose une question, car j’ai actuellement 4 caméras IP POE (compatible RTSP of course) sous motioneye, et lorsque je regarde la charge du proc !!! elle est pas mal!! Je crains qu’il ne tienne la charge/cadence sur du long terme !
    car avec la commande “top”, j’arrive à 400%CPU avec motion !!!
    Est ce que vous avez la meme chose?

    • Salut Tounboun,
      Merci pour tes compliments.
      Je vais tâcher de réinstaller et vérifier.
      En effet, afin de libérer mon Rpi pour d’autres tests/projets, j’ai basculé mon système de vidéo-surveillance sur un Shuttle (une vieille machine donné par un patient).
      Mais, je n’étais à un usage à 400% CPU, c’est sûr !
      Cela dit, je n’utilise pas le protocole RTSP (mais je doute que le souci ne vienne que de ça).
      @+

      • Salut Alban

        En fait, je n’avais pas eu le temps de répondre, mais, le problème vient du fait que ce sont des caméra avec une résolution de 5MP et si l’on donne comme url le flux principal, et bien le RPi a bien du mal avec cette résolution, car avec l’url “secondaire”, qui est en 640×480, et bien, la charge est bien plus petite. mais honnement, je pense que le RPi n’est pas fait pour ça si on a 4 a 6 cameras meme en 640×480 !!
        Autrement, faut mettre un autre Rpi, car 1 seul, pas possible et l’autre solution c’est de mettre qque chose de plus puissant, mais sans que ca consomme trop !!!

        Question, quel protocole utilises tu?

  7. Bonjour,
    Un grand merci pour ce tuto.
    J’ai malheureusement un petit problème.
    Lors de l’installation de motioneye j’ai un message d’erreur et je ne comprend pas ce qu’il me veut ….(je débute sur Raspbian).
    pi@raspberrypi:~ $ sudo python -m pip install –upgrade pip setuptools wheel
    DEPRECATION: Python 2.7 will reach the end of its life on January 1st, 2020. Please upgrade your Python as Python 2.7 won’t be maintained after that date. A future version of pip will drop support for Python 2.7. More details about Python 2 support in pip, can be found at https://pip.pypa.io/en/latest/development/release-process/#python-2-support
    Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple
    Requirement already up-to-date: pip in /usr/local/lib/python2.7/dist-packages (19.2.1)
    Requirement already up-to-date: setuptools in /usr/local/lib/python2.7/dist-packages (41.0.1)
    Requirement already up-to-date: wheel in /usr/local/lib/python2.7/dist-packages (0.33.4)
    pi@raspberrypi:~ $ sudo pip install motioneye
    DEPRECATION: Python 2.7 will reach the end of its life on January 1st, 2020. Please upgrade your Python as Python 2.7 won’t be maintained after that date. A future version of pip will drop support for Python 2.7. More details about Python 2 support in pip, can be found at https://pip.pypa.io/en/latest/development/release-process/#python-2-support
    Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple
    Collecting motioneye
    Using cached https://files.pythonhosted.org/packages/00/ca/4dfc8d05f4783a8bf11b1ef1994c3adb4e49b6f478781464f648d5673389/motioneye-0.40.tar.gz
    Collecting tornado=3.1 (from motioneye)
    Using cached https://files.pythonhosted.org/packages/e6/78/6e7b5af12c12bdf38ca9bfe863fcaf53dc10430a312d0324e76c1e5ca426/tornado-5.1.1.tar.gz
    Requirement already satisfied: jinja2 in /usr/lib/python2.7/dist-packages (from motioneye) (2.8)
    Requirement already satisfied: pillow in /usr/lib/python2.7/dist-packages (from motioneye) (4.0.0)
    Collecting pycurl (from motioneye)
    Using cached https://files.pythonhosted.org/packages/ac/b3/0f3979633b7890bab6098d84c84467030b807a1e2b31f5d30103af5a71ca/pycurl-7.43.0.3.tar.gz
    ERROR: Command errored out with exit status 1:
    command: /usr/bin/python -c ‘import sys, setuptools, tokenize; sys.argv[0] = ‘”‘”‘/tmp/pip-install-m3T4Eo/pycurl/setup.py'”‘”‘; __file__='”‘”‘/tmp/pip-install-m3T4Eo/pycurl/setup.py'”‘”‘;f=getattr(tokenize, ‘”‘”‘open'”‘”‘, open)(__file__);code=f.read().replace(‘”‘”‘\r\n'”‘”‘, ‘”‘”‘\n'”‘”‘);f.close();exec(compile(code, __file__, ‘”‘”‘exec'”‘”‘))’ egg_info –egg-base pip-egg-info
    cwd: /tmp/pip-install-m3T4Eo/pycurl/
    Complete output (11 lines):
    Traceback (most recent call last):
    File “”, line 1, in
    File “/tmp/pip-install-m3T4Eo/pycurl/setup.py”, line 944, in
    ext = get_extension(sys.argv, split_extension_source=split_extension_source)
    File “/tmp/pip-install-m3T4Eo/pycurl/setup.py”, line 606, in get_extension
    ext_config = ExtensionConfiguration(argv)
    File “/tmp/pip-install-m3T4Eo/pycurl/setup.py”, line 101, in __init__
    self.configure()
    File “/tmp/pip-install-m3T4Eo/pycurl/setup.py”, line 233, in configure_unix
    raise ConfigurationError(msg)
    __main__.ConfigurationError: Could not run curl-config: [Errno 2] No such file or directory
    —————————————-
    ERROR: Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.

    Si vous avez une solution je suis preneur.
    Merci d’avance et bonne journée.

    • Hello,
      Je viens de réinstaller Raspbian Stretch (version Bureau Graphique mais pas la full).
      Et je viens d’installer MotionEye en suivant mon tutorial.
      Résultat : aucune erreur.
      Ça roule parfaitement.
      Tu peux essayer de réinstaller Raspbian Stretch propre puis de resuivre le tuto en faisant des [copier/coller] pour ne pas faire d’erreur.
      Redis-moi,
      @+

  8. Bonjour,
    Peut on soit de manière régulière (horaire) ou soit via API ou ligne de commande désactiver le streaming vidéo en ON/OFF par exemple de 12h à 13h la camera ne filme pas.

    En te remerciant

    • Hello,
      Yep ; c’est possible.
      Tout en bas de la console d’administration, tu as ceci :
      Règles ou calendrier de travail
      Ce qui permet de définir des heures de surveillance.
      Et tu peux changer la règle en
      Règles ou calendrier de
      Ce qui permet de définir des heures de non surveillance.
      @+

        • Salut,
          Aucune idée, je n’ai jamais utilisé les pages et je ne vois pas trop comment le piloter autrement.
          A part l’activer pour un moment précis puis chercher dans les fichiers de configuration pour trouver (mais, là, je n’ai pas le temps).
          Perso, j’ai fait différemment : j’ai un bouton pour éteindre le Rpi. DOnc, il suffit d’appuyer en rentrant pour éteindre le tout (sinon Photos, courriels, SMS et alarme sonore …).
          ++

  9. Bonjour et merci pour ce tuto;
    Impossible pour moi d’installer motioneye j’ai toujours les erreurs suivantes malgré l’utilisation de “sudo python -m pip install –upgrade pip setuptools wheel ” :

    ERROR: Complete output from command python setup.py egg_info:
    ERROR: Traceback (most recent call last):
    File “”, line 1, in
    File “/tmp/pip-install-ebxrSD/pycurl/setup.py”, line 944, in
    ext = get_extension(sys.argv, split_extension_source=split_extension_source)
    File “/tmp/pip-install-ebxrSD/pycurl/setup.py”, line 606, in get_extension
    ext_config = ExtensionConfiguration(argv)
    File “/tmp/pip-install-ebxrSD/pycurl/setup.py”, line 101, in __init__
    self.configure()
    File “/tmp/pip-install-ebxrSD/pycurl/setup.py”, line 233, in configure_unix
    raise ConfigurationError(msg)
    __main__.ConfigurationError: Could not run curl-config: [Errno 2] No such file or directory
    —————————————-
    ERROR: Command “python setup.py egg_info” failed with error code 1 in /tmp/pip-install-ebxrSD/pycurl/

    • Bonjour Patrick,
      Je viens justement de retester l’installation.
      Sur la nouvelle version de Raspbian (Buster) = échec.
      Sur l’ancienne version (Stretch comme dans le tuto) = ça fonctionne ; j’ai juste réalisé l’installation avec la version 4.2.2 qui est la dernière version.

      Il faut juste changer
      sudo wget https://github.com/Motion-Project/motion/releases/download/release-4.2.1/pi_stretch_motion_4.2.1-1_armhf.deb
      en
      sudo wget https://github.com/Motion-Project/motion/releases/download/release-4.2.2/pi_stretch_motion_4.2.2-1_armhf.deb

      Puis
      sudo dpkg -i pi_stretch_motion_4.2.1-1_armhf.deb
      en
      sudo dpkg -i pi_stretch_motion_4.2.2-1_armhf.deb

      Mais je modifie le tuto de suite pour aider tout le monde.

      Actuellement, j’ai bien MotionEye qui tourne sur un Rpi3 sans aucun souci.

      Tu as quel version de Raspbian ?
      Tu peux nous donner le résultat des commandes suivantes ?
      uname -a
      et
      cat /etc/debian_version

      @+

      Edit :
      Je viens de voir que tu as écrit
      sudo python -m pip install –upgrade pip setuptools wheel
      mais c’est
      sudo python -m pip install --upgrade pip setuptools wheel

      • Merci Alban pour la réponse super rapide et ton aide précieuse.

        J’ai bien utilisé “sudo python -m pip install –upgrade pip setuptools wheel”

        La version est du 2019-06-20:
        * Based on Debian Buster

        pi@raspberrypi:~ $ uname -a
        Linux raspberrypi 4.19.50-v7+ #896 SMP Thu Jun 20 16:11:44 BST 2019 armv7l GNU/Linux

        pi@raspberrypi:~ $ cat /etc/debian_version
        10.0

        • Il y a bien un double tiret pour “sudo python -m pip install – -upgrade pip setuptools wheel”
          Ils sont collés quand on fait un copier/coller ici

          • Ca cela ne passe pas

            pi@raspberrypi:~ $ sudo dpkg -i pi_stretch_motion_4.2.2-1_armhf.deb
            (Lecture de la base de données… 135435 fichiers et répertoires déjà installés.)
            Préparation du dépaquetage de pi_stretch_motion_4.2.2-1_armhf.deb …
            Dépaquetage de motion (4.2.2-1) sur (4.2.1-1) …
            dpkg: des problèmes de dépendances empêchent la configuration de motion :
            motion dépend de libavcodec57 (>= 7:3.2.12) | libavcodec-extra57 (>= 7:3.2.12) ; cependant :
            Le paquet libavcodec57 n’est pas installé.
            Le paquet libavcodec-extra57 n’est pas installé.
            motion dépend de libavdevice57 (>= 7:3.2.12) ; cependant :
            Le paquet libavdevice57 n’est pas installé.
            motion dépend de libavformat57 (>= 7:3.2.12) ; cependant :
            Le paquet libavformat57 n’est pas installé.
            motion dépend de libavutil55 (>= 7:3.2.12) ; cependant :
            Le paquet libavutil55 n’est pas installé.
            motion dépend de libmariadbclient18 (>= 10.1.37-0+deb9u1) ; cependant :
            Le paquet libmariadbclient18 n’est pas installé.
            motion dépend de libmicrohttpd12 (>= 0.9.50) ; cependant :
            Le paquet libmicrohttpd12 n’est pas installé.
            motion dépend de libswscale4 (>= 7:3.2.12) ; cependant :
            Le paquet libswscale4 n’est pas installé.
            motion dépend de libwebpmux2 (>= 0.5.1) ; cependant :
            Le paquet libwebpmux2 n’est pas installé.

            dpkg: erreur de traitement du paquet motion (–install) :
            problèmes de dépendances – laissé non configuré
            Traitement des actions différées (« triggers ») pour systemd (241-5+rpi1) …
            Traitement des actions différées (« triggers ») pour man-db (2.8.5-2) …
            Des erreurs ont été rencontrées pendant l’exécution :
            motion

  10. Bonjour
    J’ai une question concernant la fonction “run a command” dans Motion.
    Faut il donner des droits à l’application quelque part pour qu’elle exécute des commandes sur le PI?
    Car dans mon cas lorsque la caméra détecte un mouvement j’ai bien un e-mail d’envoyé avec les photos mais aucune commande est lancée.
    Je voudrais lorsque la caméra détecte un mouvement qu’une led s’allume mais pour le moment rien ne se passe. J’ai essayé avec le script de l’alarme mais là non plus aucun résultat. Les scripts fonctionnement pourtant correctement a partir d’une console.

    Voici la version utilisée:
    motionEye Version 0.40
    Motion Version 4.1.1
    OS Version Raspbian 9.9

    J’ai du faire une erreur quelque part mais impossible de trouver.
    Cordialement
    Benoit

      • Bonjour
        Pour le clignotement de la led il s’agit d’un script python récupéré sur internet. J’ai testé il fonctionne parfaitement. Ensuite pour le lancer j’utilise un bash écrit par quelqu’un de mon asso (je suis encore novice dans la programmation). Pour l’alarme j’ai utilisé la méthode décrite sur cette page.
        La commande chmod est bien utilisée j’ai bien rwxr-xr-x sur chaque fichier.
        Tout fonctionne parfaitement depuis un terminal mais depuis motioneye il n’y a rien à faire.
        Pourtant le chemin d’accès est correct /home/pi/notifications/notification.sh
        Cordialement
        Benoit

        • Hello,
          Je vais devoir réinstaller Stretch car je suis passé à Buster pour mes derniers tests et Motion ne passe pas sur Buster.
          Je vais regarder tes scripts et les intégrer pour les tester.
          Ça ne sera pas pour ce soir en raison du temps passé sur l’écran aujourd’hui :-s
          A bientôt,

          • Benoît,

            J’ai réussi un truc de test.

            Création d’un fichier notification.sh en faisant geany /home/pi/notifications/notification.sh
            Tu y notes
            #!/bin/sh
            mplayer /home/pi/notifications/alarme.mp3
            chmod +x /home/pi/notifications/test.py
            python3 /home/pi/notifications/test.

            Création d’un fichier test.py en faisant geany /home/pi/notifications/test.py
            Tu y notes
            #!/usr/bin/python3
            import os
            import time
            fileName = time.strftime("%d-%m-%Y_%H-%M-%S")
            os.system('touch "/home/pi/notifications/Alarme_'+fileName+'.txt"')

            Tu fais un
            chmod +x /home/pi/notifications/notification.sh
            puis
            chmod +x /home/pi/notifications/test.py

            Dans MotionEye, tu mets “/home/pi/notifications/notification.sh” dans la zone “Run A Command” puis tu valides.

            Chez moi, en cas de détection de mouvement, j’ai bien l’alarme sonore + la création automatique d’un fichier nommé “Alarme_date_heure.txt” (ou “date” et “heure” sont actualisées)

            Tu testes et tu me redis avant que je ne joue avec des LED et refasse ton script 😉

            Édit de 15h15 :
            Bon, j’ai réussi à incorporer ton script donc en cas de détection, j’ai un son de sirène + la création d’un fichier donnant la date et l’heure de l’alerte + une LED bleue qui clignote.

            Édit de 17h35
            De retour d’une course, j’ai eu une idée en regardant ton script.
            Du coup, en cas d’alarme, j’ai une led bleue qui se met à clignoter.
            Et, en fin de temps de détection, la led s’éteint.
            En cas de nouvelle détection, elle se remet à clignoter.
            C’est ce comportement que tu souhaites avoir ?

            ++

            • Bonsoir
              Après plusieurs tests toujours le même résultat. Les scripts ne fonctionnent toujours pas sur motioneye par contre aucun problème depuis une ligne de commande. Idem pour les scripts envoyés sur ma boite mail. Comme annoncé je formate tout ce week-end et je recommence sur une carte vide quelque chose a du se produire lors de l’installation. Concernant l’édit de 17h35 c’est tout a fait le comportement recherché.

              • Hello,
                Je suis sur une réinstall’ fraiche de Stretch et de MotionEye 4.2.2 ; ces 2 installations ayant été réalisées suite aux commentaires récents (toi et Patrick).
                Ça tourne sur un Rpi3 pour le moment.
                Je t’envoie mes scripts dans la journée.
                @+

                • Pour le principe, petite note pour vous éviter de devenir dingues aussi.
                  (j’ai échangé par courriel avec Benoît)
                  Le souci venait du fait que Benoît utilisait un RpiZero pour l’acquisition de la vidéo mais un Rpi3 pour le traitement de l’image … en ayant configuré le RpiZeo en … “remote motioneye camera”.
                  Donc, la fonction “run a commande” n’envoyait pas la demande au Rpi3 mais au Rpizéro.
                  Après avoir copié mon archive test avec mes scripts dans le RpiZero, les actions se sont bien déroulées.
                  J’avais eu un souci similaire il y a qq mois donc je préfère le noter ici même.

    • Bonjour Le CHTI,

      A ma connaissance, MotionEye ne gère pas l’usage des fonctions PAN/TILT.
      Mais Motion le fait puisque je vois :
      Motion can move the camera to a fixed position given in degrees pan (left-right) and tilt (down-up). Movement can be set with absolute coordinates or relative to current position.” soit
      Le mouvement peut déplacer la caméra vers une position fixe donnée en degrés panoramique (gauche-droite) et inclinaison (bas vers le haut). Le mouvement peut être réglé en coordonnées absolues ou par rapport à la position actuelle.
      Donc c’est peut-être faisable via MotionEye.
      Dans Motion, c’est :
      {IP}:{port}/{camid}/track/set?pan={value1}&tilt={value2} pour “Send command to PTZ camera to pan to value1 and tilt to value2” c’est à dire “Envoyer la commande à la caméra PTZ pour effectuer un panoramique vers la valeur 1 et une inclinaison vers la valeur 2“).
      Lire : https://motion-project.github.io/motion_config.html

      Sinon, il faudrait te tourner vers ZoneMinder me semble-t-il.

      @+

  11. Bonjour et merci pour le tuto, très bon travail, bravo.
    Par hasard, t’aurais pas envie de nous faire un p’tit point complémentaire pour enregistrer les photos sur un NAS par exemple (histoire de pas changer la SD tous les 6 mois et surtout de conserver les images au cas où la caméra disparait…)

    • Hello,
      Tu as regardé dans “File Storage” ?
      Tu actives “Upload Media Files” et tu peux basculer vers un serveur FTP (ou autres types de serveurs).
      Je vais essayer de regarder la chose 😉
      C’est quoi ton NAS ?

      Edit : C’est bon pour la sauvegarde sur mon serveur FTP.
      Les images de la Caméra IP noire (1 des 4 caméras) sont sauvées en local (disque dur) mais aussi sur un serveur distant chez OVH avec transfert en SFTP

      • Bonjour Alban et merci pour ta réponse,

        J’avais jeté un oeil à File Storage mais j’ai pas fait attention à Upload Media Files (shame on me !).
        Je devrais m’en sortir à présent 😉
        Mon NAS est un QNAP

        Merci.

        (Ton site à l’air pas mal, je pense que j’y reviendrais)

        • Bonjour, j’ai installé Raspbian STRETCH et motionEYE sur un B3+ avec camera pi en suivant ce tuto

          Versions :
          MotionEye : 0.41
          Motion : 4.2.2
          OS : Raspbian 9.8 upgradé en 9.11

          Cela fonctionne bien mais par contre, je n’arrive pas à configurer l’envoi de photos par mail alors que je respecte (il me semble) les champs à remplir.

          Le message d’erreur est :
          “Notification email failed: Connection unexpectedly closed: timed out!” avec port 465
          “Notification email failed: character mapping must return integer, None or unicode!” avec port 587

          Y-a-t-il quelques pistes “piège” à étudier qui pourraient faire que ça ne fonctionne pas ?
          Un paramétrage de la FREEBOX V5 ?
          Faut-il activer ou pas le bouton TLS ?

          D’autre part, je n’arrive pas non plus à enregistrer les photos/vidéos à distance (sur mon PC par exemple)
          Peut-être un utilisateur à créer sur Windows 7 ?
          Une erreur entre les / et \ ?
          (j’y arrive bien avec MotionEyeOS et Network Share sur un autre Pi)
          En fait MotioneyeOS a bien plus de paramétrage mais je n’arrête pas de perdre la caméra alors que motioneye lui fonctionne !

          Merci.

          • Salut Olivier,
            J’étais sur Freebox V5 à l’époque de ce tuto.
            Il faut bien activer TLS comme le montre cette image :

            J’avais demandé à MotionEye d’enregistrer les fichiers sur ma Freebox sans aucun souci ; ça doit être pareil pour un PC … mis à part que je n’ai pas de Windows.
            Mais il est probable que des chemins de type (exemple) /home/alban/dossier_surveillance/Photos sous Linux serait de type \\MachinChose sur Windows.
            Tu peux tenter sur un dossier de ta box ?
            Tu fais un truc de ce type :
            null
            null
            null
            Pour MotionEyeOs, il est vrai que je perds aussi l’image sur la console d’admin de mon RpiZero, mais le service fonctionne (et détection possible avec le Rpi3) + je vois bien l’image sur l’adresse de streaming
            ++

            • Merci pour ta réponse rapide,

              J’ai fait un test sur la box TV, cela fonctionne bien.
              Par contre, en configurant pour enregistrer sur mon NAS, le bouton Test Service me renvoie OK pour la configuration (il trouve bien le répertoire même si la recherche est relativement longue) mais les photos prises en manuel ou via la détection de mouvement n’apparaissent pas dans le répertoire du NAS (mais elles ont bien été prises car je les vois dans l’interface de motionEYE).
              Je n’ai pas non plus l’onglet “Services” qui est en première photo de ta réponse) (je l’ai bien sur MotionEyeOS).Je n’ai pas non plus le bouton pour afficher les options avancées qui existait sur les anciennes versions de motionEye ou motionEyeOS)

              • Re,
                Un problème de droit sur le dossier du NAS ?
                (C’est quoi comme NAS ?)
                Par exemple, tu testes de passer ce dossier en autorisation complète (au moins momentanément) avec un chmod +x pour voir si les photos sont écrites dedans.
                Si tu les vois, c’est que c’est ça le souci.
                Je ne peux pas tester car mon “NAS” est un PC de récup qui tourne sous Linux avec un dossier “partage” partagé via smb et pas par ftp.

                Pour mes captures, effectivement, la partie “services” est visible en MotionEyeOS et pas en MotionEye.
                Pour les “options avancées”, si tu parles de “Expert Settings”, je ne l’ai pas non plus sur mon vieux système qui tourne avec :
                – motionEye Version 0.39.3
                – Motion Version 4.0
                – OS Version Debian 9.8

                Bon, je viens de tester sur ma “nouvelle” installation (“nouvelle” depuis ce tuto) qui tourne sur un Shuttle avec un Raspbian x86 en activant juste mon RpiZero vision nocturne (sous MotionEyeOS en “Fast Network Camera”).
                Les photos sont bien enregistrées dans le Shuttle (qui fait office de Rpi Contrôle) et sur ma nouvelle Freebox Revolution (passage à la Fibre oblige).
                ++

                • Salut Alban,

                  Finalement l’envoi de mails est effectif malgré le message “Notification email failed: …” !!!

                  Par contre l’enregistrement sur mon NAS (QNAP) n’est toujours pas OK.

                  Je ne vois pas bien où je dois faire le chmod +x (sur le NAS ?).

                  • Hello,
                    Bon, ton NAS n’est pas un Linux, on va laisser tomber le “chmod +x” 🙂
                    Tu n’as pas quelque chose du style « dossier de partage » avec « gestion des droits d’accès » ?
                    Là, tu sélectionnes le dossier “MotionEye” (par exemple) et, dans les « propriétés », tu demandes un truc du genre « Autoriser l’accès FTP en lecture/écriture ».
                    (et sinon, tu arrives à écrire dans ce dossier en FTP depuis ton PC avec FileZilla ou un programme similaire ?)
                    ++

                    • Salut Alban,

                      Je laisse tomber motionEye et passe en motionEyeOS partout (plus simple, plus de fonctions et surtout j’arrête de passer des heures à chercher pourquoi ça marche pas et à embêter tout le monde (enfin surtout toi !).

                      Merci pour ton aide en tout cas.

                      Pour info j’arrive à écrire dans le répertoire du NAS depuis Filezilla.
                      J’ai aussi essayé en créant des utilisateurs sur mon NAS pour chaque CAM en leur mettant des droits en RW mais rien n’y fait.
                      Je suppose que je ne suis pas assez calé pour y arriver.

                      @ bientôt et merci encore.

                    • Bonsoir Olivier,
                      Merci pour ton retour.
                      Je n’ai pas de NAS Qnap sous la main, mais il est certain que si FileZilla peut le faire, alors le Rpi peut le faire puisque MotionEye est installé sur un Raspbian.
                      Il faudrait effectivement prendre le temps de s’y pencher … Et si MotionEyeOS fonctionne … Je comprends ton choix de la solution dite de contournement 😉
                      Mon changement de vie ne me laisse guère de temps, mais je reste dispo si je peux aider d’une manière ou d’une autre.
                      Au plaisir,

  12. Bonjour,
    J’ai suivi le tuto à la lettre ,oui mais…quand je me reconnecte sur MotionEye je n’ai plus que Préferences comme
    réglage donc je n’ai plus accès au autres réglages sur la partie gauche !!! pratiquement une journée que je galère
    Cordialement Djack

    • Bonsoir,
      Tu dois avoir “General Setting” qui est à “off” et qu’il faut passer à “on” pour avoir d’autres paramètres.
      Ou alors, c’est dans le choix de ta fonction de caméra.
      Certains choix font qu’il n’y a pas de paramètres modifiables (de mémoire)
      C’est quoi comme caméra ?
      A bientôt,

      • Bonjour Alban,
        Merci de m’avoir répondu aussi vite ,voila j’ai installer une webcam Logitech
        que j’avais dans un fond de tiroir
        et la 2ème une Quimat Raspberry PI Caméra Module à infrarouge tous cela monté sur un
        Raspi 3 b+ et cela fonctionne… (c’est mon premier pi de ma vie)
        Actuellement je peux même pas supprimer ou ajouter une camera , l’activation de “General Setting” ne peux ce faire quand ligne de commande …je ne vois pas comment faire autrement,
        désolé je suis un noob en informatique
        Bon dimanche à vous !!
        Djack

        • Bonjour Djack,
          J’ai pas mal de trucs de prévus, mais je vais faire une réinstallation de Raspbian et tout reprendre depuis le début pour voir (je ferai sur un Rpi3B+ avec le module caméra RaspiCam + une caméra “USB” de fabrication maison) et je te redis.
          Bon, là, je vais voter et j’y vais à pied donc …
          @+

          • Re,
            C’est fait.
            – Réinstallation de Raspbian Desktop à partir de zéro.
            – Arbre à soie planté (oui, aucun rapport, mais j’avais aussi cette mission à accomplir)
            – Installation de MotionEye effectué en 5 minutes en SSH (je passe par [copier/coller])
            – Activation du mode “Advanced Settings” et ajout d’un mot de passe pour “admin” + ajout d’un utilisateur (je transforme toujours “user” en “alban”) avec un mot de passe.
            Là, je valide pour obliger la reconnexion en admin.
            (tu DOIS être en admin pour faire des modif ; ça serait ça le souci ?)
            – Ajout de la caméra (le RaspiCam) = OK.
            Mais attention, il faut choisir le bon canal.
            C’est “MMAL Camera” avec “VideoCore Camera” qu’il faut choisir (pour une caméra sur le port CSI).
            Si je prends “V4L2 Camera” avec “bcm2835-core”, ça ne fonctionne pas (j’ai essayé évidemment).
            – Étant joueur, j’ai ensuite branché ma caméra USB (une caméra prise dans un PC portable et “soudée” à un bout de câble USB).
            Elle s’ajoute avec “V4L2 Camera” puis, dans le sous-menu, avec “CNF7051: Chicony USB 2.0 Camera”.
            –> Actuellement, j’ai bien les 2 caméra qui tournent sur le Rpi3b+.
            La preuve :
            Affichage de 2 caméra (RaspiCam et USB) avec MotionEye sur Rpi3b+
            (oui, chacune regarde l’autre ; c’est le principe ; ne jamais faire confiance à une caméra. Autant qu’elles se surveillent l’une l’autre ; on n’est jamais à l’abri d’une caméra folle qui se retournerait contre son maître. Hein, quoi ? Comment ça c’est l’heure de mes gouttes ?!?!?)
            ++

            • Re,
              Je m’en doutais un peu… je n’étais pas le chef…y a plus qu’a remettre les mains dans le cambouis , formater la carte
              micro sd je sais faire ou supprimer MotionEye dans la console je sais faire
              aussi mais le problème je connais pas les lignes de commande.
              Donc je vais passer par un formatage total de la carte.
              Merci de m’avoir consacré un peu de votre temps pour me répondre
              J’attaque demain à tête reposée…et je vous tiens au courant.
              Un grand merci !!!
              Djack

              • Pas de quoi !
                Ça m’a permis de vérifier que le tuto était toujours OK.
                Et ça m’a permis de voir que ma “hack-caméra USB” fonctionne pas mal 😉
                A demain … pour avoir de bonnes nouvelles, je n’en doute pas.

                • Bonsoir Alban,
                  Je viens à l’instant de terminer l’installation.. c’est pas mal
                  je déconnecte et ensuite je me reconnecte et là je retrouve
                  tous mes réglages …un petit problème cependant ma
                  2ème caméra est reconnu sauf que j’ai un petit logo avec
                  un appareil photo barré à l’intérieur du champ de vision.
                  J’abandonne pour ce soir.
                  Je vais remettre cela à demain
                  Bonne soirée
                  Djack

                  • Bonjour Alban,
                    Bon ben c’est ok…. tout fonctionne à merveille !!!
                    J’avais mal choisi la 2ème caméra ???
                    Encore merci pour tout
                    Cordialement
                    Djack

  13. Hello et merci pour ton tuto et le temps que tu y as accordé. Ma question est simple, as tu utiliseé un module raspberry propriétaire pour faire ce tuto ou une webcam usb ? J’aimerais pour ma part faire cela via une webcam usb et un Pi B…
    Crois tu que c’est possible ? Merci par avance pour ta réponse

    • Salut Fred,
      J’ai utilisé divers Raspberry : 1 RpiB+ ; 1 Rpi3 ; 1 Rpi3B+ et 1 RpiZero V1.3.
      J’ai utilisé diverses caméras : 1 module Raspicam couleur ; 1 raspicam noIR ; 2 caméra IP et 1 WebCam USB fabriquée à partir d’une WebCam de PC portable.
      J’avais testé 2 vieilles WebCam antiques –> fonctionnelles mais images pourries.
      Donc je te confirme que cela va fonctionner avec une WebCam USB et un RpiB.
      @+

  14. Bonjour
    Petit débutant, en suivant la procédure, l’installation s’est très bien passée et ma caméra de surveillance fonctionne parfaitement sur un Raspberry pi 3B. Mais sur le Raspberry Pi Zero w impossible de finir l’installation.
    J’ai le message ci-dessous après la commande : sudo pip install motioneye --upgrade

    pi@xxxxxxx:~ $ sudo pip install motioneye --upgrade
    Requirement already up-to-date: motioneye in /usr/local/lib/python2.7/dist-packages
    Collecting jinja2 (from motioneye)
    Downloading https://files.pythonhosted.org/packages/1d/e7/fd8b501e7a6dfe492a433deb7b9d833d39ca74916fa8bc63dd1a4947a671/Jinja2-2.10.1-py2.py3-none-any.whl (124kB)
    100% |████████████████████████████████| 133kB 160kB/s
    Requirement already up-to-date: tornado>=3.1 in /usr/local/lib/python2.7/dist-packages (from motioneye)
    Collecting pillow (from motioneye)
    Downloading https://files.pythonhosted.org/packages/81/1a/6b2971adc1bca55b9a53ed1efa372acff7e8b9913982a396f3fa046efaf8/Pillow-6.0.0.tar.gz (29.5MB)
    99% |████████████████████████████████| 29.5MB 209kB/s eta 0:00:01Exception:
    Traceback (most recent call last):
    File "/usr/lib/python2.7/dist-packages/pip/basecommand.py", line 215, in main
    status = self.run(options, args)
    File "/usr/lib/python2.7/dist-packages/pip/commands/install.py", line 353, in run
    wb.build(autobuilding=True)
    File "/usr/lib/python2.7/dist-packages/pip/wheel.py", line 749, in build
    self.requirement_set.prepare_files(self.finder)
    File "/usr/lib/python2.7/dist-packages/pip/req/req_set.py", line 380, in prepare_files
    ignore_dependencies=self.ignore_dependencies))
    File "/usr/lib/python2.7/dist-packages/pip/req/req_set.py", line 620, in _prepare_file
    session=self.session, hashes=hashes)
    File "/usr/lib/python2.7/dist-packages/pip/download.py", line 821, in unpack_url
    hashes=hashes
    File "/usr/lib/python2.7/dist-packages/pip/download.py", line 659, in unpack_http_url
    hashes)
    File "/usr/lib/python2.7/dist-packages/pip/download.py", line 882, in _download_http_url
    _download_url(resp, link, content_file, hashes)
    File "/usr/lib/python2.7/dist-packages/pip/download.py", line 603, in _download_url
    hashes.check_against_chunks(downloaded_chunks)
    File "/usr/lib/python2.7/dist-packages/pip/utils/hashes.py", line 46, in check_against_chunks
    for chunk in chunks:
    File "/usr/lib/python2.7/dist-packages/pip/download.py", line 571, in written_chunks
    for chunk in chunks:
    File "/usr/lib/python2.7/dist-packages/pip/utils/ui.py", line 139, in iter
    for x in it:
    File "/usr/lib/python2.7/dist-packages/pip/download.py", line 560, in resp_read
    decode_content=False):
    File "/usr/share/python-wheels/urllib3-1.19.1-py2.py3-none-any.whl/urllib3/response.py", line 432, in stream
    data = self.read(amt=amt, decode_content=decode_content)
    File "/usr/share/python-wheels/urllib3-1.19.1-py2.py3-none-any.whl/urllib3/response.py", line 380, in read
    data = self._fp.read(amt)
    File "/usr/share/python-wheels/CacheControl-0.11.7-py2.py3-none-any.whl/cachecontrol/filewrapper.py", line 63, in read
    self._close()
    File "/usr/share/python-wheels/CacheControl-0.11.7-py2.py3-none-any.whl/cachecontrol/filewrapper.py", line 50, in _close
    self.__callback(self.__buf.getvalue())
    File "/usr/share/python-wheels/CacheControl-0.11.7-py2.py3-none-any.whl/cachecontrol/controller.py", line 275, in cache_response
    self.serializer.dumps(request, response, body=body),
    File "/usr/share/python-wheels/CacheControl-0.11.7-py2.py3-none-any.whl/cachecontrol/serialize.py", line 55, in dumps
    "body": _b64_encode_bytes(body),
    File "/usr/share/python-wheels/CacheControl-0.11.7-py2.py3-none-any.whl/cachecontrol/serialize.py", line 12, in _b64_encode_bytes
    return base64.b64encode(b).decode("ascii")
    File "/usr/lib/python2.7/base64.py", line 54, in b64encode
    encoded = binascii.b2a_base64(s)[:-1]
    MemoryError
    pi@XXXXXX:~ $

    Merci d’avance pour votre aide.

    • Bonjour Nicolas,

      Quel système d’exploitation tourne sur le Rpi Zéro ?
      Le sudo pip install motioneye –upgrade n’est utile que pour faire une mise à jour, pas besoin de le faire juste après une installation toute fraîche ;-).
      Au redémarrage du Rpi Zero, que donne http://localhost:8765 ?

      Je viens de démarrer un Rpi avec une clef préinstallée qui me sert de test (j’ai basculé le système réel ailleurs).
      Raspbian à jour complet.
      J’ai ceci :
      pi@raspberrypi:~ $ sudo pip install motioneye –upgrade
      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'"

      Pour autant, le Rpi tourne bien avec Raspbian 9.8 et MotionEye est fonctionnel (j’ai l’image des caméras et je reçois les alertes par SMS)
      C’est un Rpi3 avec : motionEye Version 0.39.3 ; Motion Version 4.1.1 ; OS Version Raspbian 9.8

      A bientôt,

      • Bon, je viens d’installer Raspbian Lite sur mon Rpi Zero V1.3 et j’ai la même erreur juste après sudo pip install motioneye.
        Ma carte SD faisant 2Go, j’ai un doute sur le fait que la cause réside dans le manque de place.
        Quelle taille fait votre carte SD ?

      • Bonjour Alban

        Effectivement j’ai tout réinstallé et ça marche, il ne faut surtout pas faire une mise à jour de motioneye juste après l’installation.
        Par contre motioneye est beaucoup beaucoup plus lent avec le RPi zéro.

        Un grand merci pour l’info

        • Bonjour Nicolas,
          Je n’ai pas retesté ce jour (je faisais journée sans écran).
          Pour la lenteur, on peut installer MotionEyeOS qui est plus léger.
          Mon système repose sur un Rpi3 avec MotionEye sans caméra mais prenant le contrôle de 4 caméra dont 1 caméra à vision nocturne à base de RpiZero V1.3.
          Ce Rpi tourne sous MotionEyeOS avec aucune gestion des alertes car passé en “simple flux” ; le système est nettement plus réactif (le défaut étant que le Rpi essaye de redémarrer en boucle en cas de perte du réseau car MotionEyeOS nécessite le réseau).
          Au plaisir,

          • Bonjour,

            Installation réussie sur Rapsberry Pi Zero V1.3 … mais … avec des galères !
            J’ai été obligé de passer sudo python -m pip install --upgrade pip setuptools wheel + de passer plusieurs fois les diverses commandes et … même de faire un redémarrage pour réussir à passer sudo pip install motioneye.
            In Fine, j’ai un RpiZeroV1.3 avec caméra vision nocturne qui tourne avec Raspbian Stretch Lite (9.8) + MotionEye (basé sur Motion 4.2.1).
            Donc, c’est faisable 🙂

              • Bonsoir,
                Merci à Nicolas de m’avoir mis la puce à l’oreille.
                J’ai donc, dans la journée, réinstallé 3 fois Raspbian Lite et MotionEye.
                Je confirme que le tutoriel fonctionne parfaitement si on applique la recommandation de Claude en tapant
                sudo python -m pip install --upgrade pip setuptools wheel
                Avant de lancer
                sudo pip install motioneye
                Tout fonctionne parfaitement.

                J’ai essayé de modifier légèrement l’article pour que cela soit bien clair pour tout le monde (et j’ai corrigé mon article car j’avais fait une erreur sur la ligne donnée par Claude : lors de la recopie = il faut bien noter --upgrade avec 2 fois le signe “-“).
                Pour parfaire le tout, je suis passé en motion 4.2.1.

                Merci à vous tous pour vos commentaires qui permettent, ensemble, d’avancer.

  15. Bonjour Alban
    j’ai testé votre méthode pour les mails et ça fonctionne parfaitement
    Il reste une dernière petite chose ,Motioneye ne se lance pas automatiquement au démarrage du pi même après avoir copier les ligne de commande appropriées
    cordialement

    • Bonjour Bernard,

      Attention, MotionEye est un service “muet” = il tourne sans rien dire.
      Perso, je fonctionne sur Raspberry Pi sans écran ni clavier, mais même avec écran, rien ne dit que Motion et MotionEye sont lancés puisque c’est le principe d’un processus (ça tourne sans rien dire).
      Je pense donc que MotionEye tourne sur votre machine.

      On peut vérifier cela.
      Il faut lancer le navigateur chromium et aller à l’adresse http://localhost:8765 ou, depuis un autre PC, aller à http://192.168.x.xx:8765 (en remplaçant http://192.168.x.xx:8765 par la véritable IP du Raspberry Pi)
      Si pas de connexion, ça le dira.
      On sera fixé.

      Si pas de connexion, on peut faire sudo systemctl start motioneye puis rafraichir le navigateur (F5 par exemple) et voir si c’est mieux.
      Si sudo systemctl start motioneye a bien lancé MotionEye, alors on force l’action au démarrage du Rpi :

      sudo systemctl daemon-reload
      puis
      sudo systemctl enable motioneye
      puis
      sudo systemctl start motioneye
      puis on redémarre avec sudo reboot et on vérifie que le service est bien lancé en reprenant ce commentaire à la ligne “Il faut lancer le navigateur chromium et aller à l’adresse http://localhost:8765 ou, depuis un autre PC, aller à http://192.168.x.xx:8765“.

      A bientôt,

        • Pas de quoi !
          Heureux que cela fonctionne.

          Maintenant, il va falloir vous atteler aux réglages.
          Ce n’est pas toujours facile de régler les alertes.
          Comme le système fonctionne par modification d’images, une caméra qui regarde vers une baie vitrée donnera beaucoup d’alertes en cas de passages nuageux faisant revenir le soleil brusquement avec des effets “flash”.
          Par contre, MotionEye couplé à des caméras infrarouges comme ma caméra de surveillance miniature à base de Raspberry Pi Zero donne de très bons résultats avec tous les volets fermés.
          Non seulement, on peut voir dans le noir (j’ai un accès depuis l’extérieur donc peux surveiller en direct), mais on a aussi très peu de fausses alertes.

          Bon, après, si vous voulez avoir accès à MotionEye depuis l’extérieur, ça sera moins facile car (je pense que) vous avez une LiveBox avec adresse IPv6 non fixe.
          Il faudra alors passer par un service type NoIP.

          Au plaisir,

  16. Apres 3 jours d’installation et de désinstallation en suivant le tuto pas à pas je n’arrive toujours pas a faire fonctionner les alertes verbale et sonore?
    Impossible également de faire fonctionner l’envoi de mails

    • Bonjour Bernard,

      Je viens de suivre le tuto et tout fonctionne.

      Pour les courriels, l’adresse de réception est la même que celle d’envoi ?
      En cliquant sur “Test Email”, quel est le résultat ?

      Pour le script, peut-être un souci de droits.
      La commande bash /home/pi/notifications/notification.sh permet-elle d’entendre la sirène et la phrase ?
      Si non, c’est une erreur de fichiers à lire (emplacements des fichiers ?)
      Si oui, on peut tenter de passer cette commande : sudo chmod +x /home/pi/notifications/notification.sh
      (par défaut, j’ajoute cette ligne dans le tuto)

      A bientôt,

      • Bonsoir Alban et merci de répondre aussi vite
        j ‘ai résolu le problème des alertes en passant la commande : sudo chmod +x ……

        Par contre le problème des mails persiste.Quand je fais un test mail avec gmail voici ce qui est écrit en rouge:
        Notification email failed: 5.7.8 Username and password not accepted. Learn more at 5.7.8https//support.google.com/mail/?p=BadCredentials sism 17025429Wrt.43 – gsmtpl.

        Ca ne marche pas non plus avec mon adresse orange.fr ,le message est le suivant:
        Notification email failed: TLS might be required
        cordialement

  17. Ouf 🙂 encore un peu dur pour moi mais je m’accroche, j’ai retenu l’idée d’avoir plusieurs cartes sd avec raspbian installé, merci pour ce tuto, nous nous y attelons la semaine prochaine.

    Cordialement Nadia

    • Bonsoir Nadia,
      Merci pour ce nouveau message 😉
      En suivant pas à pas le tuto, vous y arriverez sans souci.
      Ce n’est pas un système de vidéosurveillance dernier cri, mais ça permet de surveiller son chez soi à bas coût.
      (Il faudra penser à ouvrir une redirection de port sur la box si vous voulez avoir un accès à la vidéo en direct depuis l’extérieur)
      A bientôt,

  18. Bonjour et merci pour ce super tuto qui m’a bien aidé dans l’installation de MotionEye.

    Je partage un problème que j’ai rencontré avec sa solution dés fois que ça puisse servir.
    Après une install sans message d’erreur, lors du premier lancement de l’interface dans le navigateur, j’ai eu un message ERR_CONNECTION_REFUSED.
    J’ai vérifié si le port était en écoute (netstat -pnl) et là, bah rien …
    J’ai lancé un systemctl motioneye qui m’a renvoyé le message suivant:
    * File "/usr/local/lib/python3.4/dist-packages/motioneye/meyectl.py", line 28, in
    import settings
    ImportError: No module named 'settings'

    Dans /usr/bin mon python est un lien vers python3.5 ce qui a priori pose problème pour l’installation
    j’ai désinstallé motioneye (sudo pip uninstall motioneye), j’ai ensuite supprimé mon lien (rm /usr/python) et je l’ai récréé (ln -s /usr/bin/python2.7 /usr/bin/python).
    Enfin j’ai relancé l’install de motioneye et relancé le service. Tout était OK.

    • Bonjour Fred,
      Merci pour ton commentaire.
      Il faudrait que je teste de refaire toute l’installation pour voir.
      Mais, à l’époque, on était déjà avec les version 3.5 et 2.7 de python me semble-t-il.
      Je crois qu’on a les 2 versions, mais j’avoue que j’installe tellement de trucs …
      @+

  19. Bonjour Merci pour ces super tutos, j’ai fait l’installation avec motion eye sur un raspberry 3 model B, l’ensemble est d’une lenteur effarrente, mais ce n’est pas le propos je vais réinstaller de A à Z on verra bien.
    Je souhaite faire un surveillance de mon mobilhome à 800 kms de chez moi. Je voudrais mettre en place plusieurs caméras IP, en filaire ou Wifi et être informé par mail et/ou sms, photos et messages, éventuellement pouvoir visualiser en direct.
    J’ai pensé à un partage de connexion entre le Raspnerry et un android 4G que je recycle à cet effet et une carte sim à 2€.
    Voyez vous cela possible ou une autre solution.
    Cordialement Dominique

    • Bonjour Dominique,

      Merci pour ce message.
      Mon système est sur Rpi3 et tourne plutôt pas mal (ça reste un Rpi).
      Mais il est vrai que je suis passé à un Raspbian Lite puisque j’ai migré le tout dans un petite boite sans écran.
      J’en parle dans l’article “Une alarme en boîte“.
      D’ailleurs, je viens de le mettre à jour suite à l’ajout d’un bouton pour éteindre mon Raspberry Pi.

      Pour votre question, il semble possible d’utiliser un accès 3G ou 4G.
      Des connaissances qui ont réalisé ce type de système l’avaient cependant fait avec une clef USB spécifique.
      Mais je crois avoir lu des articles parlant d’utiliser un vieux téléphone portable comme “modem”.

      Le système MotionEye sera cependant non visible de l’extérieur car, selon mes connaissances, l’accès de l’extérieur vers le Raspberry Pi sera bloqué.
      En effet, mes recherches sur le sujet pour aider les personnes précédemment citées ont toutes donné la même réponse : les Fournisseurs d’Accès bloquent tous les ports dans le sens “extérieur vers système”.
      Vous devriez pouvoir envoyer des courriels mais pas voir les vidéos en “direct”.

      Pour les SMS, si votre portable perso est chez Free = je sais faire, sinon, je ne sais pas.
      Et envoyer des SMS avec le Rpi lui-même en utilisant son “modem” signifie installer des trucs comme RaspiSMS je pense (jamais essayé).

      Voilà pour une première réponse malheureusement limitée par mes compétences et mes usages.

      Très bonne continuation,
      Au plaisir de vous relire,

  20. Rétroliens : Photomaton automatique à base de Raspberry Pi – TREVILLY.COM

  21. Hello, et merci pour ce tuto!
    Petite question: à ta connaissance, est-ce que l’ensemble MotionEye+Motion fonctionne toujours avec la dernère version en date de Motion ? (4.2.1 à ce jour)

      • Re,
        Après mise à jour ; pas mieux :
        motionEye Version 0.39.3
        Motion Version 4.1.1
        OS Version Raspbian 9.4

        Faudrait tester l’install’ en forçant la version 4.2-1 en faisant

        sudo apt-get update

        wget https://github.com/Motion-Project/motion/releases/download/release-4.2/pi_stretch_motion_4.2-1_armhf.deb

        sudo dpkg -i pi_stretch_motion_4.2-1_armhf.deb

        • Je confirme.
          Je viens d’écraser une de mes cartes SD pour tester.
          Installation de Raspbian Lite et mises à jour.
          Ensuite, reprise de mon tuto mais en modifiant le téléchargement :
          wget https://github.com/Motion-Project/motion/releases/download/release-4.2/pi_stretch_motion_4.2-1_armhf.deb
          Puis :
          sudo dpkg -i pi_stretch_motion_4.2-1_armhf.deb
          Cela a créé des erreurs.
          Mais j’ai continué 🙂
          Ensuite, la ligne
          sudo apt-get install python-pip python-dev libssl-dev libcurl4-openssl-dev libjpeg-dev libz-dev
          a posé un peu plus de soucis avec, carrément, des refus.
          Mais un petit
          sudo apt --fix-broken install
          a permis de réparer puis de relancer ensuite la ligne
          sudo apt-get install python-pip python-dev libssl-dev libcurl4-openssl-dev libjpeg-dev libz-dev
          J’ai donc réussi à terminer le tuto comme il faut.

          Résultat :
          motionEye Version 0.39.3
          Motion Version 4.2
          OS Version Raspbian 9.4

          Et MotionEye tourne.

          Edit après quelques jours de tests en version 4.2 :
          Restez sur Motion 4.1.1 ; la migration et/ou l’installation directe avec Motion 4.2.2 donnent des erreurs diverses et rendent l’usage problématique.
          Personnellement, je suis revenu à la version 4.1.1 afin que tout fonctionne correctement.

          • En effet, j’y suis arrivé de mon côté aussi
            Et as-tu essayé de combiner Motioneye avec Home Assistant (Hass.io). Ca a l’air bien fait pour automatiser pas mal de choses, mais pour l’instant j’ai pas réussi à avoir une installation complète de tout ça…

  22. Rétroliens : TREVILLY.COM

  23. Rétroliens : Installation de MotionEye sur Raspbian Stretch sur Raspberry Pi3 – TREVILLY.COM

    • Bonjour Kosox,
      Avais-tu eu un démarrage de MagicMirror avant l’installation de MotionEye ?
      Si tu tapes sudo systemctl disable motioneye puis sudo reboot, vois-tu MagicMirror démarrer ?
      @+

  24. Merci Alban ; t’es trop cool avec nous ! Passer des heures à installer, faire des captures d’écran, retravailler tes captures et rédiger cet article, vraiment, c’est classe de ta part.
    Je vais essayer ça avec mes camera ip.

Laisser un commentaire

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

*