Skip to content

mesure en temps réel le taux d'occupation d'une salle grace à un capteur infrarouge

License

Notifications You must be signed in to change notification settings

famibelle/OccupationSalle

Repository files navigation

Taux d'Occupation de Salle de réunion

Le boitier permet de mesurer en temps réel le taux d'occupation d'une salle grace à un capteur infrarouge PIR (ref: HC-SR501) et un Raspberry Pi. La portée du capteur est entre 3m et 7m (ajustable) ce qui le rend parfait pour des salles de réunion de taille moyenne.

Matériel:

Boitier

alt tag

Schéma de connection

alt tag

Boitier en situation dans le box

alt tag

Tableau de bord de suivi du taux de fréquentation de la salle

alt tag

Installation des packages

$ sudo apt-get install apache
$ sudo apt-get install apache2
$ sudo apt-get install php5
$ sudo apt-get install libapache2-mod-php5
$ sudo apt-get install sqlite php5-sqlite

Récupération des packages

$ git clone https://github.com/famibelle/OccupationSalle.git

Installation des fichiers du server Apache dans le répertoire /var/www

$ sudo chown www-data:www-data hourly.php
$ sudo cp hourly.php /var/www/
$ sudo chown www-data:www-data mouvements.php
$ sudo cp mouvements.php /var/www/
$ sudo chown www-data:www-data index.html
$ sudo cp index.html /var/www/
$ sudo chown www-data:www-data js/colorbrewer.min.js
$ sudo cp js/colorbrewer.min.js /var/www/js/

Création de la base de données

$ sqlite3 PIRlog.db

dans le shell de la base de données on crée la table qui va enregistrer les mouvements

BEGIN;
CREATE TABLE TxOccupationBox (timestamp DATETIME, motion INTEGER);
COMMIT;
.quit

La table a deux champs, le timestamp qui enregistre la date et le champs motion qui prend deux valeurs 0 ou 1 (0 = pas de mouvements, 1 = mouvement)

On copie la base de données dans le répertoire /var/www/ et on change son ownership pour www-data

$ sudo cp PIRlog.db /var/www/
$ sudo chown www-data:www-data /var/www/PIRlog.db

Installation du script qui va rajouter tout les 5 mn des 0 dans la base de données

$ sudo chmod +x dummylogPIR.py
$ sudo chown www-data:www-data dummylogPIR.py
$ sudo cp dummylogPIR.py /usr/lib/cgi-bin/
$ sudo crontab -e

Il faut rajouter la ligne suivante puis faire CTRL^X pour installer le CRON job

*/5 * * * * /usr/lib/cgi-bin/dummylogPIR.py

Installation du détecteur de mouvements en daemon(pour qu'il tourne en tache de fond)

l'inspiration vient de blog.scphillips.com

$ sudo cp modmypiPIR.py /usr/lib/cgi-bin/
$ chmod +x modmypiPIR
$ sudo cp modmypiPIR /etc/init.d/

On verifie que le daemon marche

$ sudo /etc/init.d/modmypiPIR start
$ sudo /etc/init.d/modmypiPIR status

On installe le daemon $ sudo update-rc.d modmypiPIR defaults

Utilisation

Pour suivre le taux d'utilisation d'une salle de réunion il suffit de poser le boitier dans la salle de réunion et ensuite faire pointer son navigateur vers

  • http://@IP_Raspberry/index.html pour avoir la vision cumulée ou vers
  • http://@IP_Raspberry/mouvements.phppour la vision chronologique

fichier & emplacements

/var/www/hourly.php
/var/www/mouvements.php
/var/www/index.html
/usr/lib/cgi-bin/dummylogPIR.py
/usr/lib/cgi-bin/modmypiPIR.py
/init.d/modmypiPIR

Remarques :

Mon Raspberry Pi a connu un SD card corrupt qui l'a rendu totalement inutilisable. Les commandes ci-dessous visent à prevenir ce problème (source ideaheap)

sudo nano /etc/fstab

on rajoute les lignes suivantes dans /etc/fstab

none	/var/run	tmpfs	size=1M, noatime	0	0
none	/var/log	tmpfs	size=1M, noatime	0	0

on désactive le swapping

$ sudo dphys-swapfile swapoff
$ sudo dphys-swapfile uninstall
$ sudo update-rc.d dphys-swapfile remove

Attention une fois les logs désactivés Apache2 ne marche plus.

note d'usage

Je suis passé sous Raspberry PI B+. Le board offre plus de port GPIO mais le boitier ne correspond plus. J'ai testé un niveau type de nappes droites, mais le problème est que le port OUT du HC-SR501 est entre le VCC et le GND alors que sur le Raspberry Pi B+ le IN est à coté du VCC et du GND. J'ai bien essayé de forcer une sortie du GPIO à l'état haut pour simuler un VCC mais le capteur se met à détecter des dizaine de mouvememts fantomes par seconde. Bref ça marche pas.

GPIO.setmode(GPIO.BCM)
PIR_PIN = 24
PIR_VCC = 23
GPIO.setup(PIR_PIN, GPIO.IN)
GPIO.setup(PIR_VCC, GPIO.OUT)           # met GPIO PIR_VCC comme VCC (emulation VCC)
GPIO.output(PIR_VCC, 1)

About

mesure en temps réel le taux d'occupation d'une salle grace à un capteur infrarouge

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published