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

Page mise à jour le : 05 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.

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

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

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

      @+

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

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

  5. 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.
      @+

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

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

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

  9. 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,

  10. 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 …
      @+

  11. 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,

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

  13. 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…

  14. Rétroliens : TREVILLY.COM

  15. 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 ?
      @+

  16. 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 *

*