De la variation de la température intérieure

Bon, vu que 2015 est l’année de la conférence de Paris sur le climat, autant parler d’écologie et s’intéresser aux températures chaudes de ce début de mois d’avril.

carte ethernet ENC28J60
Carte réseau d’un Chevino connecté

J’ai dernièrement montré une façon simple pour réaliser un petit serveur http sur réseau ethernet à moindre coût (environ 5€) utilisant un microcontrôleur 8bits. L’avantage est qu’il est alors possible pour un prix très réduit d’avoir un nombre conséquent d’objets connectés qui sont alors indépendants et fonctionnent sans le cloud (c’est dégueulasse de dévoyer un si beau réseau comme internet d’une telle façon, mais c’est mon avis personnel) de Google, Amazon ou pire celui d’Apple.  Il est aussi simple de connecter sur un tel microcontrôleur (l’interface ethernet fonctionnant en SPI, il y a donc encore une dizaine d’E/S libre pour connecter un peu tous les capteurs que l’on souhaite), un capteur de température. Un bon capteur pour une telle application est le capteur de température DS18B20 : il fonctionne sur une interface one-wire, est étanche, et possède une résolution d’un seizième de Celsius, avec une précision de l’ordre de 0.1 degrés.

 

capteur
Trois capteurs de température, avec de gauche à droite : un DHT11, un DHT22 et un DS18B20. Il sont rangés par ordre croissant de précision. Les deux DHT* ont l’avantage d’avoir un capteur d’humidité inclu.

Le microcontrôleur connecté fonctionne comme un serveur que j’interroge en http. Et je peux choisir le capteur qui m’intéresse en fonction du fichier demandé :

http://chevino.chevalier.eu.org/t1

me donne la température mesurée par le thermomètre 1 et

http://chevino.chevalier.eu.org/t2

celle du thermomètre 2, c’est aussi simple que ça. C’est sans doute un peu overkill d’utiliser http pour ça, mais l’avantage c’est que ça évite de développer un client pour l’occasion, wget suffit.

En faisant tourner sur un petit ordinateur (Fit PC 2 : http://www.fit-pc.com/web/) ne consommant que quelques watts la solution de domotique libre domoticz : http://domoticz.com/ on peut ainsi stocker les données accumulées par un capteur. Domoticz permet de raffraichir la valeur de température stockée par un API json très simple. Par exemple, pour un capteur de température dont l’id est 6 :

http://domoticz:8080/json.htm?type=command&param=udevice&idx=6&nvalue=0&svalue=TEMP

Ce n’est pas un secret, je tourne sous archlinux et donc j’utilise les timers systemd à savoir un fichier temperature.timer et un fichier temperature.service :

$ cat /etc/systemd/system/temperature.service
[Unit]
Description=Update temperature 
After=network.target 
[Service] 
Type=simple 
User=paul 
Group=users 
ExecStart=/home/paul/scriptDomoticz.sh
$ cat /etc/systemd/system/temperature.timer
[Unit] 
Description=Update temperature on domoticz 
[Timer] 
OnBootSec=5min 
OnUnitActiveSec=300  
[Install] 
WantedBy=timers.target
# systemctl enable temperature.timer

Il faut bien définir un champ AtBootSec et dire que c’est Unique sinon ça ne marchera pas 🙂 Petit rappel pour recharger les unités il faut lancer

# systemctl daemon-reload

Et pour lister les timers existants il faut utiliser :

$ systemctl list-timers

Le script qui sera lancé toutes les 5 minutes pour réactualisé domoticz sera donc le suivant :

$ cat /home/paul/domoticzScript.sh
#!/bin/bash 
 
if [ -d /tmp/domoticz_cron ]; then 

else  
  mkdir /tmp/domoticz_cron 
fi 
 
cd /tmp/domoticz_cron
 
wget -O temperature.txt http://chevino.chevalier.eu.org  
 
var=$(head -n1 temperature.txt) 

#si ce n'est pas un nombre, on ne fait rien
case $var in 
   (*[^0-9.]*|'') ;; 
   (*)           wget -O json.txt http://domoticz:8080/json.htm?type=command\&param=udevice\&idx=6\&nvalue=0\&svalue=$var
Où 6 est l’id du sensors température dans domoticz. Pour d’autres capteurs (humidité, pression pluviométrie, il suffit d’adapter ça selon ce qui est écrit dans le wiki de domoticz.

Et voilà c’est fini ! Au bout de quelques jours on obtient un très joli graphe qui donne la température dans la pièce en fonction du temps. L’oeil averti verra la décroissance exponentielle de la température lorsque la température diminue la nuit.

courbe température
Courbe de température entre le 11 avril 2015 à 22h et le 15 avril à 19h.

 

Les pics sur le graphe correspondent à des moments d’ouverture des fenêtres qui provoquent une baisse significative de la température, mais qui ne permettent pas de baisser durablement la température de la pièce. Même si l’ouverture de la dite fenêtre a lieu en soirée pendant très longtemps, sans doute à cause des murs, des meubles et des appartements voisins qui accumulent beaucoup de chaleur . On remarquera que la température la plus basse de la journée se situe au moment où on sortira de la douche le matin (et/ou du lit selon les cas).

J’en conclus surtout que mon appartement est mal isolé, mais ça je m’en doutais un peu, après comme le disait quelqu’un de bien informé, il faut toujours garer sa voiture à l’ombre.

Petit bonus : voici les photos d’un boîtier imprimé en 3D pour stocker ce thermomètre connecté :

chevino in a box
Le chevino dans sa boîte imprimée en 3D. On y voit bien le chevino, sa carte réseau et le convertisseur linéaire pour alimenter la carte en 3.3V

Je mesure le courant avec un ampèremètre : l’ensemble absorbe un courant de 0.15 A à 5V et donc dissipe une puissance d’un demi watt. À la fin de l’année c’est 6.6 kWh, (à 0.144 € le kWh) c’est à dire environ 1€ d’électricité, un peu plus parce qu’il y a le serveur qui consomme un peu aussi mais à peut près autant.

mesure du courant
Mesure du courant de fonctionnement du chevino connecté avec thermomètre.

Le coût de l’opération pour un thermomètre connecté : environ 7€ pour un an de fonctionnement et je possède moi même mes datas ; entre ça et un muscadet + rapido au bar PMU d’en bas, mon choix est vite fait.

 

 

Published by

paul_f4hed

Bricoleur du samedi matin, programmeur du dimanche.