Transformez votre Pi Moonlight en 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 est 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 étaient insuffisantes. Des logiciels sympas comme Motion étaient alors disponibles, mais je n’étais pas à la hauteur de la tâche de faire tourner tout un système autour de lui. Cela dit, ce n’est pas impossible, maintenant, n’est-ce pas ?
Cinq ans plus tard, j’ai rejoint un hackerspace, et j’ai appris plus tard que ses caméras de vidéosurveillance, bien que bien visibles, avaient cessé de fonctionner depuis 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. Avoir des caméras de vidéosurveillance fonctionnelles dans un hackerspace est inestimable – non seulement un système fonctionnel résout le problème “qui a fait un gâchis que personne n’admet”, mais au fil des ans, il nous a également aidés à trouver une clé de verrouillage de sécurité sur un découpeur laser qui a été supprimée lors de la réorganisation, que leur emplacement temporaire a été immédiatement oublié.
Pouvoir utiliser MotionEye pour créer rapidement des caméras de sécurité a été pratique – quand j’en ai besoin, je peux créer une simple caméra pour suivre mon vélo, vérifier que mes voisins n’oublient pas de nourrir mes animaux comme promis pendant mon absence. , et dans une certaine situation, je peux même assurer ma sécurité et celle des autres avec son aide. Comment construire un réseau de caméras utile qui enregistre toujours votre maison, votre espace de piratage ou toute autre propriété ? Voici un progiciel simple et puissant que je veux vous montrer aujourd’hui, et il s’appelle MotionEye.
Aide => À propos
Motion est un démon puissant pour fournir des flux vidéo à Linux à la manière d’une caméra de sécurité – il fait des choses comme détecter le mouvement et enregistrer des clips vidéo quand cela se produit. Cependant, il s’agit d’un démon en ligne de commande et il n’a pas d’interface graphique suffisamment 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, une multitude de fonctionnalités de qualité de vie.
MotionEye est relativement facile à installer – il n’a besoin que de quelques packages sur votre système d’exploitation et de certaines 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 a à offrir, accessible avec votre système d’exploitation de bureau et votre téléphone. Il existe également des images Docker si vous aimez le contenu de votre logiciel ! À 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 non graphiques – parfois, certaines parties de votre image changent tout le temps, mais vous ne considérez pas ces parties comme importantes à des fins de détection de mouvement. MotionEye vous permet de configurer rapidement un masque de mouvement via une interface Web, que le démon Motion utilise pour filtrer les événements de mouvement à leur source, avec le moins de surcharge possible. Il vous offre également des options telles que l’encodage matériel, quelque chose que vous pourriez manquer dans les manuels.
Pour ceux d’entre nous qui ne souhaitent pas configurer une sorte de stockage local ou qui souhaitent simplement envoyer des notifications de mouvement à leur téléphone, MotionEye peut utiliser un certain nombre de méthodes de téléchargement de photos et de vidéos qui dépendent des services en ligne – e-mail, Google Drive , Dropbox et autres. Il vous permet également de configurer des crochets de ligne de commande au début et à la fin de l’événement de mouvement, que vous pouvez utiliser pour diverses tâches d’automatisation – j’ai personnellement utilisé ces crochets pour représenter graphiquement l’événement de mouvement à l’aide du matplotlib
comme moyen d’afficher les données de fréquentation du hackerspace à des fins d’automatisation.
Il y a des limites, bien sûr. Par exemple, comme Motion sur lequel il est basé, MotionEye n’a pas de support audio – bien que vous puissiez utiliser le crochet MotionEye avec un script d’enregistrement audio externe pour épisser le son dans des 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 avec le piratage CSS dans le passé. Cependant, c’est toujours un package très 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 peut trouver, y compris la caméra Raspberry Pi connectée à CSI s’il en trouve une. 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 désactivez l’enregistrement local, il n’écrira jamais rien sauf les modifications des paramètres sur 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 très facile pour les caméras à usage unique, peut-être que son seul problème est qu’il n’a pas été mis à jour pour des cartes comme Zero W 2, mais il existe des versions personnalisées par des 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 dans le cas d’une installation autonome de MotionEye, et dans le cas de MotionEyeOS, ce sera une partition créée automatiquement qui capture tout l’espace non occupé par le noyau MotionEyeOS . Étant donné que vous vous en sortirez probablement avec une carte SD branchée sur votre Raspberry Pi, il est 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 sera être meilleur. Ce qui m’amène au point suivant!
Prêt pour le DVR, aussi
MotionEye n’est pas seulement pour les appareils avec une caméra – vous pouvez construire un DVR avec. Pour cela, installez MotionEye sur un ordinateur raisonnablement puissant avec plusieurs gros disques durs peu coûteux, puis faites-le capturer la vidéo à partir de caméras réseau, qu’il s’agisse de caméras IP basées sur MotionEye ou chinoises connectées à un sous-réseau sans Internet. Avec une telle configuration, vous n’avez pas besoin de faire de détection de mouvement ou de stockage dans 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 de fichiers vidéo en cas d’alimentation. est coupé au milieu d’une lettre.
Dans le hackerspace susmentionné, j’avais un tas de caméras connectées à Raspberry Pi dans différents coins, certaines alimentées par MotionEyeOS et d’autres avec MotionEye ajouté avec un logiciel déjà en cours d’exécution pour activer diverses fonctionnalités de hackerspace. Notre plate-forme DVR est une carte mère industrielle DN2800MT avec deux disques durs SATA en RAID1 logiciel – je n’ai pas d’encodage matériel, car les pilotes iGPU du N2800 sont inférieurs à Linux, mais le processeur est 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 apprécient, mais cela n’attire pas suffisamment l’attention des développeurs en ce moment, car le développeur principal a démissionné il y a deux ans. En raison de la valeur qu’elle apporte, la communauté reste dynamique et utile, mais la base de code pourrait utiliser certaines personnes désireuses de la revoir. Le code est assez maintenable, mais il y a des tonnes de TODO à gérer – seuls quelques-uns que j’ai remarqués résolvent les problèmes du port Python 3, intègrent le nouveau micrologiciel Raspberry Pi dans les versions, refont l’intégration de Buildroot, corrigent Intégration de Google Drive et résolution de 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é à utiliser une caméra sans hésitation ou avec certains objets dans son champ de vision. Cependant, un autocollant avec “enregistrement vidéo en cours” peut suffire pour l’endroit où vous vous trouvez. On pourrait également soutenir que, si l’appareil photo est en votre possession, il a le droit d’être là et d’exécuter toutes les fonctions d’un appareil photo. D’un autre côté, il n’est pas mal qu’un invité soit intimidé par une caméra dans votre salon – alors 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 pouvez construire ? Après tout, nous avons même vu des décorations d’Halloween alimentées par MotionEye ! Ensuite, je veux vous en dire plus sur la sécurisation de votre réseau de caméras alimenté par Linux, en particulier, en utilisant des tunnels Wireguard point à point sur votre LAN – garantissant que même vos caméras connectées au WiFi ne seront pas en train d’espionner. .