Blog

Station de surveillance – Raspberry

par | 1 Oct 2017

Je vais vous donner toutes les étapes pour installer et configurer ce syteme sur votre raspberry.

Bien sûr je vous donnerai à la fin les fichiers 3d à imprimer !

Voilà une petite liste des composants que j’ai utilisés 

Les composants

1 x Raspberry PI
1 x Carte micro-sd 16go
1 x Carte relay
1 x Sonde de température
1 x Caméra pi
1 x PCB
1 x Du pla

Si ce n’est pas déjà fait, il va falloir que vous commenciez par installer raspbian sur votre raspberry. Il existe de nombreux tutos sur internet si vous ne l’avez jamais fait.

Les lignes de commandes que je vais vous donner vont devoir être rentrées depuis l’invité de commande de raspbian, libre à vous de le faire en SSH ou depuis le raspberry même.

Commencons sans plus attendre. La seul chose que vous allez devoir faire avant l’installation est de connecter la ou les sondes de températures au raspberry. Pas de panique je vous donne un shéma à suivre :

Si vous avez plusieurs sondes, il faut les connecter en parallèle.

Maintenant on peut commencer. Avant toutes modifications, on va mettre le raspberry à jour :

sudo apt-get update
sudo apt-get upgrade

Sonde(s) de température

Une fois fait on va installer les sondes :

sudo modprobe w1-gpio
sudo modprobe w1-therm
cd /sys/bus/w1/devices/
ls

Normalement un (ou plusieurs) élement(s) comme ceci “28-XXXXXXXXXXXX” apparait (Notez ce/ces nom(s) car on en aura besoin plus tard). Si ce n’est pas le cas il faut modifier deux fichiers. Accédez au premier fichier avec cette commande :

sudo nano /etc/modules

Une fois dedans, ajoutez ces deux lignes :

w1-therm
w1-gpio pullup=1

Ctrl + O puis Ctrl + X pour sauver et quitter. Ensuite rendez-vous dans le deuxième avec cette commande :

sudo nano /boot/config.txt

Et ajoutez la ligne suivante :

dtoverlay=w1-gpio

Sauvez, quittez (Ctrl + O puis Ctrl + X) et redémarrez le raspberry pi.

sudo reboot

Réinstallez la/les sonde(s), elle(s) devrait(ent) apparaître maintenant !

Apache

Installons maintenant notre serveur apache avec php5 :

sudo apt-get install apache2 php5 libapache2-mod-php5

EDIT : Cette commande ne fonctionne plus, utilisez plutôt :

sudo apt-get install apache2 -y
sudo apt-get install php libapache2-mod-php -y

Pour vérifier qu’ils se sont bien installés, mettez l’adresse ip du raspberry dans votre navigateur. Une page avec “it works” devrait apparaître !

Pour trouver l’adresse ipv4 de votre raspberry :

sudo ifconfig

WiringPi

Installons maintenant le programme qui va gérer les sorties du pi : WiringPi

cd /home/pi
git clone git://git.drogon.net/wiringPi
cd wiringPi
./build

Motion

Il ne nous reste plus qu’une chose à installer : Motion. Il va gérer la caméra.

Mais avant vous devez configurer le raspberry pour qu’il active la caméra. Si vous êtes connecté à votre raspberry en SSH, tapez la commande suivante et activez la caméra dans le menu.

sudo raspi-config

Si vous êtes sur votre raspberry, alors allez dans preference et activez la caméra.

Installons maintenant Motion :

sudo apt-get install motion
sudo modprobe bcm2835-v4l2
echo "bcm2835-v4l2" | sudo tee -a /etc/modules

Configurons maintenant motion. Pour ce faire rendez-vous dans un fichier de config avec cette commande :

sudo nano /etc/default/motion

Modifiez :

start_motion_daemon=yes

Une fois sauvé et quitté, rendez-vous dans autre fichier de config:

sudo nano /etc/motion.conf
ou
sudo nano /etc/motion/motion.conf

Et modifiez comme ceci :

#On active le daemon
daemon on
#On utilise le fichier /tmp/motion.log pour stocker les logs
logfile /tmp/motion.log
#On règle la résolution
width 1280
height 720
#On règle le nombre d'images prises par seconde
framerate 2
#On règle le code, pour une lecture sur de nombreux médias
ffmpeg_video_codec msmpeg4
#On autorise la lecture du flux depuis internet pour permettre l'accès en ligne à la vidéo-surveillance
stream_localhost off

Testez votre camera avec l’adresse de votre pi suivit de :8080 (port par défaud) ex: 192.157.145.51:8080

On va maintenant dire au raspberry de lancer motion à chaque démarrage. Pour ce faire rendez-vous dans le fichier :

sudo nano /etc/rc.local

Et ajouter :

sudo service motion start

Voila tout est installé !

Mettre les scipts en route

Il ne reste plus qu’a tranferérer le programme au serveur web du raspberry. Pour ce faire :

sudo rm var/www/html/index.html
sudo nano var/www/html/index.php

Une fois dans l’éditeur de texte, copiez/collez ce petit script :

<?php
$file1 = '/sys/devices/w1_bus_master1/28-XXXXXXXXXXXX/w1_slave';
$lines1 = file($file1);
$temp1 = explode('=', $lines1[1]);
$temp1 = number_format($temp1[1] / 1000, 1, ',', '');
system("gpio mode 0 out");
system("gpio mode 2 out");
$etat_lamp = system("gpio read 0");
$etat_clim = system("gpio read 2");
if(isset($_POST['lamp'])){
$etat_lamp = !$etat_lamp;
if($etat_lamp == 1){
system("gpio write 0 1");
}
else{
system("gpio write 0 0");
}
}
if(isset($_POST['clim'])){
$etat_clim = !$etat_clim;
if($etat_clim == 1){
system("gpio write 2 1");
}
else{
system("gpio write 2 0");
}
}
if(isset($_POST['cam'])){
header('Location: http://XXX.XXX.XXX.XX:8080');
}
?>
<html>
<head>
<meta charset="utf-8" />
<link rel="stylesheet" href="style.css" />
<title>Raspberry</title>
<link href="https://fonts.googleapis.com/css?family=Source+Sans+Pro" rel="stylesheet">
<meta name="viewport" content="width=device-width, maximum-scale=1"/>
</head>
<body>
<div id="body">
<h1>Raspberry control center</h1>
<ul id="temp">
<li>
<p><?php echo "Avant " . $temp1 . " °C";?></p>
</li>
</ul>
<form method="POST">
<ul id="ul_relay">
<li>
<input type="submit" id="relay" name="lamp" style="background-color: <?php if($etat_lamp == 0){echo "#44c67b";} else{echo "#ff5148";} ?>;" value="LAMP <?php if($etat_lamp == 0){echo "ON";} else{echo "OFF";} ?>">
</li>
<li>
<input type="submit" id="relay" name="clim" style="background-color: <?php if($etat_clim == 0){echo "#44c67b";} else{echo "#ff5148";} ?>;" value="CLIM <?php if($etat_clim == 0){echo "ON";} else{echo "OFF";} ?>">
</li>
</ul>
<input type="submit" name="cam" id="camera" value="Accédez à la caméra"/>
</form>
</div>
</body>
</html>

Restez sur ce script et changez les x de la sonde de température (ligne 2) avec le nom que vous avez noté précédement. Changer aussi les x par votre l’adresse ip de votre raspberry (ligne 29).

Crt+O Ctrl+X pour sauver et quitter.

Ensuite créez un nouveau fichier css avec la commande :

sudo nano var/www/html/style.css

Et copiez/collez ce petit code :

body{
font-family: 'Source Sans Pro', sans-serif;
min-width: 250px;
text-align: center;
}
#body{
background-color: #ecf0f1;
padding: 20px;
height: auto;
margin: 15px;
}
#temp li{
display: inline-block;
background-color: #ffb459;
border-radius: 5px;
font-weight: 700;
color: white;
font-size: 20px;
padding-left: 30px;
padding-right: 30px;
margin-right: 20px;
margin-bottom: 20px;
}
ul{
list-style-type: none;
}
a{
text-decoration: none;
color: white;
}
#ul_relay li{
display: inline-block;
}
#relay{
cursor: pointer;
border: none;
color: white;
padding: 10 30 10 30px;
border-radius: 5px;
font-weight: 700;
margin-right: 20px;
margin-bottom: 20px;
}
#camera{
cursor: pointer;
background-color: #27aae2;
margin:auto;
padding: 20 20 20 20px;
border-radius: 5px;
border: 1px solid #27aae2;
font-weight: 700;
}

Crt+O Ctrl+X, tout est terminé !!

Rendez-vous sur l’adresse ip de votre raspberry depuis un navigateur, tout devrait marcher !

Shéma branchements

Il ne reste plus qu’a tout racorder au raspberry, voila un shéma qui va vous aider à le faire :

Sources

Pour réaliser ce projet, je me suis aidé de tutos sur internet. Voila le lien vers les plus utiles.

http://espace-raspberry-francais.fr/Composants/Sonde-de-temperature-DS18B20-sur-Raspberry-Francais/

https://www.raspberrypi.org/forums/viewtopic.php?f=44&t=6649&start=125

http://andyseasysite.com/?page_id=145https://raspbian-france.fr/video-surveillance-raspberry-pi-camera/

A vous de jouer ! Si vous avez des problèmes, contactez moi sur twitter. Bon travail ! 🙂

PS : J’allais oublier, voila les fichiers 3d 🙂