Débuter
S'équiper
Matériel recommandé

Vous voulez participer au financement du blog. C’est simple, suivez les liens commerciaux pour faire vos achats. Quelques pourcents qui font toute la différence. Merci à vous !

Kit raspberry pi 4 8GB
Kit Raspberry Pi 4 - 8GB
kit raspberry pi 4
Kit Raspberry Pi 4 - 4GB
raspberry pi 4 2019
Raspberry Pi 4 - 4GB
Cartes micro-SD SDHC v90
Kit Retrogaming Nespi
Kit Retrogaming

Caméra de surveillance MQTT Raspberry Pi Zero W et Node-RED pour Home Assistant

raspberry pi zero w camera surveillance diy node-red mqtt
Partager sur facebook
Partager sur twitter
Partager sur linkedin
Partager sur pinterest
Partager sur email
Partager sur telegram
drapeau anglais
niveau avance
raspberry pi camera v2.1

Depuis la version 1.3, le Raspberry Pi Zero possède un connecteur caméra sur lequel on peut brancher la caméra 8MP du Raspberry Pi. Home Assistant supporte de nombreuses caméras. Dans ce projet, nous allons fabriquer – sans programmation – une mini caméra de surveillance à l’aide de Node-RED.

Projet actualisé le 1er mai 2020

 

Node-RED permet de développer sans avoir (quasiment) à coder. On utilisera Node-RED pour prendre un cliché à intervalle régulier. Ce cliché sera ensuite envoyé sur un broker MQTT. Home Assistant récupère automatiquement chaque nouvelle image publiées sur message MQTT pour l’afficher sur le dashboard.

Pourquoi une caméra MQTT pour Home Assistant ?

Home Assistant supporte de nombreux types de caméra (liste complète). Depuis la version 0.46, les caméras Arlo de Netgear sont partiellement supportées.

Pour fabriquer une caméra de surveillance DIY à partir d’un Raspberry Pi Zero W, on a donc plusieurs solutions à notre disposition :

Pour écrire cet article, j’ai commencé (probablement comme tout le monde !) à installer Motion sur mon Raspberry Pi Zero et intégré à Home Assistant le flux vidéo à l’aide du composant Generic MJPEG IP Camera. Mais ça ne fonctionne pas. Actuellement, (sauf erreur de ma part), Home Assistant n’affiche aucune image sur les vues (view). Il n’y a que sur la vue de détail que l’image (flux vidéo) est affichée.

Je me suis donc tourné vers MQTT. L’avantage de MQTT c’est qu’il est possible de créer une caméra de surveillance connectée intelligente. En utilisant MQTT pour communiquer avec Home assistant, on pourra ajouter d’autres fonctions à la caméra:

  • Allumer un éclairage
  • Brancher un haut parleur  et diffuser des enregistrements audio : alarme, aboiement de chien, sirène…
  • Déclencher l’ouverture d’un portail ou d’un portillon
  • Transformer la caméra en portier vidéo

Pourquoi utiliser Node-RED ?

Tout simplement parce qu’il n’y aura absolument aucune programmation à faire ! Trois nodes suffisent pour créer une caméra de surveillance connectée !

Matériel nécessaire

Pour fabriquer une caméra de surveillance DIY à l’aide du raspberry Pi Zero W, vous aurez besoin du matériel suivant

  • Raspberry Pi Zero WH (avec signifie que le GPIO est déjà soudé)
  • Une alimentation 5V 3A. Surtout pas une puissance inférieure sinon vous risquez d’avoir des redémarrages intempestifs du Raspberry Pi.
  • Un boitier imprimé en 3D. Vous trouverez plusieurs modèles STL à imprimer dans cet article. Si vous choisissez une caméra avec éclairage par LED, je vous propose ce boitier à imprimer en 3D.
  • Une caméra. Tout est expliqué au paragraphe suivant
  • Eventuellement une nappe de connexion pour déporter la caméra (ribbon)

raspberry pi zero camera surveillance node-red home assistant

Le Raspberry Pi Zero équipé d’une caméra NoIR (vision nocturne améliorée) installé dans un boitier imprimé en 3D.

studio photo camera securite raspberry pi zero boitier impression 3d fond blanc

Quelle caméra choisir pour le Raspberry Pi Zero W ?

Voici quelques modèle de caméra que vous pouvez acheter pour fabriquer une caméra de surveillance à partir d’un Raspberry Pi Zero. Le modèle NoIR est le mieux adapté car il permet avec un éclairage complémentaire (2 Led infra rouge par exemple) d’obtenir une caméra de surveillance nocturne jusqu’à 10 m environ.

Caméra v2.1 couleur officielle Raspberry Caméra v2.1 NoIR (1) officielle Raspberry Caméra asiatique NoIR (1)

(double éclairage à Led)

raspberry pi camera v2.1 raspberry pi v2.1 noir camera official noir compatible camera raspberry pi
Connecteur CSI CSI CSI, compatible Raspberry
Dimensions 25 × 24 × 9 mm 25 × 24 × 9 mm 25 x 24 x 26 mm

25 x 75 x 26mm (avec Led)

Résolution 8MP

3280 × 2464 pixels

8MP

3280 × 2464 pixels

5MP

2592 × 1944 pixels

Capteur CMOS Sony IMX219 CMOS Sony IMX219 CMOS OmniVision OV5647
Résolution vidéo max. 1080p30 1080p30 1080p30
Taille du capteur 1/4 pouces 1/4 pouces 1/4 pouces
Driver V4L2  V4L2  V4L2
Focale 3.60 mm 3.60 mm 3.60 mm
Champ de vision 53°(horiz.) x 41°(vert.) 53°(horiz.) x 41°(vert.) 75,7° (horiz.)
Liens commerciaux Amazon, environ 26€

Banggood, environ 28€

Amazon, environ 33€

Banggood, environ 29€

Aliexpress, environ 18€

Banggood, à partir de 15€

Le connecteur caméra qui équipe le Raspberry Pi Zero W est différent du Raspberry Pi 3 (ou antérieur). Il existe une version spécifique au Zero. En fait, c’est la nappe de connexion qui change. Si vous avez déjà une caméra ou un clone asiatique, vous pouvez acheter un nappe compatible pour environ 2€.

adaptateur nappe camera raspberry pi zero 1.3

Préparer le Raspberry Pi Zero W

Si vous venez d’acheter votre Raspberry Pi Zero W, suivez ces étapes pour préparer votre système :

  1. Installer Raspbian Jessie Lite (sans écran ni clavier) sur un Raspberry Pi Zero W
  2. Installer Node-RED sur Raspbian Jessie Lite
  3. Installer Home Assistant sur un Raspberry Pi, Orange Pi
  4. Installer un broker (serveur) MQTT, par exemple Mosquitto

Activer le bus I2C pour pouvoir utiliser la caméra

Pour pouvoir utiliser la caméra, il faut d’abord activer le bus I2C du Raspberry Pi. Par sécurité, le bus I2C est déconnecté. Le bus I2C peut être activé à l’aide de l’utilitaire raspi-config de Raspbian.

sudo raspi-config

Allez à l’option (5) Interfacing Option

raspberry pi i2c raspi-config

Puis activez le module caméra (P1)

raspberry pi i2c activate raspi-config

Ceci fait, lancez la commande suivante pour changer le driver de la caméra

sudo modprobe bcm2835-v4l2

On rend permanent le chargement du driver au démarrage en exécutant

echo "bcm2835-v4l2" | sudo tee -a /etc/modules

Maintenant, relancez le système pour activer les modifications

sudo reboot

Installer la librairie Python Picamera

Pour ce projet, nous allons utiliser le flow node-red-contrib-camerapi qui permet de prendre un cliché à l’aide de la librairie Python Picamera (présentée en détail dans ce tutoriel). Exécutez cette commande pour l’installer.

sudo apt-get install python-picamera python3-picamera

Installer le module node-red-contrib-camerapi

Ouvrez le gestionnaire de palette

node-red manage palette

Saisissez camera dans le champ de recherche puis lancez l’installation du module en appuyant sur install.

camera raspberry pi zero node-red

Tout est prêt pour coder votre caméra de surveillance.

Capture vidéo (snapshot) avec Node-RED

Maintenant que tout fonctionne, nous allons utiliser Node-RED pour capturer une image à intervalle régulier. MQTT n’est pas conçu pour supporter un flux vidéo. D’autre part, comme les messages vont circuler sur votre réseau local et potentiellement être envoyés à votre smartphone lorsque vous quittez votre domicile, il est nécessaire de limiter la taille de l’image. C’est un peu dommage lorsqu’on possède une caméra 8MP, mais on va devoir limiter la résolution. Si vous utilisez l’application mobile pour iOS, limitez à 320 x 240 pixels. Pour un utilisation uniquement sur un réseau local, vous pouvez grimper la résolution à 640 x 480 pixels.

C’est parti pour la programmation. Déposez un node Inject. Choisissez le type repeat (répéter) et indiquez l’intervalle de prise de vue. Comme pour la résolution, inutile d’être trop gourmand. Un cliché toutes les 5 secondes, c’est suffisant pour voir ce qu’il y a dans une pièce.

cliche camera raspberry pi

Dans le champ de recherche, saisissez camera pour trouver le node de prise du vue du module

camerapi node-red take picture raspberry pi zero

Placez le sur le flow et faites un double clic et éditer les paramètres comme ceci :

  • File Mode : buffermode. Aucun fichier ne sera stocké localement. MQTT supporte l’envoi du buffer.
  • Resolution : 320 x 240 (conseillé)
  • Vous pouvez orienter ou inverser l’image en fonction de la position de la caméra avec les option flip et rotate
  • Vous pouvez ajuster le contraste, luminosité…
  • Enfin (inutile pour une caméra de surveillance), vous pouvez ajouter un effet (négatif, flou…)

camera raspberry pi node-red node configuration

Comme vous pouvez le constater, il n’y a aucune compression. C’est aussi une raison de limiter la taille de l’image.

camera debug buffermode correct raspberry pi zero

Pour tester que tout fonctionne bien, vous pouvez brancher un node debug et déployer le flow. Dans l’onglet debug, vous devez obtenir un objet contenant un tableau de chiffre (le buffer de l’image). Si vous obtenez une chaine vide, allez à la fin du tutoriel pour identifier et corriger le problème.

Publier (envoyer) l’image de surveillance par MQTT

MQTT est supporté nativement par Node-RED. Cherchez le flow MQTT dans la palette et placez sur le flow un node MQTT output (sortie).

5 node red mqtt input output node

Ouvrez le node pour l’éditer.

Cliquez sur le crayon pour configurer une nouvelle connexion. Sur le premier onglet, indiquez l’adresse IP (ou l’adresse internet si vous utilisez un Broker en ligne)

6 node mqtt output connection broker mosquitto

Si vous avez mis en place une authentification par mot de passe, allez au second onglet et remplissez les champs Username et Password

node-red node mqtt security

 

Remarque. La sécurité par mot de passe ne crypte pas les massages qui transitent sur le réseau local. Pour cela, il faut activer le cryptage SSL du broker

Validez la connexion en cliquant sur Add. De retour sur le panneau de configuration du node MQTT, sélectionnez la connexion dans la liste. Indiquez enfin un Topic MQTT. Ici, toutes les images seront publiées sur le Topic camera/pizerow. Comme les images sont publiées régulièrement, vous pouvez laisser le QoS sur 0 (les messages sont envoyés sans garantie de réception) et retain sur false (lorsqu’un nouveau client se connecte, il ne pourra pas récupérer les anciens messages – images). Cliquez sur Done pour terminer.

8 mqtt node red send image camera security home assistant raspberry pi

La programmation de votre caméra est terminée. Déployez le flow

camera security raspberry pi zero w node-red flow

Code du Flow

Collez ce code et modifiez les paramètres avant de déployer le flow

[{"id":"63d2ff76.6564e","type":"inject","z":"6f9a15f1.e2763c","name":"Every 5 secondes","topic":"","payload":"","payloadType":"date","repeat":"5","crontab":"","once":true,"x":160.5,"y":175,"wires":[["8d852b1a.b9bdf8"]]},{"id":"8d852b1a.b9bdf8","type":"camerapi-takephoto","z":"6f9a15f1.e2763c","filemode":"0","filename":"","filedefpath":"1","filepath":"","fileformat":"jpeg","resolution":"1","rotation":"0","fliph":"0","flipv":"0","brightness":"50","contrast":"0","sharpness":"0","imageeffect":"none","name":"","x":403.5,"y":215,"wires":[["f74b1572.e5bce8","50d0f5e5.e9b3ac"]]},{"id":"f74b1572.e5bce8","type":"mqtt out","z":"6f9a15f1.e2763c","name":"","topic":"camera/pizerow","qos":"0","retain":"false","broker":"4b7f2fe2.bb49d","x":635.5,"y":252,"wires":[]},{"id":"50d0f5e5.e9b3ac","type":"debug","z":"6f9a15f1.e2763c","name":"","active":false,"console":"false","complete":"false","x":631.5,"y":165,"wires":[]},{"id":"4b7f2fe2.bb49d","type":"mqtt-broker","z":"","broker":"","port":"","clientid":"","usetls":false,"compatmode":true,"keepalive":"60","cleansession":true,"willTopic":"","willQos":"0","willPayload":"","birthTopic":"","birthQos":"0","birthPayload":""}]

Inclure la caméra MQTT à Home Assistant

Ouvrez le fichier de configuration d’Home Assistant

sudo nano /home/homeassistant/.homeasssistant/configuration.yaml

Commencez par ajouter une section mqtt et indiquez les paramètres de connexion à votre broker. Si vous avez activé a protection par mot de passe, remplissez username et password, sinon supprimez les paramètres.

mqtt:
  broker: localhost
  port: 1883
  keepalive: 60
  username: <user>
  password: <password>
  protocol: 3.1.1

Ensuite, ajoutez une nouvelle section camera. Indiquez le topic sur lequel Home Assistant doit aller récupérer les images. Ici camera/pizerow

camera:
  platform: mqtt
  topic: camera/pizerow
  name: pizerow

Ajoutez la caméra à un groupe à l’aide. Ici, cela donnera camera.pizerow. Pour modifier l’étiquette affichée, ajoutez cette

Enregistrez la configuration (XTRL + X puis Y – O) et relancez Home Assistant

sudo systemctl restart home-assistant@homeassistant

Après le redémarrage, la caméra est parfaitement intégrée à Home Assistant

raspberry pi zero w camera surveillance diy node-red mqtt

En cas de problème avec le module camerapi

Le module camerapi pour Node-RED est basé sur la librairie Picamera, si celle-ci n’est pas installée, vous aurez ce message

0|node-red | CameraPi (err): Error: Command failed: python /home/pi/.node-red/node_modules/node-red-contrib-camerapi/lib/python/get_photo.py pic_722dcbe7-15d6-477c-bd22-29510bbadce1.jpg /home/pi/Pictures/ jpeg 320 240 0 0 0 50 0 0 none
0|node-red | Traceback (most recent call last):
0|node-red |   File "/home/pi/.node-red/node_modules/node-red-contrib-camerapi/lib/python/get_photo.py", line 1, in <module>
0|node-red |     import picamera
0|node-red | ImportError: No module named picamera

Le répertoire Pictures n’existe pas par défaut sur Raspbian Jessie Lite. Vous risquez d’avoir ce message d’erreur au premier déploiement du flow Node-RED.

0|node-red | CameraPi (log): Generate - /home/pi/Pictures/pic_ee62d58d-ad4d-40ff-b403-19e1faf10902.jpg
0|node-red | 26 Jun 10:07:38 - [info] [camerapi-takephoto:7c67fe4a.f9f59] python /home/pi/.node-red/node_modules/node-red-contrib-camerapi/lib/python/get_photo.py pic_ee62d58d-ad4d-40ff-b403-19e1faf10902.jpg /home/pi/Pictures/ jpeg 320 240 0 0 0 50 0 0 none
0|node-red | CameraPi (err): Error: Command failed: python /home/pi/.node-red/node_modules/node-red-contrib-camerapi/lib/python/get_photo.py pic_ee62d58d-ad4d-40ff-b403-19e1faf10902.jpg /home/pi/Pictures/ jpeg 320 240 0 0 0 50 0 0 none
0|node-red | Traceback (most recent call last):
0|node-red |   File "/home/pi/.node-red/node_modules/node-red-contrib-camerapi/lib/python/get_photo.py", line 1, in <module>
0|node-red |     import picamera
0|node-red | ImportError: No module named picamera

Ouvrez un Terminal et exécutez cette commande pour créer le dossier manquant

mkdir /home/pi/Pictures

 

Et voilà, grâce à Node-RED et MQTT, nous venons de fabriquer un caméra de surveillance connectée 100% DIY. Vous avez une maitrise totale des images qui sont envoyées à votre serveur domotique ou sur votre smartphone lorsque vous quittez votre domicile. Dans la prochain tutoriel, nous ajouterons un détecteur de mouvement qui permettra d’envoyer (aussi simplement) une notification, un email ou déclencher un scénario sur le serveur domotique.

 

Avez-vous aimé cet article ?
[Total: 1 Moyenne: 5]
Partager sur facebook
Partager sur twitter
Partager sur linkedin
Partager sur pinterest
Partager sur email
Partager sur telegram

Vous rencontrez un problème avec ce sujet ?

Peut-être que quelqu’un a déjà trouvé la solution, visitez le forum avant de poser votre question

Vous avez aimé ce projet ? Ne manquez plus aucun projet en vous abonnant à notre lettre d’information hebdomadaire!

4 Commentaires
  1. Bonjour,

    Merci pour ce super tuto.

    Où puis-je trouver le tuto suivant ” Dans la prochain tutoriel, nous ajouterons un détecteur de mouvement qui permettra d’envoyer (aussi simplement) une notification, un email ou déclencher un scénario sur le serveur domotique.”

    Djok

    • Effectivement, j’ai oublié de le faire. Je l’ajoute à la liste 😀

      • Bonjour, Je cherche aussi votre prochain tuto. Est-ce que vous avez eu le temps de le faire ? J’ai quelques problèmes avec le détecteur qui s’enclenche tout seul dès l’envoie du mail avec la photo, ou toutes les 2 minutes environ…

        • Bonjour Black Panthera. Je me suis lancé dans un nouveau projet cette semaine. Je suis en train de développer une appli pour tablette et smartphone (iOS et Android) qui va nous permettre de piloter tous nos projets DIY même en dehors de chez nous. Dès qu’elle sera terminée, je vais reprendre tous les anciens projets pour les connecter à l’appli.

Laisser un commentaire

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

Sondage

Vous avez la parole. Quels sont les thèmes qui vous intéressent en 2021.

Résultats du sondage début janvier.

Merci pour votre confiance. Prenez soin de vous et passez de bonnes fêtes !

Jusqu’à 8 réponses possibles. Vous pouvez faire d’autres propositions. 

Les thèmes qui vous intéressent en 2021
  • Proposer une autre réponse

Utiliser la flèche rouge pour déplier tous les choix.

Publicité
Partager
Partager sur facebook
Partager sur twitter
Partager sur linkedin
Partager sur pinterest
Partager sur email
Partager sur telegram

Table des matières

À Lire aussi
Publicité
Domotique et objets connectés à faire soi-même
Vous avez aimé ce tutoriel

Ne manquez plus les prochains projets

Recevez chaque semaine le récapitulatif des tutoriels et projets.

Vous pouvez vous désabonner à tout moment.