Projet : Video surveillance
Modérateur : Francois
Re: Projet : Video surveillance
Hello !
Bon ça avance bien tout ça, le système est en place et fonctionne
Mon seul soucis vient de la détection automatique de présence sur le Wifi, j'ai des faux positifs (ou négatifs ^^) régulièrement. Je pense qu'il va falloir que je rajoute un "buffer" de présence.
Donc en l'état :
1. Le système se lance dès que l'on sort de la maison (basé sur un ping/arp des devices connectées au wifi)
-> Au démarrage je reçois un email et les leds s'allument
2. Il s'éteint au retour (Idem)
-> Je reçois un mail et les leds s'éteignent
3. Il peut s'éteindre sur pression d'un bouton physique
-> Cela coupe la détection de présence et laisse le système de détection de présence afin de pouvoir faire l'étape 4.
4. Si l'on quitte la maison avec le système sur off, on reçoit un email nous demandant si on veut l'activer ou le laisser éteint.
-> Pour le moment l'activation se fait à travers une appli endroit qui se connecte en SSH pour lancer un script (J'ai envie d'améliorer cette partie)
5. Une deuxièmre pression sur le bouton, si le système est "off", le remet en automatique. Une led indique dans quel état se trouve le système en tout temps
Donc au final j'utilise 2 leds, une pour l'état du système (automatique ou "off") et une pour savoir si la détection de mouvement est en marche.
Et pour finir en cas de détection de mouvement, les images sont copiées sur un compte gdrive, avec email à chaque détection.
Je viens de commander la camera NoIR avec un spot IR parce que la qualité est franchement mauvaise (quand on est en dehors de l'appartement, l'entrée est sombre comme pas possible).
Donc voilà je copierai les fichiers ici une fois que j'aurai tout fignolé, c'est pas du grand art niveau code mais si ca peut servir à quelqu'un autant y mettre à dispo ^^
Bon ça avance bien tout ça, le système est en place et fonctionne
Mon seul soucis vient de la détection automatique de présence sur le Wifi, j'ai des faux positifs (ou négatifs ^^) régulièrement. Je pense qu'il va falloir que je rajoute un "buffer" de présence.
Donc en l'état :
1. Le système se lance dès que l'on sort de la maison (basé sur un ping/arp des devices connectées au wifi)
-> Au démarrage je reçois un email et les leds s'allument
2. Il s'éteint au retour (Idem)
-> Je reçois un mail et les leds s'éteignent
3. Il peut s'éteindre sur pression d'un bouton physique
-> Cela coupe la détection de présence et laisse le système de détection de présence afin de pouvoir faire l'étape 4.
4. Si l'on quitte la maison avec le système sur off, on reçoit un email nous demandant si on veut l'activer ou le laisser éteint.
-> Pour le moment l'activation se fait à travers une appli endroit qui se connecte en SSH pour lancer un script (J'ai envie d'améliorer cette partie)
5. Une deuxièmre pression sur le bouton, si le système est "off", le remet en automatique. Une led indique dans quel état se trouve le système en tout temps
Donc au final j'utilise 2 leds, une pour l'état du système (automatique ou "off") et une pour savoir si la détection de mouvement est en marche.
Et pour finir en cas de détection de mouvement, les images sont copiées sur un compte gdrive, avec email à chaque détection.
Je viens de commander la camera NoIR avec un spot IR parce que la qualité est franchement mauvaise (quand on est en dehors de l'appartement, l'entrée est sombre comme pas possible).
Donc voilà je copierai les fichiers ici une fois que j'aurai tout fignolé, c'est pas du grand art niveau code mais si ca peut servir à quelqu'un autant y mettre à dispo ^^
Re: Projet : Video surveillance
J'ai abandonné les leds/boutons, au final personne ne s'en servait et c'est plus esthétique sans ^^
Je reviens dans le coin pour poster le résultat. Cela marche plutôt bien, maintenant je suis entrain de faire la 2ème partie du projet, à savoir allumer les lampes etc en cas de détéction (J'attend mes modules RF 433 et mes prises pour jouer avec)
Alors au final voilà ce que fait mon code :
Il détecte la présence d'un membre de la famille en se basant sur la présence ou non de son smartphone sur le wifi familial. Le code est lancé dans le cron, toute les 2 mins. J'ai du rajouté une étape car j'avais des faux positifs, donc il faut maintenant deux itérations du code pour que un changement de l'activation/désactivation intervienne.
Je gère au niveau de ce code l'envoi d'email pour l'activation/désactivation de motion, et c'est au niveau de motion que j'envoi les emails lors de détection de mouvement (avec upload vers un Gdrive des images/films).
Je me doute que c'est pas le code le plus propre de la terre, j'aurai pu simplifier les choses mais au final il me convient bien ^^, le log généré est clair et me permet de surveiller tout ça tranquillement. En espérant que cela puisse être utile à quelqu'un
Voici le log de sortie, en l’occurrence un changement d'état :
Voici le code bash, il faut lui fournir en paramètre les IP (que j'ai rendu fixes pour les équipements qui m'intéressait au niveau du routeur):
Je reviens dans le coin pour poster le résultat. Cela marche plutôt bien, maintenant je suis entrain de faire la 2ème partie du projet, à savoir allumer les lampes etc en cas de détéction (J'attend mes modules RF 433 et mes prises pour jouer avec)
Alors au final voilà ce que fait mon code :
Il détecte la présence d'un membre de la famille en se basant sur la présence ou non de son smartphone sur le wifi familial. Le code est lancé dans le cron, toute les 2 mins. J'ai du rajouté une étape car j'avais des faux positifs, donc il faut maintenant deux itérations du code pour que un changement de l'activation/désactivation intervienne.
Je gère au niveau de ce code l'envoi d'email pour l'activation/désactivation de motion, et c'est au niveau de motion que j'envoi les emails lors de détection de mouvement (avec upload vers un Gdrive des images/films).
Je me doute que c'est pas le code le plus propre de la terre, j'aurai pu simplifier les choses mais au final il me convient bien ^^, le log généré est clair et me permet de surveiller tout ça tranquillement. En espérant que cela puisse être utile à quelqu'un
Voici le log de sortie, en l’occurrence un changement d'état :
Code : Tout sélectionner
----------------------------------
- 2016-11-04 10:54:01 -
----------------------------------
2016-11-04 10:54:02 Equipement inactif : X Natel (192.168.1.114)
2016-11-04 10:54:03 Equipement inactif : TV (192.168.1.102)
2016-11-04 10:54:04 Equipement inactif : XX Natel (192.168.1.101)
2016-11-04 10:54:04 Motion : ON
2016-11-04 10:54:04 Présence : Il y a 0 équipement(s) en fonctionnement
2016-11-04 10:54:04 Etat : Identique
2016-11-04 10:54:04 Action : Rien
----------------------------------
----------------------------------
- 2016-11-04 10:56:01 -
----------------------------------
2016-11-04 10:56:01 Equipement actif : X Natel (192.168.1.114)
2016-11-04 10:56:02 Equipement inactif : TV (192.168.1.102)
2016-11-04 10:56:03 Equipement inactif : XX Natel (192.168.1.101)
2016-11-04 10:56:03 Motion : ON
2016-11-04 10:56:03 Présence : Il y a 1 équipement(s) en fonctionnement
2016-11-04 10:56:04 Etat : En cours de changement
2016-11-04 10:56:04 Action : Rien
----------------------------------
----------------------------------
- 2016-11-04 10:58:01 -
----------------------------------
2016-11-04 10:58:01 Equipement actif : X Natel (192.168.1.114)
2016-11-04 10:58:02 Equipement inactif : TV (192.168.1.102)
2016-11-04 10:58:03 Equipement inactif : XX Natel (192.168.1.101)
2016-11-04 10:58:03 Motion : ON
2016-11-04 10:58:03 Présence : Il y a 1 équipement(s) en fonctionnement
2016-11-04 10:58:03 Etat : A changer
2016-11-04 10:58:09 Action : Stopper la surveillance
----------------------------------
Voici le code bash, il faut lui fournir en paramètre les IP (que j'ai rendu fixes pour les équipements qui m'intéressait au niveau du routeur):
Code : Tout sélectionner
#!/bin/bash
athome="0"
echo "----------------------------------"
echo "- " $(date +"%Y-%m-%d %H:%M:%S") " -"
echo "----------------------------------"
howmanyathome=0
#Ping des adresses fournies en entrée
for var in "$@"
do
case $var in
"192.168.1.114") name="X Natel";;
"192.168.1.102") name="TV";;
"192.168.1.101") name="XX Natel";;
*) name="unknown"
esac
ping -q -W1 -c1 $var > /dev/null
if [ $? -eq 0 ]
then
athome="1"
echo $(date +"%Y-%m-%d %H:%M:%S") "Equipement actif : $name ($var)"
howmanyathome=$((howmanyathome+1))
#break
else
echo $(date +"%Y-%m-%d %H:%M:%S") "Equipement inactif : $name ($var)"
fi
done
#Detection si le service est lancé
service="motion"
isMotionON=0
isMotionON=$(sudo service motion status | grep -o running | wc -l)
if [ $isMotionON -gt 0 ]
then
echo $(date +"%Y-%m-%d %H:%M:%S") "Motion : ON"
else
echo $(date +"%Y-%m-%d %H:%M:%S") "Motion : OFF"
fi
echo $(date +"%Y-%m-%d %H:%M:%S") "Présence : Il y a $howmanyathome équipment(s) en fonctionnement"
ToDo="NOTHING"
if [ "$athome" = "0" ]
then
if [ $isMotionON -gt 0 ]
then
#Personne et motion allumé -> on ne fait rien
#Enlève tout les fichiers flag permettant d'éviter les faux positifs
ToDo="NOTHING"
$(sudo rm -f /home/gpapig/automation/cam/flag/*)
else
#personne et motion pas allumé -> on lance
#créer un fichier flag
filename=$(date +"%Y%m%d%H%M%S")"ON"
$(touch /home/gpapig/automation/cam/flag/$filename)
ToDo="ON"
fi
else
if [ $isMotionON -gt 0 ]
then
#quelqu'un et motion allumé -> On éteint
#créer un fichier flag
ToDo="OFF"
filename=$(date +"%Y%m%d%H%M%S")"OFF"
$(touch /home/gpapig/automation/cam/flag/$filename)
else
#quelqu'un et motion éteint -> On ne fait rien
#enlève tout les fichiers flags
ToDo="NOTHING"
$(sudo rm -f /home/gpapig/automation/cam/flag/*)
fi
fi
Flags=$(ls /home/gpapig/automation/cam/flag | wc -l)
case "$Flags" in
0) echo $(date +"%Y-%m-%d %H:%M:%S") "Etat : Identique";;
1) echo $(date +"%Y-%m-%d %H:%M:%S") "Etat : En cours de changement";;
2) echo $(date +"%Y-%m-%d %H:%M:%S") "Etat : A changer";;
*) echo $(date +"%Y-%m-%d %H:%M:%S") "Etat : Inconnu";;
esac
if [ $Flags -ge 2 ]
then
case "$ToDo" in
"NOTHING")
echo $(date +"%Y-%m-%d %H:%M:%S") "Action : Rien"
;;
"ON")
sudo service motion start
/usr/sbin/ssmtp XXX@gmail.com < /home/gpapig/automation/mail_template/email_motion_on
echo $(date +"%Y-%m-%d %H:%M:%S") "Action : Activer la surveillance"
$(sudo rm -f /home/gpapig/automation/cam/flag/*)
;;
"OFF")
sudo service motion stop
/usr/sbin/ssmtp XXX@gmail.com < /home/gpapig/automation/mail_template/email_motion_off
echo $(date +"%Y-%m-%d %H:%M:%S") "Action : Stopper la surveillance"
$(sudo rm -f /home/gpapig/automation/cam/flag/*)
;;
*)
echo "Cas inconnu"
esac
else
echo $(date +"%Y-%m-%d %H:%M:%S") "Action : Rien"
fi
echo "----------------------------------"
- marco123
- Raspinaute
- Messages : 438
- Enregistré le : sam. 30 janv. 2016 07:59
- Localisation : Val d'Oise
Re: Projet : Video surveillance
peut être intéressant ( pour toi ) de donner le nom de la personne qui est passée ?
2016-11-04 10:58:03 Présence : Il y a 1 équipement(s) en fonctionnement
Untel ( unetelle ) est rentré(e) ce qui serait parlant ( notamment si tu as comme moi une môme de 16/17 ans )
ps: ton code est propre ... mais mal documenté donc, difficile a modifier / reprendre
2016-11-04 10:58:03 Présence : Il y a 1 équipement(s) en fonctionnement
Untel ( unetelle ) est rentré(e) ce qui serait parlant ( notamment si tu as comme moi une môme de 16/17 ans )
ps: ton code est propre ... mais mal documenté donc, difficile a modifier / reprendre
Re: Projet : Video surveillance
Merci de ton retour ca fait toujours plaisir.
Je vais commenter tout ça histoire que cela puisse servir ^^
Concernant ta remarque sur le Qui, c'est le cas dans la liste des équipements actifs/inactifs, en français Suisse, Natel veut dire téléphone portable/Smartphone, donc je sais qui est/était présent ^^
Je vais commenter tout ça histoire que cela puisse servir ^^
Concernant ta remarque sur le Qui, c'est le cas dans la liste des équipements actifs/inactifs, en français Suisse, Natel veut dire téléphone portable/Smartphone, donc je sais qui est/était présent ^^
Re: Projet : Video surveillance
Bon je viens de franchir une nouvelle étape dans le projet, j'ai craqué pour kit Philips HUE.
Au delà de l'aspect déco/visuel qui est très sympa (possibilité de varier les couleurs, l'intensité etc), le gros plus de tout ça c'est que Phillips propose des API pour pouvoir faire mumuse avec les réglages des lampes.
Je suis donc entrain de coder en python (Il existe pas mal de librairie dans quasiment tout les langages, issues de l'API) deux usages.
Le premier est un simulateur de présence. Si il n'y a personne à la maison et qu'il fait nuit (pour le moment basé sur les horaires, j'attend mon light sensor) j'allume les lumières à plusieurs endroits de la maison.
Le 2ème étant d'allumer le plafonnier de l'entrée en rouge clignotant histoire de faire fuir les visiteurs importuns si il y a une détection de mouvement dans l'entrée.
Je tenterai de faire un petit mode d'emploi pour les curieux une fois que tout sera fini, mais pour le moment je "galère" à coder en python à travers le SSH sur mes PI, faudrait que je trouve un IDE (ou au moins un colorateur syntaxique avec auto-completion) qui fonctionne à travers SSH. J'ai tenté de configurer VIM mais je n'arrive pas à m'y faire .
Au delà de l'aspect déco/visuel qui est très sympa (possibilité de varier les couleurs, l'intensité etc), le gros plus de tout ça c'est que Phillips propose des API pour pouvoir faire mumuse avec les réglages des lampes.
Je suis donc entrain de coder en python (Il existe pas mal de librairie dans quasiment tout les langages, issues de l'API) deux usages.
Le premier est un simulateur de présence. Si il n'y a personne à la maison et qu'il fait nuit (pour le moment basé sur les horaires, j'attend mon light sensor) j'allume les lumières à plusieurs endroits de la maison.
Le 2ème étant d'allumer le plafonnier de l'entrée en rouge clignotant histoire de faire fuir les visiteurs importuns si il y a une détection de mouvement dans l'entrée.
Je tenterai de faire un petit mode d'emploi pour les curieux une fois que tout sera fini, mais pour le moment je "galère" à coder en python à travers le SSH sur mes PI, faudrait que je trouve un IDE (ou au moins un colorateur syntaxique avec auto-completion) qui fonctionne à travers SSH. J'ai tenté de configurer VIM mais je n'arrive pas à m'y faire .
Re: Projet : Video surveillance
Bonjour Gpapig !
Joli projet, ta vidéos surveillance ! J'espère que tu es parvenu à tout mettre au point maintenant !
Moi je suis intéressé par ta phrase :"A coté de ça il y a aura 2-3 leds pour connaitre l'état du système lorsque l'on passe devant. Une led servant pour savoir si le système est en mode automatique ou manuel et une led indiquant si il est actuellement en fonction ou non."
Est ce que tu pourrais me donner des indications pour effectuer ce genre de test et traduire le résultat de façon lumineuse ?...
Je cherche personnellement à allumer une LED quand ma Raspberry Pi est connectée à un réseau (d'une part) et allumer une autre LED quand elle diffuse son propre Wifi (c'est aussi un hotspot). Je pourrais ainsi vérifier rapidement que la RPi diffuse bien son ssid et est connectée au réseau local sans passer par ssh....
Je ne trouve nul part d'exemple de script permettant de vérifier une condition et d'allumer une LED (ou non) en fonction du résultat du test....
C'est un peu hors sujet sur ce post mais ta phrase m'a interpellée....
Bonnes fêtes de fin d'année à tous !
Joli projet, ta vidéos surveillance ! J'espère que tu es parvenu à tout mettre au point maintenant !
Moi je suis intéressé par ta phrase :"A coté de ça il y a aura 2-3 leds pour connaitre l'état du système lorsque l'on passe devant. Une led servant pour savoir si le système est en mode automatique ou manuel et une led indiquant si il est actuellement en fonction ou non."
Est ce que tu pourrais me donner des indications pour effectuer ce genre de test et traduire le résultat de façon lumineuse ?...
Je cherche personnellement à allumer une LED quand ma Raspberry Pi est connectée à un réseau (d'une part) et allumer une autre LED quand elle diffuse son propre Wifi (c'est aussi un hotspot). Je pourrais ainsi vérifier rapidement que la RPi diffuse bien son ssid et est connectée au réseau local sans passer par ssh....
Je ne trouve nul part d'exemple de script permettant de vérifier une condition et d'allumer une LED (ou non) en fonction du résultat du test....
C'est un peu hors sujet sur ce post mais ta phrase m'a interpellée....
Bonnes fêtes de fin d'année à tous !
Re: Projet : Video surveillance
Hello Nico,
Merci
Il te faut un petit bout de code du genre (désolé il est fait de tête il ne sera certainement pas valable, je n'ai pas mes PI d'accessible ce matin) :
Merci
Il te faut un petit bout de code du genre (désolé il est fait de tête il ne sera certainement pas valable, je n'ai pas mes PI d'accessible ce matin) :
Code : Tout sélectionner
#!/bin/bash
isWifiON=$(iwconfig wlan0 | grep -o MON_SSID | wc -l) #remplace MON_SSID par le nom de ton wifi, si tu veux tester la connexion filiaire, c'est ifconfig eth0)
if [ $isWifiON ]
then
echo "1" > /sys/class/gpio/gpioXX/value #ceci va mettre à 1 le gpio XX (a remplacer par celui correspondant à ta led)
else
echo "0" > /sys/class/gpio/gpioXX/value # Ici tu y mets 0
fi