Construire une caméra ip avec un raspbery pi Zero W

Je vous propose aujourd’hui un article qui vous permettra de mettre en place une caméra ip en utilisant un Raspberry Pi. Nous verrons comment monter un système autonome capable de streamer les images qu’il capte.

Les cas d’utilisations sont nombreux. Vous pouvez aussi bien l’utiliser comme dash cam, ou bien encore comme caméra de surveillance. Justement si c’est cette fonctionnalité que vous souhaitez utiliser, nous verrons en guise de bonus comment intégrer le flux vidéo de la caméra à Home Assistant.

Prérequis

Avant de commencer, il est nécessaire de s’équiper un peu. Il vous faut:


Le matériel
Raspberry pi
Raspberry pi

Ici j’ai choisi la version zero W car elle est très compact et elle dispose d’une connectivité wifi. Elle est donc particulièrement bien adapté à ce type de projet.

x 1
Alimentation

De quoi brancher votre Raspberry Pi.

x 1
Batterie

C’est optionnel mais indispensable si vous souhaitez avoir une caméra mobile et indépendante.

x 1
Carte micro sd

Une capacité de 16 Go est suffisante si vous ne souhaitez pas faire trop d’archivage.

x 1
Caméra

J’ai opté pour ce modèle de quitmat équipé en infrarouge ce qui lui permet de filmer de nuit.

x 1

Les logiciels
Raspbian

Système d’exploitation pour Raspberry Pi. La version lite est suffisante.

Etcher

Utilitaire permettant de flasher simplement vos cartes sd.

 

Côté Raspberry Pi

Installation de raspbian

Afin de pouvoir utiliser votre Raspberry Pi, vous avez besoin d’y installer un système d’exploitation. J’ai choisi Raspbian. Pour l’installer, insérez la carte micro sd dans votre pc, ouvrez etcher et suivez les instructions (si ces instructions ne sont pas assez précises, vous trouverez d’avantage de détails dans cet article).

etcher

etcher

Quelques minutes plus tard la carte est prête !

Paramètrage du wifi

Réinsérez la carte micro sd dans votre pc (elle a dû être éjecté automatiquement à la fin de l’opération précédente). Ouvrez le disque nommé boot. Créez un premier fichier nommé ssh. N’ajoutez rien à l’intérieur, il permet seulement d’indiquer que vous voulez autoriser ce protocole.

Créez un deuxième fichier nommé wpa_supplicant.conf. Indiquez y les informations de connexions nécessaires pour rejoindre votre réseau wifi. Elles doivent se présenter comme ceci:

https://gist.github.com/quentinchap/fc84e9e110fa57dc8898566483c58d06


Selon les protocoles de sécurité de votre box, cette configuration peut-être insuffisante. Dans mon cas par exemple, pour du wpa2/AES, elle ressemble plus à ceci:

https://gist.github.com/quentinchap/dae0d8dd9e457c23b5ec215eba8f58ea


Une fois ces actions effectuées, éjectez proprement la carte et insérez la dans votre Raspberry Pi.

Configuration de la caméra

Connectez votre caméra et branchez votre Raspberry pi au courant.  Vous pouvez désormais y accédez via ssh ou un clavier et un écran.

Dans un premier temps, mettons à jour notre système. Pour ce faire, lancez les commandes suivantes:

https://gist.github.com/quentinchap/e57020d10d3513e285a9310a890b9751

si vous avez choisi un autre OS que Raspbian Lite, vous avez peut-être une interface graphique. Dans ce cas, vous devez trouver le terminal afin de lancer les commandes indiquées tout au long de cet article

Identifiez la caméra connectée précédemment grâce à la commande suivante :

https://gist.github.com/quentinchap/2c7676cda0773872802cf31f1a81ad94

Si comme dans mon cas cette commande ne retourne rien, ce n’est pas forcément anormal. En effet, pour certain modèle, il est nécessaire d’utiliser des drivers spécifiques. Dans ce cas lancez la commande suivante :

https://gist.github.com/quentinchap/2bf0a10311a3cff9dcb646f60db4dad4

Tentez à nouveau la commandes et vous devriez normalement obtenir le chemin de votre caméra (Dans mon cas /dev/video0 ).

Si vous aussi vous avez besoin de drivers particuliers, éditez le fichier /etc/modules et ajoutez la ligne suivante afin que tout se passe bien aux prochains démarrages du Raspberry Pi.

bcm2835-v4l2

Nous allons maintenant installez motion qui va nous permettre de livestreamer ce qui est capté par notre caméra. Pour ce faire, lancez la commande suivante :

https://gist.github.com/quentinchap/65d2a5f1f2d849b494015339532be6d0

Configuration de motion

Nous n’allons pas explorer toutes les possibilités de motion ici mais nous allons voir le minimum pour que votre stream fonctionne.

Ouvrez le fichier de configuration de motion

https://gist.github.com/quentinchap/7351cdee6376c1996c5917cd63b7ee46

Cherchez les lignes suivantes:

https://gist.github.com/quentinchap/3407467163185ea3f426d502e340fe4e

et remplacez les par

https://gist.github.com/quentinchap/62b83b2a5301ad33cbe964242a663ab7

créez un nouveau dossier qui contiendra les images enregistrées et archivées lorsqu’un mouvement est détecté

https://gist.github.com/quentinchap/e7aacd9d07062661823ad448ba749e38

Ensuite, nous allons faire en sorte que motion se lance automatiquement au démarrage de notre Raspberry Pi. Ouvrez le fichier /etc/default/motion grâce à la commande suivante

[shell]sudo nano /etc/default/motion[/shell]

Modifiez la ligne start_motion_daemon comme ci-dessous

[shell]start_motion_daemon=yes[/shell]

Enfin, lancez le service

[shell]sudo service motion start[/shell]

C’est fini ! Vous pouvez tester que le stream fonctionne bien en ouvrant avec votre navigateur l’url http://<ip-du-raspberry>:8081. Vous devriez voir les images filmées par votre caméra.

La caméra est donc fonctionnelle mais certains détails ne sont peut-être pas encore à votre goût. Sachez que vous pouvez modifier la qualité, les couleurs, la fluidité et plein d’autre paramètres grâce au fichier de configuration /etc/motion/motion.conf que nous avions vu précédemment. N’hésitez donc pas à tester des choses pour arriver au résultat que vous attendez.

Côté Home Assistant (Bonus)

Petit bonus pour finir pour ceux qui comme moi utilise Home Assistant, il est très simple d’intégrer ces images. Pour ce faire, nous allons utiliser le composant Generic MJPEG IP Camera. Il vous suffit d’éditer votre fichier de configuration et d’ajouter les lignes suivantes

[js]
camera:
– platform: mjpeg
mjpeg_url: http://&lt;ip-du-raspberry&gt;:8081
[/js]

Un redémarrage d’Home Assistant et le tour est jouer !

Caméra de surveillance en mode nuit

Caméra de surveillance en mode nuit

Conclusion

Voila, en quelques minutes, vous avez une caméra toute intégré à Home-assistant ! Il y a beaucoup de possibilités que nous n’avons pas exploité ici et que nous verrons probablement plus tard. A bientôt !

 

18 réponses

  1. Migui Pda dit :

    Parfait, c’est bien une utilité intéressante à exploiter. Toutefois, comment identifier le bon driver relatif à la caméra que l’on possède ?

    Voici un nouveau besoin :
    1) même fonctionnalité que présenté ici si ce n’est qu’elle doit être utilisée comme Judas de porte
    2) l’idée est alors de pouvoir identifier comme non-relevant les habitants de la maison et les amis et comme relevant, les gens qui viennent (roder) à la porte (pour voler ou entendre si quelqu’un est là). Pour se faire, intégrer à la fois le précédent motion avec ce code-ci : https://github.com/ageitgey/face_recognition
    3) et forcément, alerter par e-mail ou par la voix lorsque quelqu’un d’inconnu est à la porte qu’il y a une saisie vidéo/photo.
    4) la fonctionnalité vocale étant alors assurée par Jarvis (https://www.openjarvis.com/)

    D’après-vous, est-il donc faisable (sur un RPi 3) de faire tourner ces trois fonctionnalité (Reconnaissance Faciale/Détection de Mvt et Vocale avec Jarvis) ?

    D’avance merci de votre retour d’info.

    • Bonjour,
      Théoriquement si vous avez achetez la caméra officielle vous n’avez pas besoin d’installer de nouveaux drivers avec Raspbian. Dans les autres cas, celui du tuto devrais convenir. Normalement c’est assez standard. Si cela ne fonctionne pas il faudra vous rapprocher de la documentation de votre caméra.

      Concernant votre projet sur un rpi3 la reconnaissance facial devrait être faisable cependant je ne saurais pas dire si jarvis passera simultanément… Je pense que cela dépendra surtout de la qualité d’image de votre caméra. Plus le flux sera de bonne qualité plus la reconnaissance devrait être bonne cependant cela demandera plus de ressources.

      Dans tous les cas votre projet semble intéressant, n’hésitez pas à nous tenir au courant de vos avancés 😉

  2. Joris Stocker dit :

    Bonjour,

    Très bon article.
    La caméra que vous proposez d’acheter notifie qu’elle n’est pas compatible avec un Raspberry Pi Zero, avez vous vraiment utilisé celle-là ?

    Merci

    • Bonjour,

      Merci de votre retour je pense que la fiche produit a évolué. Cette référence ne semble effectivement pas compatible (en plus de la description, la photo semble indiquer que la nappe de connexion n’est pas la bonne).
      Je viens de mettre à jour le lien avec un modèle équivalent à celui que j’avais sélectionné.

      Bonne journée.

  3. Sebastien Moisan dit :

    Bonjour,
    L’article est très bien détaillé et je le recommande.
    Cependant je rencontre une difficulté car lorsque je rentre la ligne de code suivante : « chmod g+ rwx /home/pi/image-cam ».
    J’ai la réponse suivante : « chmod: cannot access ‘rwx’: No such file or directory ».
    Avez vous une idée à me soumettre?
    Merci d’avance,
    Seb

    • Bonjour,

      Il semble y avoir une petite erreur de frappe dans la commande il y a un espace en trop. Pouvez-vous tester chmod g+rwx /home/pi/image-cam ? Normalement votre problème devrait-être réglé.

      Bonne journée

  4. titi007 dit :

    Bonjour,
    Merci pour ce petit tuto, je m’en sers pour une reconnaissance de plaque d’immatriculation et ça fonctionne plutôt bien.
    intéressé par le projet de @Migui Pda aussi 😉
    Cependant, j’ai un tout petit problème, car à chaque redémarrage de ma caméra après une coupure de courant, je n’ai plus d’image et je suis obligé de relancer la commande : sudo modprobe bcm2835-v4l2
    pourtant, c’est une caméra officielle .. du moins il me semblait !
    Faut-il intégrer cette commande au démarrage du pi zero ?

    • Bonjour,
      Merci de vos retours 🙂 De mon côté je n’ai pas rencontré ce type de soucis alors que je relance souvent mon pi (off quand je suis chez moi). Je suppose que l’ajout de commande au démarrage réglera le soucis. Je me renseigne un peu plus et si j’ai du nouveau je mettrais l’article à jour 😉
      Bonne journée 🙂

  5. Phil dit :

    Bonjour et merci pour votre article.
    Sinon une question sur la camera utilisée, elle est prévue pour fonctionner uniquement la nuit (filtre) ?
    Comment est la qualité (couleur) des images de jour ? un exemple dans l’article SVP.
    Merci d’avance.
    Phil

    • Bonjour,

      Pour répondre à votre question la caméra fonctionne aussi bien de jour que de nuit pas de soucis. Concernant la qualité d’image en tout objectivité elle n’est pas folle chez moi mais selon vos réglage il semble qu’il soit possible de considérablement améliorer la qualité. J’ajouterais un exemple de vision en journée dès que possible 😉

      Bonne journée.

  6. Cyril dit :

    Bonjour Quentin !

    Merci beaucoup pour ce tuto, c’est exactement ce que je cherchais.
    J’ai acheté tous le matériel que tu propose et j’ai fais ma carte sd bootable.
    En revanche j’ai un problème pour connecter mon raspberry pi zero w au wifi :
    – je suis chez Free et dans les paramètres de ma freebox j’ai les choses suivantes :
    – SSID : Gabert
    – Type de protection : WPA2-PSK/AES
    – Version du protocole EAPOL : Version 2
    donc j’ai mis dans mon fichier wpa_supplicant.conf :
    network={
    ssid= »Gabert »
    psk= »mot-de-passe »
    proto=RSN
    key_mgmt=WPA-PSK
    pairwise=CCMP
    group=CCMP
    auth_alg=OPEN
    }

    Mais rien n’y fait, mon raspberry ne se connecte pas…
    Merci de ton aide.
    Cyril

    • Bonjour,
      Je suis aussi en WPA2/AES et c’est la configuration que j’ai utilisé. N’ayant pas ta box je vais devoir tenter de t’aider à l’aveugle :s

      Sur certain site il conseil sinon de tester la configuration suivante:

      country=fr
      update_config=1
      ctrl_interface=/var/run/wpa_supplicant

      network={
      scan_ssid=1
      ssid= »MaBoxInternet »
      psk= »ClefSecurite »
      }

      Sinon est-tu certain que la connexion ne se fait pas ? Comment testes-tu la connexion ?
      Bonne journée et bon courage pour ton installation 😉

  7. PAGANO dit :

    Bonjour, très intéressant projet. J’ai commencer à le monter mais malheureusement je rencontre un soucis.
    Après « update » et « upgrade » qui se sont bien passés, la commande  » ls /dev/video*  » me revoie un message d’erreur  » ls: cannot access ‘/dev/video*’: No such file or directory « .
    Je n’arrive donc pas à savoir qu’elle caméra est présente.
    Petite précision, j’ai tester avec un autre OS (KiOS) et la caméra fonctionne bien.
    Une idée ?

  8. CY dit :

    Bonjour et tout d’abord merci beaucoup pour ce tuto c’est exactement ce que je cherchais.

    J’ai pris exactement le même matériel que tu propose.
    J’ai suivit toutes les étapes mais j’arrive avec un écran gris où il est marque « UNABLE TO OPEN VIDEO DEVICE »…
    J’ai eu un soucis lors de la config au niveau de l’identification de la caméra connecté.

    La commande ls /dev/video* ne me renvoie « No such file or directory »

    Ensuite : sudo modprobe bcm2835-v4l2 me renvoie :
    modprobe: ERROR: could not insert ‘bcm2835_v4l2’: Operation not permitted

    Si je fais lsmob je vois que c’est plus v4l2_common qu’il faut mettre donc je remplace tout mais rien n’y fais…

    J’aurai besoin de ton aide Quentin.
    Merci pour ton retour,
    CY

  9. hycpi dit :

    Bonjour,
    J’ai eu le même soucis. Pour y remédier il a fallu que j’active le port caméra via l’outil de configuration :

    $ sudo raspi-config
    puis menu « 5 Interfacing Options »
    puis menu « P1 Camera Enable/Disable connection to the Raspberry Pi Camera »
    et enfin répondre oui à la demande d’activation

    PS1 : remplacer la commande « chmod g+ rwx /home/pi/image-cam » par « sudo chmod g+rwx /home/pi/image-cam »

    En espérant que cela aura pu vous aider.

    Bonne fin de journée

  10. CY dit :

    Bonjour hycpi !

    J’ai activé le port de la caméra mais rien n’y fais j’ai toujours la même erreur…

    Une autres option peut-être ?

    Merci pour ton retour.

  11. Leo dit :

    Bonjour, j’ai fait exactement ce qui est dit de faire, mais j’ai une erreur sur mon navigateur  »

    Ce site est inaccessible
    n’autorise pas la connexion.

    D’ou cela peut provenir ?

    • Crincrin dit :

      Bonjour
      J’ai eu le même problème, qui s’est résolu en désactivant le pare-feu windows du réseau privé.

      Maintenant j’ai accès au stream, mais qui m’affiche « UNABLE TO OPEN VIDEO DEVICE », malgré l’activation de la caméra comme indiqué par hycpi :/

      Merci pour le tuto en tout cas

Laisser un commentaire

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

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.