Vidéo surveillance du réseau

 La vidéo surveillance est de plus en plus présente dans notre environnement et il est aussi de plus en plus facile de la déployer avec du matériel du commerce. Les différentes caméras miniatures sont désormais de très bonne qualité, pas chères, et en plus sont de véritables objets connectés. Pour notre loisir, il est intéressant de l'essayer pour savoir si cela est valable pour surveiller les trains sur un réseau miniature.

Les caméras:

Le choix des petites caméras s'est considérablement élargi et on trouve de tout et à tous les prix. Nous avons sélectionné deux modèles (ESP32-CAM) sur la base d'un ESP32 car ils sont compacts, assez fiables, peuvent être utilisés en Wi-Fi et ne nécessitent qu'une configuration (pas de programmation). Les utilisateurs de ces caméras sont de plus en plus nombreux et en particulier pour de la vidéosurveillance de domicile. La plupart du temps ces caméras sont intégrées à un logiciel de domotique (ex: Domoticz) voire un logiciel dédié de vidéo surveillance.
Nous avons opté pour un modèle avec une optique classique et un modèle avec une optique grand-angle. Notre but est de surveiller la circulation des trains sur un grand réseau sur lequel la visibilité est bien sûr réduite du fait de sa configuration de ses fonds de décors. 

Deux caméra dont une avec un objectif grand angle à droite

Les caméras doivent d'abord être configurées et testées individuellement. Pour cela, il existe un site qui donne les fichiers binaires à télécharger dans l'ESP32 et qui gèrent complément la caméra. Fantastique non ? Après avoir téléchargé le fichier binaire sur votre PC (ex: tasmota32-webcam.bin), vous pouvez utiliser TASMOTA pour télécharger ce même fichier sur l'ESP32. Branchez votre ESP32 sur le PC, notez le port COM. C'est simple et rapide.
L'opération suivante consiste à configurer la caméra. Pour cela référez-vous aux nombreux tutoriels disponibles (ex: sur le site Instructables).
Notez et étiquetez sur votre ESP32-CAM l'adresse IP de votre caméra car cela vous servira très souvent!
Pour tester votre caméra, il vous suffit de vous connecter à son adresse IP en tapant celle-ci dans votre navigateur Internet. Certains paramètres permettent de s'interfacer avec des logiciels comme Domoticz voire d'autres plateformes qui sont en mesure de traiter ces images.
Maintenant que nous avons les flux d'images, il nous faut les traiter et les afficher. C'est là qu'intervient le Raspberry Pi.

Le Raspberry Pi 3:

Ce petit boitier est un petit bijou de technologie qui a de très nombreuses applications (ex: petit ordinateur, centrale domotique, etc...). Il bien adapté à notre besoin car il est équipé d'un processeur dédié qui traite des flux vidéo. Le Pi se décline en plusieurs versions et nous avons opté pour la version 3 car elle était accessible au niveau prix (avant la flambé de ceux-ci dus à une pénurie de composants).
A noter que les versions antérieures conviendraient aussi.
Nous avons fait l'acquisition d'un kit qui comprend le Pi, des petits radiateurs à monter sur les processeurs, un boitier, la carte SD, l'alimentation. Aucune difficulté de montage. La carte SD contient déjà un OS qui permet de démarrer. Par la suite vous pouvez télécharger d'autres programmes.

 Le kit Raspberry Pi
 

Le kit Pi monté avec la caméra connectée à un port USB

Nous avons opté pour une configuration de type point d'accès (Access Point). Nous avons remplacé l'OS d'origine (conservé sur l'ancienne carte SD) par un autre OS (sur une nouvelle carte SD) qui est configuré pour démarrer l'Access Point automatiquement.
 
Pour se connecter au Pi-3, vous pouvez le faire en utilisant la connexion à distance depuis votre PC. Cela facilite toute opération de préparation des caméras et des scripts. 
 
Exemple de connexion à distance sur le Pi 3 depuis un PC

Une fois connecté, il est nécessaire de se loguer sur le compte du Pi. 
 
 Ecran de démarrage du Pi avec réseau Wi-Fi nommé Baleine

Après s'être connecté, nous allons tester la caméra sur le Pi 3. Rien de plus simple. Il faut d'abord la connecter sur un port USB (pour l'alimenter) ou sur une batterie. Puis, dans le navigateur Web, taper l'adresse IP de la caméra et observez que le flux vidéo s'affiche de manière fluide et nette. Répétez l'opération pour toutes les caméras. 

 Vue de la page d'accueil de la caméra.
 
La suite mérite plus de réflexion car il faut afficher les flux vidéo sur l'écran qui sera connecté au Pi 3 via la liaison HDMI. Nous avons d'abord tenté d'utiliser Domoticz pour gérer les caméras. L'ajout des caméras dans l'environnement ne pose pas de problème et on peut aussi voir directement les images pour vérifier le bon fonctionnement. Hélas, nous n'avons pas pu afficher plusieurs flux vidéo en simulané et en plein écran. Peut-être que cela sera possible dans les futures versions de Domoticz.
Une autre solution consiste à écrire un script pour afficher les flux vidéo. En s'appuyant sur le programme omxplayer (qu'il faut télécharger sur le Pi), le script devient relativement simple. Avant d'écrire le script, il faut lire le manuel en ligne (taper man omxplayer dans une fenêtre terminal) pour connaître les options et surtout leur syntaxe. 
 
Voici un exemple pour afficher deux flux côte à côte en haut de l'écran. 
 
#!/bin/bash
echo “VIDEO LPT”
/usr/bin/omxplayer --hdmiclocksync --live --win '320 0 640 250' --subtitles LPT "http://192.168.4.4:81" &
/usr/bin/omxplayer --hdmiclocksync --live --win '0 0 320 250' --subtitles LPT "http://192.168.4.5:81" &

Les flux video sont envoyés en direct sur la sortie HDMI. L'option win donne la position et la taille de la fenêtre (le 0 est en haut à gaucge). 
Le symbole & permet d'exécuter la ligne de commande en tache de fond (script non bloquant).
Bien évidement pour observer le résultat, il faudra connecter un écran avec le Pi en HDMI.

Affichage du déroulement du script dans la fenêtre de commandes

Affichage du flux vidéo de la première caméra sur l'écran

Le nombre maximum de caméras n'est limité que par la taille de l'écran et surtout par le nombre de flux que le Pi peut gérer en même temps sans avoir une latence trop importante. Nous sommes arrivés à la conclusion que 4 flux seraient suffiants et à la limite de ce qui est supportable par le Pi 3. Ceci est amené à évoluer avec les prochaines générations de Pi (4 et plus).

En cas de problème, un message d'erreur s'affiche dans la fenêtre de commandes. Le script ne relance pas automatiquement les flux. Ceux-ci peuvent s'arrêter suite à un problème d'alimentaion de la caméra ou un problème avec le WiFi (perturbations, mauvaise réception, ...). 

Passons aux essais!

Essais:

Nous avons installés nos deux caméras, équipées de batteries, sur les plaques de plexi du réseau de train. La communication avec le Pi se fait en Wi-Fi avec un distance maximum d'une quinzaine de mètres. Au-delà les deconnexions sont trop fréquentes (surtout dans un environnement pertubé par d'autres réseaux).
 
Pour corriger le problème reconnexion automatique, nous avons mis au point le script suivant:

#!/bin/bash
#
# Edgard Zander - 2022/09
#

/usr/bin/omxplayer --hdmiclocksync --live --win '0 0 320 250' --subtitles LPT "http://192.168.4.5:81"
ps cax | grep omxplayer.bin > /dev/null
if [$? -eq 0]; then
exit
else
exec /usr/bin/omxplayer --hdmiclocksync --live --win '0 0 320 250' --subtitles LPT "http://192.168.4.5:81"
fi

#/usr/bin/omxplayer --hdmiclocksync --live --win '320 0 640 250' --subtitles LPT "http://192.168.4.4:81" &

Une fois lancé, l'affichage est de bonne qualité et on peut voir les trains circuler. L'objectif est attient!

Affichage des deux flux sur écran
 
Tant que l'on reste a proximité, l'affichage est régulier et il n'y a pas de coupure, ni image figée. Il est tout à fait envisgeable de lancer le script automatiquement au démarrage du Pi et de se passer ainsi du PC de commande.

A ce stade, nous avons provisoirement stoppé ce petit projet car les prix des Pi se sont envolés et nous attendons que ceux-ci reviennent à la normale pour reprendre et automatiser et fibaliser ce système de vidéosurveillance des trains.

A suivre.

Liens utiles :


Les scripts utiles ici  et ici