dimanche 12 décembre 2010

Détection de présence devant l'ordinateur

Comment faire pour savoir quand mamie est revenu dans la pièce pour l'informer d'un évènement?

En fait ce n'est pas très compliqué si google est ton amis! J'ai trouvé un programme qui permet de faire de la vidéo-surveillance avec la webcam... j'ai nommé motion !
Il suffit de vérifier quand le programme détecte du mouvement et lancer un script externe pour prévenir d'un évènement qui s'est produit en son absence!

Il suffit de lancer motion avec le fichier de configuration motion.conf
On peut créer plusieurs fichiers de configuration différent selon ce qu'on veut faire!

Voici les lignes que j'ai modifiées dans motion.conf :

Pour détecter plus rapidement le mouvement j'utilise 5fps :
# Maximum number of frames to be captured per second.
# Valid range: 2-100. Default: 100 (almost no limit).
framerate 5

je lance un script quand motion commence à détecter du mouvement :
# Command to be executed when an event starts. (default: none)
# An event starts at first motion detected after a period of no motion defined by gap
on_event_start /chemin/vers/mon/script.sh %f


Lorsque motion détecte du mouvement, il stocke les images dans /tmp/motion

Pour vérifier si quelqu'un est devant l'ordinateur, il suffit de faire tourner motion 15 secondes (sans la ligne qui lance le script externe) et vérifier si il y a des images stockées dans /tmp/motion = dossier non vide.
Si aucunes image n'est stocké dans motion, on coupe motion et on le relance avec la config qui va lancer le script de l'évènement en cas de mouvement.


- C'est pas clair ton truc !
- Ben si c'est clair, non?
- Non! Sans le texte du script on comprends rien. Pourquoi t'as pas mis le script de détection de mouvement?
- Ben parce-que là, c'est franchement plus compliqué ! 
- M'en fous, j'veux comprendre!
-Ok tu l'auras voulu!


EDIT :  Configuration précise de motion

Le problème avec les webcam de mauvaise qualité, c'est le" bruit" important créé par la webcam quand l'éclairage est faible ou si la pièce est grande. L'éclairage faible entraîne à la fois des artefacts (bruit) et une adaptation progressive de la luminosité et du contraste par la webcam qui est détecté comme des changement massifs de pixels et donc comme du mouvement. Par contre une fois mise au point effectuée, la détection du mouvement fonctionne très bien.
Il faudrait trouver une solution pour attendre que la webcam soit mise au point avant d'enclencher la détection de mouvement.

N'ayant pas réussit à le faire voici les paramètres optimisés :


v4l2_palette 6
framerate 2
threshold 200
switchfilter off   # le switchfilter ne fonctionnne pas
minimum_motion_frames 2
minimum_frame_time 0.5
despeckle EedDl # on peut jouer avec ça pour diminuer le bruit mais ça ne change rien sur la mise au point
lightswitch 100 # ça ne marche pas terrible (normalement ça ne tiens pas compte des changement de luminosité)
noise_level 32
noise_tune on
brightness 145
contrast 128
saturation 64
hue 0
output_motion on #permet de voir seulement le mouvement
output_normal on  #permet de voir l'image capturée en cas de mouvement

Pour plus d'info il y a une super notice avec la fonction des paramètres très détaillée sur le site de motion : ici.

En conclusion, je ne suis que moyennement satisfait de ce dispositif, mais dans 80% des cas ça marche bien.
Ordinateur pour grand-parents, ordinateur pour papy, ordinateur pour personnes âgée, linux pour mamie, linux pour papy, linux pour personne âgée, linux pour grands-parents.

Aucun commentaire:

Enregistrer un commentaire