Faites de votre Pi Moonlight une caméra de sécurité

Il y a dix ans, j’apprenais Linux en construisant des projets pour mes propres besoins. L’un des projets était un système de vidéosurveillance DIY basé sur une boîte Linux – en particulier, un package tout-en-un convivial pour quelqu’un prêt à payer pour cela. Je suis tombé sur Zoneminder, et ceux qui sont au courant peuvent déjà dire ce qui s’est passé – je vais le dire de cette façon, j’ai passé des jours à essayer de le faire fonctionner, et mes compétences Linux à l’époque n’étaient pas suffisantes. Des logiciels sympas comme Motion étaient disponibles à l’époque, mais je n’étais pas à la hauteur pour faire tourner tout un système autour de lui. Cela dit, ce ne serait pas impossible, n’est-ce pas ?

Cinq ans plus tard, j’ai rejoint un hackerspace et j’ai finalement découvert que ses caméras de vidéosurveillance, bien qu’étant visuellement assez proéminentes, avaient cessé de fonctionner il y a longtemps. À ce moment-là, j’étais en mesure de faire quelque chose à ce sujet et j’ai construit tout un réseau de vidéosurveillance autour d’un progiciel appelé MotionEye. Il y a beaucoup de valeur à avoir des caméras CCTV fonctionnelles dans un hackerspace – non seulement un système fonctionnel résout le problème « qui a fait le désordre que personne n’admet », mais au fil des ans, il nous a également aidés avec des choses comme la localisation des clés de verrouillage de sécurité à un lasercutter qui ont été retirés lors d’une réorganisation, avec leur emplacement temporaire rapidement oublié.

Pouvoir utiliser MotionEye pour créer rapidement des caméras de sécurité est devenu très pratique très vite – quand j’en avais besoin, je pouvais fabriquer une simple caméra pour surveiller mon vélo, vérifier que mes voisins n’avaient pas oublié de nourrir mes animaux comme promis pendant mon absence , et dans une certaine situation, je pourrais même assurer ma sécurité physique et celle des autres avec son aide. Comment créez-vous un réseau de caméras utile qui enregistre en permanence dans votre maison, votre hackerspace ou toute autre propriété ? Voici un progiciel simple et puissant que j’aimerais vous montrer aujourd’hui, et il s’appelle MotionEye.

Aide => À propos

Motion est un démon puissant pour transmettre des flux vidéo sur Linux à la manière d’une caméra de sécurité – il fait des choses comme détecter les mouvements et enregistrer des clips vidéo lorsqu’ils se produisent. Cependant, c’est un démon en ligne de commande, et il n’a pas d’interface graphique assez confortable pour un travail d’image de caméra convivial. MotionEye est un package Python qui s’articule autour de Motion, vous fournissant une interface Web pour gérer vos caméras, mais plus important encore, un trésor de fonctionnalités de qualité de vie.

MotionEye est relativement facile à installer – il ne nécessite que quelques packages sur votre système d’exploitation et quelques dépendances Python, et vous pouvez le configurer pour qu’il démarre automatiquement en utilisant des éléments tels que systemd. Ensuite, pointez votre navigateur sur son interface Web et vous verrez tout ce que MotionEye propose, accessible à l’aide de votre système d’exploitation de bureau et de votre téléphone. Il y a aussi des images Docker si vous aimez que votre logiciel soit contenu ! À partir de là, vous pouvez commencer à explorer les fonctionnalités.

Par exemple, la détection de mouvement peut être ennuyeuse à configurer lorsqu’il s’agit d’outils sans interface graphique – il y a parfois des zones de votre image qui changent tout le temps, mais vous ne considérez pas ces zones comme significatives à des fins de détection de mouvement. MotionEye vous permet de configurer rapidement un masque de mouvement via l’interface Web, que le démon Motion utilise ensuite pour filtrer les événements de mouvement à leur source, avec le moins de surcharge possible. Il vous présente également des options telles que l’encodage matériel, quelque chose que vous pourriez autrement manquer parmi les manuels.

Pour ceux d’entre nous qui ne souhaitent pas configurer une sorte de stockage local ou qui souhaitent simplement que les notifications de mouvement soient transmises à leur téléphone, MotionEye peut utiliser une myriade de moyens de téléchargement d’images et de vidéos qui dépendent des services en ligne – e-mail, Google Drive , Dropbox et ainsi de suite. Il vous permet également de configurer des crochets de ligne de commande sur le début et la fin des événements de mouvement, que vous pouvez ensuite utiliser pour diverses tâches d’automatisation – j’ai personnellement utilisé ces crochets pour représenter graphiquement les événements de mouvement à l’aide de matplotlibcomme moyen de visualiser les données de fréquentation du hackerspace à des fins d’automatisation.

Il y a des limites, bien sûr. Par exemple, tout comme Motion sur lequel il est basé, MotionEye n’a pas de support audio – bien que vous puissiez utiliser les crochets MotionEye avec un script d’enregistrement audio externe pour épisser le son dans les clips enregistrés. Si vous avez des caméras avec des rapports d’aspect différents, MotionEye ne les affichera pas toujours dans une grille nette, bien que j’aie résolu cela grâce au piratage CSS dans le passé. Cependant, c’est toujours un package puissant en termes de ce que vous pouvez faire.

MotionEyeOS – Expérience prête à l’emploi

Vous n’avez pas non plus besoin d’avoir une distribution préinstallée. MotionEyeOS est une petite image de carte SD avec MotionEye et tout ce dont vous avez besoin pour le faire fonctionner, construit avec l’aide de Buildroot. Flashez simplement l’image sur une carte MicroSD, fournissez des informations d’identification sans fil ou branchez un câble Ethernet. Après avoir configuré MotionEyeOS, il captera automatiquement toutes les caméras qu’il trouve, y compris la caméra Raspberry Pi connectée à CSI si une est trouvée. Ce n’est pas limité à Raspberry Pi, pour être clair – il existe également des versions pour les cartes Odroid, NanoPi, BananaPi, OrangePi et Pine46.

MotionEyeOS utilise par défaut un stockage en lecture seule pour le système, et j’ai trouvé qu’il était incroyablement résistant aux pannes de courant, car bien sûr, si vous n’activez pas l’enregistrement local, il n’écrira jamais rien sauf les changements de paramètres à la carte SD. Étant donné que l’image est si petite, j’ai utilisé des cartes restantes de 512 Mo pour les cartes que j’ai configurées. C’est tellement pratique pour les caméras à usage unique, peut-être que son seul problème est qu’il n’a pas encore été mis à jour pour des cartes comme Zero W 2, mais il existe des versions personnalisées par les membres de la communauté MotionEye !

Dans la configuration par défaut, MotionEye enregistrera sur votre périphérique de stockage principal disponible – en utilisant votre système de fichiers racine en cas d’installation autonome de MotionEye, et en cas de MotionEyeOS, ce sera une partition créée automatiquement occupant tout l’espace non occupé par le noyau MotionEyeOS . Étant donné que vous l’exécuterez probablement à partir d’une carte SD branchée sur votre Raspberry Pi, il serait plus logique de connecter un disque dur ou un SSD USB à la place, et si vous configurez plusieurs caméras, un périphérique de stockage connecté au réseau serait encore mieux. Ce qui m’amène au point suivant!

Prêt pour le DVR, aussi

MotionEye n’est pas seulement destiné aux appareils équipés d’une caméra – vous pouvez créer un DVR avec. Pour cela, installez MotionEye sur un ordinateur raisonnablement puissant avec quelques gros disques durs bon marché, puis faites-le saisir la vidéo des caméras réseau, qu’il s’agisse de caméras basées sur MotionEye ou de caméras IP chinoises connectées à un sous-réseau sans Internet. Avec une telle configuration, vous n’avez pas à faire de détection de mouvement ou de stockage sur la caméra elle-même – ce qui vous permet d’utiliser des cartes Raspberry Pi bon marché, comme même le modèle B d’origine, et de petites cartes SD sans craindre la corruption des fichiers vidéo en cas d’alimentation. est coupé au milieu d’une écriture.

Dans le hackerspace susmentionné, j’ai eu un tas de caméras connectées à Raspberry Pi dans divers coins, certaines alimentées par MotionEyeOS et d’autres avec MotionEye ajoutées aux côtés du logiciel qui fonctionnait déjà dessus pour activer diverses fonctionnalités de hackerspace. Notre plate-forme DVR était une carte mère industrielle DN2800MT avec dessus et deux disques durs SATA en logiciel RAID1 – je n’avais pas d’encodage matériel, car les pilotes iGPU du N2800 étaient inférieurs à Linux, mais le processeur était assez bon pour fonctionner avec 8 caméras de différentes résolutions à la fois.

Vous n’avez pas non plus besoin d’utiliser un DVR séparé. Vous pouvez avoir des caméras MotionEye, puis configurer MotionEye en tant que visionneuse de caméra sans enregistrement sur un ordinateur, peut-être même votre ordinateur portable personnel, ce qui vous permet de visualiser et de configurer toutes les caméras à partir d’un seul endroit. De cette façon, vous obtenez un tableau de bord avec toutes les caméras et aucun matériel supplémentaire requis. Vous constaterez que MotionEye est flexible au-delà des scénarios dont je vous parle, mais c’est un bon aperçu de ce que vous pouvez faire.

Aidez, restez en sécurité, restez équipé

Maintenant, MotionEye est l’un de ces projets que beaucoup de gens chérissent, mais qui n’attire pas suffisamment l’attention des développeurs pour le moment, puisque le développeur principal a démissionné il y a deux ans. En raison de la valeur qu’elle apporte, la communauté reste vivante et utile, mais la base de code pourrait utiliser certaines personnes désireuses de s’y plonger. Le code est assez maintenable, mais il y a une myriade de TODO à gérer – seuls quelques-uns que j’ai remarqués travaillent à travers les défauts du port Python 3, intégrant le nouveau micrologiciel Raspberry Pi dans les versions, retravaillant l’intégration Buildroot, réparer l’intégration de Google Drive et passer en revue tous les petits problèmes qui se sont accumulés.

Vous avez peut-être déjà un cas d’utilisation en tête, mais n’oubliez pas de vérifier vos lois locales ! Il se peut que vous ne soyez pas autorisé à faire fonctionner une caméra bon gré mal gré, ou avec certaines choses dans son champ de vision. Cependant, un autocollant avec « l’enregistrement vidéo est en cours » peut suffire pour l’endroit où vous vous trouvez. On pourrait également affirmer que, si la caméra se trouve sur votre propriété, elle a le droit d’être là et d’exécuter toutes les fonctionnalités d’une caméra. D’un autre côté, il ne serait pas mal qu’un invité soit intimidé par une caméra dans votre salon – en tant que tel, adaptez-vous en conséquence.

Vous avez probablement une ou deux caméras Raspberry Pi de rechange, et maintenant vous savez ce que vous pouvez en faire. Qui sait ce que vous pourriez construire ? Après tout, nous avons même vu des décorations d’Halloween alimentées par MotionEye ! La prochaine fois, j’aimerais vous en dire plus sur la sécurisation de votre réseau de caméras sous Linux, en particulier, en utilisant des tunnels Wireguard point à point sur votre LAN – en veillant à ce que même vos caméras connectées au WiFi ne puissent pas être espionnées. .