All postsTous les articles
RadPi RadPi

RadPi #3: Temperature RadPi #3 : Température

16 Jun 2016 Cédric Raguenaud

With the boiler controllable, I turned to reading and storing temperatures from the various Pis around the house.

La chaudière étant pilotable, je me suis tourné vers la lecture et le stockage des températures depuis les différents Pi de la maison.

I used the DS18B20 (waterproof, usable outside) on most Pis. Here's how.

J'ai utilisé le DS18B20 (étanche, utilisable dehors) sur la plupart des Pi. Voici comment.

Hardware

Matériel

Link yellow and red wires with a 10kΩ resistor to create a pull-up circuit:

Relier les fils jaune et rouge avec une résistance 10kΩ pour créer un circuit pull-up :

DS18B20 pull-up circuitGPIO connector soldering

Kernel configuration

Configuration du noyau

Add to /boot/config.txt:

Ajouter dans /boot/config.txt :

dtoverlay=w1-gpio

Add to /etc/modules:

Ajouter dans /etc/modules :

w1-therm
w1-gpio pullup=1

Reboot and verify the sensor in /sys/bus/w1/devices/28-xxxx/w1_slave.

Redémarrer et vérifier le capteur dans /sys/bus/w1/devices/28-xxxx/w1_slave.

Expose temperature per Pi (run every minute via cron)

Exposer la température par Pi (via cron toutes les minutes)

<?php
$file  = file_get_contents('/sys/bus/w1/devices/VOTRE_SERIE/w1_slave');
$lines = explode("\n", $file);
$a     = explode(' ', $lines[1]);
$temp  = str_replace('t=', '', $a[9]);
$temp  = ($temp / 1000) + 0;
file_put_contents('/var/www/html/temp.html', $temp);
?>

Collect centrally (run every minute on the central Pi)

Collecte centrale (toutes les minutes sur le Pi central)

<?php
function readTemp() {
  return file_get_contents('http://IP_DU_PI/temp.html');
}
function saveTemp($temp) {
  // INSERT INTO Bedroom (ComputerTime, Temperature) VALUES (time(), $temp)
}
saveTemp(readTemp());
?>

Visualisation

Visualisation

Multi-room temperature graphRaspberry Pi + radiator