Video surveillance avec motion et ssh

Salut

J’ai commencé à me faire un petit serveur de video surveillance.
La machine qui sera à terme une brouette ou un fit pc centralise quelques webcam (4 maxi) en usb ou ip.
Motion s’occupe du boulot de gardien : il pose les images avec mouvement dans un répertoire utilisateur et n’est pas accessible de l’extérieur.

Jusque là config très classique.
Là ou je ne suis pas super content c’est sur la suite.
Etant donné qu’en cas de cambriolage le serveur peut se faire embarquer il convient d’une part de le planquer, d’autre part de ne pas garder les images sur le site à surveiller.
J’ai donc utilisé la commande dnotify qui lance un rsync par ssh sur le répertoire cible de motion dès que le contenu du même répertoire est modifié.
Du coup je reçois chez moi les images contenant des mouvements.

Avantages :
Les images contenant les cambrioleurs sont sauvegardées sur un site distant.
Administration simplissime sur site.

Inconvénients :
J’ai du assouplir un peu la protection de mon serveur ssh : ajout d’une chaine utilisateur acceptant tout ce qui vient du site distant (en ip fixe) et qui passe par le port 22.
Si la machine est volée, mes clés ssh sont compromises (c’est pas le pire si je me fais vider l’usine)
Si quelqu’un laisse un pc sur écran de veille toute la nuit ou si la caméra déconne toutes les 2 minutes et renvoie de la neige je me retrouve avec un flux à 100ko/s arrivant chez moi. Soit le matin 500Mo par caméra.
Gestion de la pile de commandes dnotify à la con car sinon plusieurs rsync en même temps.

Bref ma solution fonctionne mais elle est sûrement perfectible, surtout au niveau du rsync.

Je suis ouvert à vos idées.

a+

Cela n’est quand même pas très risqué, une seule machine autorisée, authentifiée par des clefs SSH, ça reste raisonnable :slightly_smiling:

ça c’est plus embêtant encore que 2G par jour, ça fait 60G sur 1 mois ce qui est peu. Et c’est quand même utile de savoir que ta caméra est débranchée. Plus ennyeux est la saturation de ta ligne. Tu peux sans doute faire un système de détection de ce type d’image (variation complètement aléatoire de tous les pixels des images), tu peux dans ce cas neutraliser la caméra, je chercherais de ce coté…

Que reproches-tu au rsync?

Je ne reproche rien de spécial au rsync, c’est un bon outil que j’utilise volontiers pour mes sauvegardes quotidiennes.
Ce qui m’embête c’est la logique du truc, résumée dans le script de lancement :

#!/bin/sh

motion &
dnotify --processes=1 --queue=1 -CD /home/toto/motion -e send-motion-alert &

et

#!/bin/bash
# envoi des alertes motion

rsync -rtav --delete --ignore-errors --force -e 'ssh '  /home/toto/motion germain@add.ip.distante:/chemin/distant/

Je ne trouve pas ça très élégant.
En effet une nouvelle connexion ssh est créée à chaque rsync (ca qui pourrit mes log à la maison mais c’est pas trop grave) alors que l’ensemble pourrait s’inscrire dans un flux crypté permanent.
Ce qui aurait peut-être des inconvénients quand la ligne saute.

A voir …

Ca c’est une bonne idée je vais regarder du côté de motion si je ne peux pas le faire facilement :smiley:

Pourquoi ne fais tu pas un tunnel ssh ou un VPN avec un montage démontage d’un répertoire en NFS ou SAMBA ou autre. L’intérêt est que si la connexion saute, tu auras les fichiers en local.

Sinon, je te conseille le FitPC surtout que dans le dernier on peut remplacer le disque dur et qu’il a 512M. De plus, il est très discret et ne nécessite pas de ventilation (bruyante donc repérable).

Je pense que je vais regarder du côté des tunnels ssh parce que je n’ai pas très envie de monter un VPN.

Ca me semble en effet la meilleure solution, surtout au regard de la consommation électrique. En plus je dois pouvoir le planquer dans le faux plafond.

Concernant mes images “à la c**” pleines de neige, elles étaient dues à une option de motion auto_brightness qui était activée. Maintenant tout va bien de ce côté là.

Je pense que je vais regarder du côté des tunnels ssh parce que je n’ai pas très envie de monter un VPN.[/quote]
Particulièrement simple en fait, presque plus simple:
http://forum.debian-fr.org/viewtopic.php?t=4376
Plus simple, y’a pas!

[quote]

Ca me semble en effet la meilleure solution, surtout au regard de la consommation électrique. En plus je dois pouvoir le planquer dans le faux plafond.
Concernant mes images “à la c**” pleines de neige, elles étaient dues à une option de motion auto_brightness qui était activée. Maintenant tout va bien de ce côté là.[/quote]
Quand les lumières étaient éteintes j’imagine… Hum, tu peux essayer de faire un traitement des images via «convert» et l’option despickle pour les améliorer. Car ici si le noir est trop important, tu ne verras rien.

J’ai fait des essais : pièce dans le noir, j’allume un briquet, motion le détecte.
Au passage j’ai fait un réglage de luminosité.
Comme ça si quelqu’un se ballade avec une lampe de poche ça me balancera un bon vieux morceau de Led Zep dans les oreilles à la maison.
Hé hé, encore une machine à faire crier ma femme !

Mais vu que ça me plait ton idée de retravailler les images, je vais l’implémenter à la maison sur les images reçues. Du coup j’aurai effectivement un visuel pas trop moche lors d’alertes.

Ah non, une reprise de Led Zep au Ukulélé STP !

no comment… après on va dire que j’ai l’esprit mal tourné, ce qui est loin d’être le cas, mais pas tout à fait.

bon allez si, l’autre est dans le tiroir de la commode?

:smt006

Tu me trouves un micro dans ta remorque ?

Je sais que je ne suis pas bien grand mais j’ai du mal à rentrer dans ce foutu tiroir.

Juste pour le fun la photo d’un module 2 caméras.
Admirez le passage en boîtier étanche 8)

En fait j’ai poussé un peu plus.
J’ai bricolé un programme qui récupère les images issues d’alerte motion sur la machine distante et je les traite avec opencv. J’utilise aussi dnotify pour être au courant de l’arrivée de nouveaux fichiers dans le repertoire.
J’applique une recherche de visage ou silouette humaine par haarclassifier. Ca me permet de filtrer le passage du chat devant la camera par exemple.
Après ça la loupiotte dans le noir ça va plutôt bien à faire.

Bon il me reste quand même un soucis. Même si du côté serveur motion la charge cpu est très raisonnable, côté client d’analyse je balance plusieurs haardetection par image. Sur un athlon 2500 je monte jusqu’à 3s de traitement par image. Et quand je remonte 1 image/seconde par camera…
Je vais voir ce que ça raconte avec un dual core en parallélisant le code puis je mettrai en place un conditionnement de la detection objet. Ca ne sert à rien de lancer la cavalerie si un gugus se ballade avec une bougie.