Daily Archives: 12 mars 2012

array('post','marketing','computer','name_of_the_post_type','name_of_the_post_type'))); */ ?>

L’injecteur 5 Volts pour bus 1-wire (version alpha)

Les sondes de température DS18B20 peuvent fonctionner de deux façons :

  • Mode parasite : DATA + GROUND.
  • Mode non-parasite/normal : DATA + GROUND + 5 Volts.

Le fonctionnement en mode parasite va vite être handicapant, lorsqu’on atteint un certain nombre de sondes (?!) et une certaine distance entre elles (?!), les DS18B20 ne répondent plus ou rebootent sans cesse.
De plus, les autres élements 1-wire, tels que le capteur d’ouverture/fermeture, hygrométrie requirent d’office une alimentation 5Volt, alors inutile de tourner autour du pot, il faut injecter 5Volt dans le bus 1-wire.

Comme vu précédemment, le 1-wire fonctionne sur une paire, mon bus est câblé sur du RJ45, le DS9490R me fournit ceci :

Information sur la sortie du DS9490R (Source : vesta.homelinux.free.fr)

Information sur la sortie du DS9490R (Source : vesta.homelinux.free.fr)

Onéreux injecteur 1-wire d'Hobby Boards

Onéreux injecteur 1-wire d'Hobby Boards

Pour faire simple sans mon injecteur j’utilise uniquement le pin 3 et 4, jusque là, tout va bien.
Le but de l’injecteur est de me fournir du 5Volt d’une alimentation externe sur ma pin 8 de mon bus, à l’extremité de mon RJ45.

Pour cela, hobby-boards.com propose un magnifique injecteur à 22 $.
Bon, il faut avouer ça sera difficile de faire mieux, surtout niveau prix …

Ou bien … DIY. Yoann QUERET, encore lui, nous propose une version très logique, que j’ai modifié et rendu un chouïa plus clair :

Schéma de l'injecteur 5V dans le bus 1-wire

Schéma de l'injecteur 5V dans le bus 1-wire

Idéalement :
D3 est une diode de puissance entre 1N4001 et 1N4007.
R2 120 Ohms environ.
D2 LED classique 1.8V.

Transfo 5V

Transfo 5V

Personnellement :
Alim externe, un transfo de récup et son jack : 5V, 2.4A.
2 RJ45 femelle pour panneau de brassage.
D3 récupéré sur un pont de diode d’alim : 1N4148.
D2 LED récupéré sur la base d’un DECT.
R2 16 Ohms de la même base.
Ça brille fort !

Une boite de bonbons en guise de boitier, en métal, pour ne pas faire les choses à moitié.
Une grosse dose de pistolet à colle !

Le Comic Sans MS, c'est cadeau !

Le Comic Sans MS, c'est cadeau !

Travail de qualité ! Usinage parfait

Travail de qualité ! Usinage parfait

Le meilleur est à l'intérieur

Le meilleur est à l'intérieur

Cet injecteur n’est là que pour les tests, rien de définitif, il s’agit juste de comprendre le 1-wire, d’avoir le minimum pour alimenter mon bus.
Je ferais prochainement une version beta d’un injecteur avec un boitier mural RJ45, le tout très propre, enfin… « propre » plutôt.

J’ai donc sur mon bus un brin 5 Volt sur le brin n°8 de mon RJ45.

Schéma de l'injecteur 5 Volt dans le 1-wire

Schéma de l'injecteur 5 Volt dans le 1-wire

Partout dans mon bus, j’aurai donc la même chose, le bus 1-wire sur le 4 et 5 du RJ45, ainsi que le 5 Volt sur le brin n°8.

Au final, mon minimum de test est établi, fonctionnel, évolutif :

Le DS9490R, l'injecteur 5V, 1 splitter RJ45 et 2 DS18B20.

Le DS9490R, l'injecteur 5V, 1 splitter RJ45 et 2 DS18B20.

Une plateforme de test idéale pour débuter avec le 1-wire

Une plateforme de test idéale pour débuter avec le 1-wire


Posté dans 1-wire | 13 Commentaires

Générer des graphiques munin grâce aux sondes 1-wire

Grapher grapher grapher et grapher !
Déformation professionnelle ou pas, mais vive les graphs !

Analyser de bons graphiques en dit beaucoup.

  • l’inertie de mon chauffage est-il optimisé ?
  • Pourquoi ce pic de température, comment le lisser ?
  • Pourquoi cette soudaine chute de température ?

Obtenir une vue globale de l’ensemble des températures/hygrométrie, c’est primordial et bien sur, une base fondamentale en domotique.

Dans un premier temps, je souhaite monitorer les sondes de température via munin, plus tard, je doublerais très certainement le schlimblik via une base MySQL pour une meilleure exploitation des données. Il existe déjà des choses farfelues dans ce genre mais j’y reviendrai bien plus tard.

# apt-get install munin munin-node apache2

Je dé-commente et modifie les lignes de munin « /etc/munin/munin.conf » pour le faire fonctionner en tant que « serveur » comme je le souhaite, en rapport avec apache2.

dbdir /var/lib/munin
htmldir /var/www
logdir /var/log/munin
rundir /var/run/munin
#
# Where to look for the HTML templates
tmpldir /etc/munin/templates

J’utilise un script pompé et légèrement modifié de chez Yoann QUERET (qui au passage fait du super taff dans le domaine Asterisk & FreePBX). Merci à lui.

Le fichier du script se situe : /usr/share/munin/plugins/owfstemp

#!/bin/bash
DEVICE=`basename $0| cut -d "_" -f2`
ALIAS=`basename $0| cut -d "_" -f3`

if [ "$1" = "autoconf" ]; then
 echo yes
 exit 0
fi
if [ "$1" = "config" ]; then
 echo "graph_title Temperature $ALIAS"
 echo "graph_info Temperature pour la sonde $DEVICE"
 echo 'graph_args --base 1000 -l 0'
 echo 'graph_vlabel Celsius'
 echo 'graph_scale no'
 echo 'graph_category Temperature'
 echo "$ALIAS.label $ALIAS"
 exit 0
fi
# Pour une utilisation owserver avec owfs
#FS="/mnt/1wire"
#cd $FS/$DEVICE/
#echo "$ALIAS.label $ALIAS"
#echo -n "$ALIAS.value "
#sed -e 's/ //g'#echo

# Pour une utilisation owserver avec ow-shell et owread
TEMP=`owread -s localhost:4304 /$DEVICE/temperature`
echo -n "$ALIAS.value "
echo $TEMP

A noter qu’il est possible d’utiliser owread ou faire un cat/sed du fichier de température de la sonde, il ne me semble pas qu’il y’ait une différence ou une préférence dans l’utilisation.

On veille à rendre le fichier exécutable.

# chmod +x /usr/share/munin/plugins/owfstemp

Et on crée nos plugins munin :

# ln -s /usr/share/munin/plugins/owfstemp /etc/munin/plugins/owfstemp_28.EA54B5030000_Exterieur
# ln -s /usr/share/munin/plugins/owfstemp /etc/munin/plugins/owfstemp_28.7B2DB5030000_Chambre

Bien sûr, les ID changent selon chaque sonde, EA54B5030000 et 7B2DB5030000 me sont indiqués par owhttp http://domy:2121 par exemple.
Un petit essai :

# munin-run owfstemp_28.7B2DB5030000_Chambre
Chambre.value 21.5
munin-run owfstemp_28.EA54B5030000_Exterieur
Exterieur.value 21.125

Restart de munin-node pour la prise en compte de ces 2 plugins.

# /etc/init.d/munin-node restart

Et au bout d’une demi journée :

Graphique extérieur avec munin et une sonde DS18B20

Graphique extérieur avec munin et une sonde DS18B20

Graphique intérieur avec munin et une sonde DS18B20

Graphique intérieur avec munin et une sonde DS18B20

C’est un bon début, une base pour la supervision des températures sur le long terme, il faudra cependant très certainement repenser la récupérations des valeurs vers une base MySQL pour traiter les valeurs à court terme ; mais l’un n’empêche pas l’autre.

Posté dans 1-wire, Debian, graphs | 7 Commentaires