Monthly Archives: novembre 2014

Monitorer la temperature avec un Raspberry Pi, vite fait bien fait

L’hiver arrive, dans la nouvelle maison je souhaite surveiller la température temporairement pièce par pièce pour mesurer l’impact du chauffage.
Pour cela, je m’aide d’un Raspberry Pi en WIFI et d’une sonde 1-wire DS18B20.

Je ne vais pas réinventer le fil à couper le beurre, le schéma de câblage d’un DS18B20 est le même sur tous les blogs :

DS18B20 sur raspberry pi

DS18B20 sur raspberry pi

 

Ce qui donne une fois soudé :

Magnifique tapis de souris

Magnifique tapis de souris

Vite fait bien fait on a dit

Vite fait bien fait on a dit

Avec des pins !

Avec des pins ! Luxe !

J’utilise une résistance de 4.2kΩ qui fait très bien l’affaire.

Coté Raspberry Pi, après la configuration du WIFI, place à la configuration du 1-wire.

# vi /etc/modules
w1-therm
w1-gpio pullup=1
snd-bcm2835

Pour une action immédiate :

# modprobe w1-therm
# modprobe w1-gpio pullup=1

Puis allons voir ce qu’il se passe  du coté du bus 1-wire :

# cd /sys/bus/w1/devices
# ls -l
total 0
lrwxrwxrwx 1 root root 0 nov. 18 00:05 28-000003977b0a -> ../../../devices/w1_bus_master1/28-000003977b0a
lrwxrwxrwx 1 root root 0 nov. 17 22:45 w1_bus_master1 -> ../../../devices/w1_bus_master1

Ah ! 28 machins, ça me rappelle des souvenirs.

# cd 28-000003977b0a
# cat w1_slave
63 01 4b 46 7f ff 0d 10 15 : crc=15 YES
63 01 4b 46 7f ff 0d 10 15 t=22187

Bon, on devine que 22187 correspond à 22,187°C.
Autrement on peut utiliser cette commande :

# find /sys/bus/w1/devices/ -name "28-*" -exec cat {}/w1_slave \; | grep "t=" | awk -F "t=" '{print $2/1000}'
22.187

Voila voila…

Reste à grapher périodiquement cette valeur.
Vite fait, bien fait, j’aime grapher avec munin et j’ai vite trouvé un script simple et efficace :
https://gist.github.com/kminiatures/4f3…

Ah bah !?! Go !

# apt-get install -y munin-node bc
# cd /etc/munin/plugins/

Personnellement, je souhaite juste ma temperature, donc je supprime tous les plugins et crée le nouveau plugin :

# rm *
# vi 1w-temp

Pour y insérer ceci (selon https://gist.github.com/kminiatures/4f3… )

#!/bin/sh

case $1 in
   config)
        cat <<'EOM'
graph_title Temperature
graph_vlabel Temperature
temperature.label temperature
EOM
        exit 0;;
esac

printf "temperature.value "
TEMP=`cat /sys/bus/w1/devices/*/w1_slave | grep t= | sed s/.*t=//`
echo "scale=2; $TEMP / 1000" | bc

Puis on teste tout de suite notre plugin :

# chmod +x 1w-temp
# munin-run 1w-temp
temperature.value 22.25

Bientôt la fin… J’ajoute un « allow * » au fichier /etc/munin/munin-node.conf
Puis /etc/init.d/munin-node restart

Mettons un serveur munin/apache2 en place :

# apt-get install munin apache2
# vi /etc/apache2/conf.d/munin

Puis remplaçer toutes les occurences de Allow from localhost 127.0.0.0/8 ::1 par Allow from all .
On redémarre apache2 :

# /etc/init.d/apache2 restart

Vous pouvez également modifier le fichier /etc/munin/munin.conf pour modifier le nom de votre serveur.

Evidemment, si vous avez un autre serveur munin (mon cas), inutile d’installer un serveur munin sur votre Raspberry, il vaut mieux décharger cette tâche à une autre machine plus apte à ce genre de service.
Au bout de quelques heures ou quelques jours, vous devriez voir ce genre de graphique :

DS18b20 dans munin

DS18b20 dans munin

DS18b20 zoomé dans munin

DS18b20 zoomé dans munin

Bon, vite fait, maintenant qu’on a un apache2 sur le raspberry, une petite page PHP pour connaitre la température actuelle de la sonde.
On peut aussi lire la valeur « Cur: » sur les graphs munin, mais mes petits yeux veulent quelque chose de plus grand, surtout depuis le téléphone.

# apt-get install php5
# cd /var/www/
# vi index.php
<meta name="viewport" content="width=device-width, user-scalable=no">
<center><span style="font-size:65px;">
<?php
// Fichier à lire
$file = "/sys/bus/w1/devices/28-000003977b0a/w1_slave";

// Lecture ligne par ligne
$lines = file($file);

// Recupere la 2nd ligne
$temp = explode('=', $lines[1]);

// Formatage de la temperature
$temp = number_format($temp[1]/1000,2, '.', '');

// On affiche la temperature
echo $temp;
?>
</center></span>

28-000003977b0a correspond à l’ID de ma sonde DS18B20.

Ce qui donne sur smartphone :

page web DS18b20

page web DS18b20

Voila, un article vite fait bien fait, pour surveiller une température.
Cela va me permettre dans un premier temps de calibrer mon Z41.
Puis ça me permettra d’analyser les variations de température de la maison entre le chauffage au sol, le poêle à pellet, et l’ensoleillement à travers les ouvertures.

Posté dans 1-wire, graphs, php, Raspberry Pi, Web | Tagged , , , , | 19 Commentaires

Alimenter des Raspberry Pi par le réseau

Une petite astuce permettant d’alimenter plusieurs Raspberry Pi à partir du réseau sans utiliser le PoE tel que la norme le défini.

L’avantage du Raspberry, c’est qu’il se glisse partout dans une maison, il consomme peu (650 mA pour le modele B+) ; l’inconvénient est qu’il ne supporte pas le PoE au sens strict de la norme (IEEE 802.3af), à moins d’y rajouter un module très cher.
Ou bien, en PoE passif, avec un peu de câbles, sans devoir toucher au fer à souder 🙂

Actuellement j’utilise 3 Raspberry Pi :
– Compteur téléinfo et contrôle de l’alarme.
– Compteur à impulsion sur le compteur d’eau et monitoring des températures.
– Dans l’atelier, en tant que poste de travail,  SSH, web, etc…

Voici le nécessaire utilisé :

Transformateur 5 Volts / 3 Ampères :

Récupéré d’un hub USB.
Avec embout en 3,5mm.
Neuf, comptez entre 2 $ et 6 $.

*Pas de photo*

Splitter DC 3,5mm (arraignée) :

1 femelle 3.5mm vers 4 mâles 3,5 mm.
Nombres de sorties à adapter selon le nombre de Raspberry souhaité.
Comptez environ 5,60 $.

Splitter 1 femelle vers 4 mâles

Splitter 1 femelle vers 4 mâles

Injecteur/splitter PoE passif :

Se vend par couple, un mâle 3,5mm et une femelle 3,5mm
Environ 3,16 $ mais moins cher si acheté en lot.

Injecteur passif PoE

Injecteur passif PoE

Adaptateur DC 3,5 mm vers micro USB :

Et la fin ! L’adaptateur DC 3,5mm vers micro USB mâle à brancher dans le Raspberry Pi.
Environ 2 $ / pièce.

Adpatateur 3,5mm femelle vers micro USB

Adpatateur 3,5mm femelle vers micro USB

 


PoE passif pour le Raspberry Pi :

Schéma PoE passif pour Raspberry Pi

Schéma PoE passif pour Raspberry Pi

Coté baie de brassage :

L’adaptateur secteur 5V branché au splitter (arraignée) 1 vers 4 fiches.
A chaque sortie de l’araignée : l’injecteur passif, d’un coté le switch (mâle RJ45 dans le switch), de l’autre le câble RJ45 (femelle RJ45 + cordon de brassage dans le panneau).

Coté Raspberry Pi :

Câble réseau raccordé au splitter PoE passif.
Le câble réseau du splitter dans le Raspberry Pi et la fiche mâle DC raccordé à l’adaptateur DC vers micro USB pour alimenter le Raspbery Pi.

Voila, aussi simple que ça pour une seule alimentation pour plusieurs Raspberry Pi et garder une baie de brassage propre.

Baie de brassage domotique

Baie de brassage, 3 Raspberry alimenté en PoE

Baie de brassage et TGBT

Baie de brassage et TGBT

 

Posté dans Raspberry Pi, Sysadmin | Tagged , , , , , , , , | 7 Commentaires

Z41 Remote disponible pour Android

Une info peu reprise : l’application Z41 Remote est enfin disponible pour Android.
Depuis bien longtemps les utilisateurs d’iPhone pouvaient contrôler leurs maisons avec leurs téléphones.
C’est maintenant aux utilisateurs Android de pouvoir piloter leurs maisons comme s’ils étaient en face de leur Z41.

Pour rappel, l’application Z41 Remote de Zennio est une application qui permet de dupliquer l’écran du Z41 sur son smartphone.
L’application Android est une Beta.

Elle est grossièrement stable, certaines fonctions sont indisponibles, quelques plantages aléatoires.
Mon Z41 n’est pas encore configuré dans ses plus belles fonctions, mais j’ai d’ors et déjà pu constater que Z41 Remote sur android ne me permet pour l’instant pas :
– D’afficher les graphiques
– De choisir la couleur de mon rail LED RGBW.

Vivement la suite ! (Initialement l’application était prévue pour juillet 2014)

Télécharger Z41 REMOTE pour Android

Page d'accueil Z41 Remote Android

Page d’accueil Z41 Remote

Z41 Remote Android écran principal

Ecran principal Z41

Ecran BSO sur Z41 Remote Android

Ecran BSO

Ecran graphiques Z41 Remote Android

Ecran graphiques Z41 Remote Android

 

Posté dans KNX, Z41 | Tagged , , , | Laisser un commentaire