Bonjour,
Pour remplacer la fonction du plugin 1 wire de la V3 j’ai une solution basé sur le plugin script.
J’ai testé la solution sur jeedom 3.3.55 et sur V4.1.18
Pour activer le 1 wire sur le PI, je me suis inspiré de http://espace-raspberry-francais.fr/Composants/Sonde-de-temperature-DS18B20-sur-Raspberry-Francais/
Pour le câblage :
j’ai trouvé un complément d’information sur :
https://fr.pinout.xyz/pinout/1_wire
il donne les info si on a besoin d’utiliser une autre broche.
J’essaierais d’ajouter une photo de mon montage sur le PI. j’ai fait un truc propre et compacte.
Typologie de réseau
On peu chainer les capteurs :
J’ai même fait un réseau en étoile avec plusieurs sondes sur un branche et cela fonctionne.
J’ai 3 branches avec une sonde en extrémité et 1 branche avec 2 sondes en extrémité. Je récupère la température du garage, du salon, une à l’extérieur et 2 groupées pour le départ et le retour de la chaudière.
Pour donner l’accès aux données :
sudo modprobe w1-gpio
sudo modprobe w1-therm
en suite, il y a 2 fichiers à modifier :
sudo nano /etc/modules
ajouter les lignes :
w1-therm
w1-gpio pullup=1
sudo nano /boot/config.txt
ajouter la ligne :
dtoverlay=w1-gpio
en suite on accède aux données par une lecture fichier, avec les commandes suivante, on liste les sondes détectées :
cd /sys/bus/w1/devices/
ls
pour lire les données d’une sondes :
cd 28-xxxxxxxxxx
cat w1_slave
Par la suite, il suffit d’un script pour récupérer les données (cf plus pas)
Raccordement à Jeedom :
- installer le plugin script
- ajouter un script et ajuster le taux de rafraichissement avec le cron :
- ajouter des commandes au script créé
- pour la première commande, cliquer sur ajouter un script
- j’ai appelé le script
1wire_temperature
- copier le code suivant, il prend un argument, le nom de la sonde (28-xxxxxx) :
#!/bin/bash
probName=$1
# search the line with "t=" at the begining
for line in $(cat /sys/bus/w1/devices/$probName/w1_slave); do
if [ $(expr "$line" : "^t=.*$") -gt 0 ]; then
# the line begins with 't='
# we extract value after 't='
value=$(expr "$line" : "^t=\(.*\)")
fi
done
# value is a temperature is in 1000th of celsus degree
# shell do not manage float, we use awk to performe float calculation
echo $(awk '{print $1/$2}' <<<"$value 1000.0")
- ajouter le nom de la sonde souhaité en argument du script comme suit :
- pour les autres commandes recopier la ligne de commande et changer le nom de la sonde
Et voila, amusez vous.