Category Archives: 1-wire

Le One Wire est une technologie conçue par Dallas, très utile en domotique car les informations ne circulent que sur une paire de câble.

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

La mauvaise blague des Splitter RJ45

Splitter RJ45

Splitter RJ45

Pour desservir en 1-wire les pièces de mon projet de maison, je souhaite m’équiper de splitter RJ45.
Originalement dédié  à la téléphonie, ces splitters sont ce qu’il y’a de plus simple au monde.

Même un peu trop simple… je m’explique.
J’ai déjà commandé une trentaine  de ces splitters, et je me suis vite rendu compte qu’ils ne marchaient que d’un seul coté parmi les 2 sorties.

Et pour cause … Regardez bien cette photo de face :

Vue de face d'un splitter RJ45

Vue de face d'un splitter RJ45

Les pins de droite sont toutes tordues (sans mauvais jeux de mots à quelques mois des élections), dès que j’insère un RJ, les pins/connecteurs ne se mettent pas sur la bonne broche de la prise RJ45 mâle.
La 1 se met sur 2, la 2 sur la 3, etc…
Voici à quoi ressemble un splitter après utilisation :

Broches tordues du splitter

Broches tordues du splitter

(désolé pour la poussière)

Testeur de câbles réseaux

Testeur de câbles réseaux

C’est du grand n’importe quoi, hein ?! Certains splitters sont moins tordus que d’autres, leur utilisation est normale. 1 sur 5 est bon pour utilisation.
J’ai lourdement investi dans un testeur de câble (3 €) pour pouvoir tester mes splitters avant utilisation. Mais ce n’est pas une bonne solution, j’aimerais avoir confiance en ces splitters.

N’étant qu’à la phase d’étude du 1-wire et de la domotique, je ne sais pas encore comment intégrer l’ensemble à mon projet de maison ; qui lui en est au tout début.
Je pense que ces splitters seront dans des cloisons, faux plafonds, placoplâtre, il est donc primordial d’avoir du matériel fonctionnel !

A noter, une astuce importante du bus 1-wire consiste à faire une boucle du tableau électrique, vers les pièces à desservir et revenir au tableau électrique, mais sans raccorder cette fin de boucle.
Le 1-wire ne tolère pas d’être en boucle fermée, mais l’intérêt de revenir au point de départ est dans le cas d’une interruption de la boucle au milieu de celle-ci, de pouvoir se servir de cette fin de boucle comme une nouvelle partie du bus.

Et pourquoi elles sont tordues ces pins ?

L'intérieur d'un splitter RJ45

L'intérieur d'un splitter RJ45

Réponse : parce que c’est cheap ! 0.40 € / pièce fdpi @ebay.com !

La solution :

Tout jeter ?
Non non ! C’est un produit cheap, alors il faut une solution à cette hauteur !
Au début, je m’amusais à retordre chaque pin dans l’autre sens, mais après 3 utilisations, c’était malgré tout tordu.

La solution consiste en rentrer de travers dans la prise de droite. Mais vraiment vraiment de travers.

Solution pour ne pas tordre les broches

Solution pour ne pas tordre les broches

Demain nous verrons comment mettre un pied devant l'autre

Demain nous verrons comment mettre un pied devant l'autre

C’est tout simple, mais il faut le savoir. J’étais à deux doigts de tout jeter…
En insérer le câble de cette façon, les pins se mettent sur les bonnes broches et tout le monde est content.
Ça marche à tous les coups, pas de mauvaise surprise.
Ouf ! De sacrés farceurs ces chinois splitters.

Posté dans 1-wire | Laisser un commentaire

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

Premiers pas avec le 1-wire et owserver sous Debian Wheezy

Le 1-wire semble la meilleure solution pour répondre à ma volonté de surveiller les températures des pièces, l’hygrométrie, ouverture/fermeture des fenêtres.
Pour commencer, en lisant « one wire » je m’attendais à une techno qui tenats sur un seul et seul brin, que nenni, c’est un brin DATA et un brin GROUND minimum, donc du … 1-pair.

Je ne vais pas re-inventer l’eau chaude, les infos sur le fonctionnement du 1-wire sont existantes et très bien faites.

le DS9490R 1-wire USB

le DS9490R 1-wire USB

Après étude de la technologie, j’ai hésité entre  un adaptateur RS232/1-wire home made et un adaptateur USB/1-wire : DS9490R ; la différence se faisant dans les performances. J’ai choisi de commencer avec le RS9490R, il est toujours possible d’évoluer si je suis bloqué par les limites de celui-ci. D’autant plus que je suis tombé sur une enchère d’eBay que j’ai remporté étant le seul enchèreur, 20 € contre 29 € ailleurs ! Na !

Pour l’instant mon installation domotique se limite à… une VirtualBox… Donc j’y attache mon adaptateur USB.

Configuration de l'host usb sous virtualbox

Configuration de l'host usb sous virtualbox

De plus, à ce jour, Wheezy est à l’état de « testing », à quelques mois de son passage en « stable » on peut se permettre de proder en testing.
A ce sujet, un article intéressant : 5 raisons pour lesquelles Debian unstable ne mérite pas son nom.
Toute mon installation serveur est réalisée sous Debian Wheezy appelée en local domy.

# lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 002 Device 002: ID 80ee:0021 VirtualBox USB Tablet
Bus 002 Device 003: ID 04fa:2490 Dallas Semiconductor DS1490F 2-in-1 Fob, 1-Wire adapter

Auparavant j’avais effectué une installation d’owserver, owfs, owread et ses potes sur Debian Squeeze, mais quelle bonne surprise d’y voir que les projets owserver & co sont maintenant intégrés à Wheezy !

# apt-get install owserver ow-shell owhttpd owfs-fuse

Je modifie le fichier /etc/owfs.conf, commente la ligne 16, décommente la 19 :

# This part must be changed on real installation
#server: FAKE = DS18S20,DS2405
#
# USB device: DS9490
server: usb = all

Restart pour la prise en compte

# /etc/init.d/owserver restart

Un petit tour sur http://domy:2121 pour constaté que mon DS9490R  soit bien reconnu.
Voila … Ça c’est fait.

Résultat d'owhttp avec le DS9490R

Résultat d'owhttp avec le DS9490R

Il est possible d’utiliser owfs, plus sympa à bidouiller.
owfs c’est quoi ? C’est l’exploitation owserver sous forme de système de fichiers.

On a owserver qui s’occupe de communication avec le DS9490R, il tourne en tant que serveur à l’écoute sur le port 4304 (cf conf /etc/owfs.conf).
C’est ensuite owhttp qui va interroger le serveur pour rendre un résultat sous forme de page web.
owfs, va rendre ces mêmes résultats sous forme de répertoires et de fichiers.
L’intérêt est de rendre le 1-wire plus malléable et de répondre à certains besoins.
Besoins que l’on aura très certainement… oui j’ai des idées en tête…

On crée un point de montage et on monte :

# mkdir /mnt/1wire/
# owfs -s localhost:4304 -m /mnt/1wire/

Résultat :

# ls -lh
total 0
drwxrwxrwx 1 root root 8 mars 11 00:09 81.BD2223000000
drwxr-xr-x 1 root root 8 mars 10 23:56 alarm
drwxr-xr-x 1 root root 8 mars 10 23:56 bus.0
drwxr-xr-x 1 root root 8 mars 10 23:56 bus.1
drwxr-xr-x 1 root root 8 mars 10 23:56 settings
drwxrwxrwx 1 root root 8 mars 11 00:09 simultaneous
drwxr-xr-x 1 root root 8 mars 10 23:56 statistics
drwxr-xr-x 1 root root 32 mars 10 23:56 structure
drwxr-xr-x 1 root root 8 mars 10 23:56 system
drwxr-xr-x 1 root root 8 mars 10 23:56 uncached

Très vite l’ajout d’une sonde de température et les premiers graphs.

Posté dans 1-wire, Debian | 9 Commentaires