Sonde de température

DS18B20

Ce capteur peut se présenter sous sa forme de simple composant ou bien de câble étanche.

Brochage

Branchement

Raccordement entre la masse (PIN 6 ou bien PIN 9) et le +3,3V (PIN 1) du raspberry. Dans notre cas utilisation du port GPIO 4 sur la PIN 7. Une résistance de 4,7 kΩ est à insérer entre le +3,3V (PIN 1) et le GPIO utilisé (PIN 7 dans notre cas).

Activation interface 1-wire

Activer l'interface 1-wire à l'aide de raspi-config

sudo raspi-config

Prise en compte de la sonde

Installation des drivers 1-wire

modprobe w1-gpio modprobe w1-therm

Vérification

Pour vérifier que la sonde est bien reconnue :

cd /sys/bus/w1/devices/ ls cd 28-00000b471676 cat w1_slave

Utilisation GPIO autre que GPIO 4

Allocation dynamique

sudo dtoverlay w1-gpio gpiopin=4 pullup=0 # GPIO4 pin 7 sudo dtoverlay w1-gpio gpiopin=17 pullup=0 # GPIO17 pin 11 sudo dtoverlay w1-gpio gpiopin=27 pullup=0 # GPIO27 pin 13

Au démarrage

Editer le fichier /boot/config.txt sur Raspberry PI OS ou /boot/firmware/config.txt sur Ubuntu et ajouter la ligne suivante à la fin du fichier :

dtoverlay=w1-gpio,gpiopin=x

Source

Dépannage

Si la sonde n'est pas reconnue éditer le fichier /etc/modules pour y ajouter les 2 lignes suivantes :

w1-therm w1-gpio pullup=1

Editer le fichier /boot/config.txt sur Raspberry PI OS ou /boot/firmware/config.txt sur Ubuntu et ajouter la ligne suivante à la fin du fichier :

[all] dtoverlay=w1-gpio

Redémarrer le raspberry pi et recommencer la vérification.

SNMP

Installation packages

sudo apt-get install snmp snmpd snmp-mibs-downloader

Editer le fichier /etc/default/snmpd pour ajouter « extend » après le -I après avoir enlevé le commentaire en début de ligne.

# snmpd options (use syslog, close stdin/out/err). SNMPDOPTS=’-Lsd -Lf /dev/null -u Debian-snmp -g Debian-snmp -I extend -smux,mteTrigger,mteTriggerConf -p /run/snmpd.pid’

Installation scripts

cd /opt/ sudo git clone -b 1-0-release https://github.com/NorwegianCreations/snmpmoni.git cd snmpmoni/ sudo cp config/snmpd.conf.example /etc/snmp/snmpd.conf

Configuration

Editer le fichier /etc/snmp/snmpd.conf pour autoriser la boucle locale ainsi que le range IP de destination du RaspBerry Pi :

rocommunity public 127.0.0.1
rocommunity public 10.0.0.0/8

Mapping

Il faut maintenant créer le mapping entre l’ID de la sonde DS18B20 et SNMP.

Lister la/les sondes(s) de température reconnues par le système :

ls -l /sys/bus/w1/devices/28-* lrwxrwxrwx 1 root root 0 oct. 15 09:44 /sys/bus/w1/devices/28-03119779959b -> ../../../devices/w1_bus_master1/28-03119779959b

Noter l'ID unique de la sonde : 28-03119779959b dans notre cas de figure.

Editer le fichier /opt/snmpmoni/mapping/iso.3.6.1.4.1.50083.100.4.1.1.1.7.1 et remplacer le contenu par l'ID de la sonde DS18B20 :

28-03119779959b

La configuration permet de récupérer jusqu’à 8 sondes de température référencées sous les OID suivants :

iso.3.6.1.4.1.50083.100.4.1.1.1.7.1
iso.3.6.1.4.1.50083.100.4.1.1.1.7.2
iso.3.6.1.4.1.50083.100.4.1.1.1.7.3
iso.3.6.1.4.1.50083.100.4.1.1.1.7.4
iso.3.6.1.4.1.50083.100.4.1.1.1.7.5
iso.3.6.1.4.1.50083.100.4.1.1.1.7.6
iso.3.6.1.4.1.50083.100.4.1.1.1.7.7
iso.3.6.1.4.1.50083.100.4.1.1.1.7.8

L'utilisation de ces OID permet de ne pas rencontrer de conflit d’OID sur le système.

Redémarrer le service SNMP :

/etc/init.d/snmpd restart

Interrogation

L'interrogation peut se faire par la commande snmpwalk (package snmp) :

snmpwalk -v 1 -c public 127.0.0.1 iso.3.6.1.4.1.50083.100.4.1.1.1.7.1

On obtient le résultat :

iso.3.6.1.4.1.50083.100.4.1.1.1.7.1.1.0 = INTEGER: 1
iso.3.6.1.4.1.50083.100.4.1.1.1.7.1.2.1.2.5.116.104.101.114.109 = STRING: "/bin/bash"
iso.3.6.1.4.1.50083.100.4.1.1.1.7.1.2.1.3.5.116.104.101.114.109 = STRING: "/opt/snmpmoni/bin/ds18b20.sh -g iso.3.6.1.4.1.50083.100.4.1.1.1.7.1"
iso.3.6.1.4.1.50083.100.4.1.1.1.7.1.2.1.4.5.116.104.101.114.109 = ""
iso.3.6.1.4.1.50083.100.4.1.1.1.7.1.2.1.5.5.116.104.101.114.109 = INTEGER: 5
iso.3.6.1.4.1.50083.100.4.1.1.1.7.1.2.1.6.5.116.104.101.114.109 = INTEGER: 1
iso.3.6.1.4.1.50083.100.4.1.1.1.7.1.2.1.7.5.116.104.101.114.109 = INTEGER: 1
iso.3.6.1.4.1.50083.100.4.1.1.1.7.1.2.1.20.5.116.104.101.114.109 = INTEGER: 4
iso.3.6.1.4.1.50083.100.4.1.1.1.7.1.2.1.21.5.116.104.101.114.109 = INTEGER: 1
iso.3.6.1.4.1.50083.100.4.1.1.1.7.1.3.1.1.5.116.104.101.114.109 = STRING: "22.375"
iso.3.6.1.4.1.50083.100.4.1.1.1.7.1.3.1.2.5.116.104.101.114.109 = STRING: "22.375"
iso.3.6.1.4.1.50083.100.4.1.1.1.7.1.3.1.3.5.116.104.101.114.109 = INTEGER: 1
iso.3.6.1.4.1.50083.100.4.1.1.1.7.1.3.1.4.5.116.104.101.114.109 = INTEGER: 0
iso.3.6.1.4.1.50083.100.4.1.1.1.7.1.4.1.2.5.116.104.101.114.109.1 = STRING: "22.375"

où l'on trouve la température de 22,375 °C

Haut de page

BME280

Le BME280 est un capteur plus complet qui permet d'obtenir la température, la pression et l'humidité via l'interface I2C.

Brochage

Branchement

BME280	Raspberry PI	Description
VCC	Pin 1	3,3 V
GND	Pin 6 ou 9	Masse
SCL	Pin 5	I2C SCL
SDA	Pin 3	I2C SDA

Prise en compte

Activer interface I2C

Activer l'interface I2C à l'aide de l'outil de configuration.

sudo raspi-config

Récupérer l'adresse du capteur

Lancer la commande suivante :

sudo apt install i2c-tools sudo i2cdetect -y 1

Par défaut on doit trouver la sonde bme280 à l'adresse 76

0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- 76 --

Dépannage

ImportError: No module named smbus

sudo apt-get install python-pip sudo apt install python-smbus

Haut de page

Sources

Mesure de température 1-wire DS18B20 avec le Raspberry Pi

Poller des sondes de température DS18B20 en SNMP

BME280 en Python

Haut de page