Outils pour utilisateurs

Outils du site


all:bibles:materiel:raspberry:sonde_temperature

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Prochaine révision
Révision précédente
all:bibles:materiel:raspberry:sonde_temperature [2024/06/14 11:10] – créée - modification externe 127.0.0.1all:bibles:materiel:raspberry:sonde_temperature [2024/08/15 10:34] (Version actuelle) – [Prise en compte] omeylhoc
Ligne 1: Ligne 1:
 +====== Sonde de température ======
 +
 +----
 +
 +===== DS18B20 =====
 +
 +Ce capteur peut se présenter sous sa forme de simple composant ou bien de câble étanche.
 +
 +{{ :all:bibles:raspberry:sonde_ds18b20.jpg?600 |}}
 +
 +==== Brochage ====
 +
 +{{ :all:bibles:raspberry:ds18b20.png?400 |}}
 +
 +==== Branchement ====
 +
 +{{ :all:bibles:raspberry:schema.jpg?600 |}}
 +
 +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).
 +
 +==== Prise en compte de la sonde ====
 +
 +=== Installation des drivers 1-wire ===
 +
 +<code bash>
 +modprobe w1-gpio
 +modprobe w1-therm
 +</code>
 +
 +=== Vérification ===
 +
 +Pour vérifier que la sonde est bien reconnue :
 +
 +<code bash>
 +cd /sys/bus/w1/devices/
 +ls
 +cd 28-00000b471676
 +cat w1_slave
 +</code>
 +
 +==== Utilisation GPIO autre que GPIO 4 ====
 +
 +=== Allocation dynamique  ===
 +
 +<code bash>
 +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
 +</code>
 +
 +=== Au démarrage ===
 +
 +Editer le fichier <color #00a2e8>/boot/config.txt</color> sur Raspberry PI OS ou <color #00a2e8>/boot/firmware/config.txt</color> sur Ubuntu et ajouter la ligne suivante à la fin du fichier : 
 +
 +<code bash>
 +dtoverlay=w1-gpio,gpiopin=x
 +</code>
 +
 +[[https://pinout.xyz/pinout/1_wire|Source]]
 +
 +==== Dépannage ====
 +
 +Si la sonde n'est pas reconnue éditer le fichier <color #00a2e8>/etc/modules</color> pour y ajouter les 2 lignes suivantes :
 +
 +<code bash>
 +w1-therm
 +w1-gpio pullup=1
 +</code>
 +
 +Editer le fichier <color #00a2e8>/boot/config.txt</color> sur Raspberry PI OS ou <color #00a2e8>/boot/firmware/config.txt</color> sur Ubuntu et ajouter la ligne suivante à la fin du fichier :
 +
 +<code bash>
 +[all]
 +dtoverlay=w1-gpio
 +</code>
 +
 +Redémarrer le raspberry pi et recommencer la vérification.
 +
 +
 +
 +
 +==== SNMP ====
 +
 +=== Installation packages ===
 +
 +<code bash>
 +sudo apt-get install snmp snmpd snmp-mibs-downloader
 +</code>
 +
 +Editer le fichier <color #00a2e8>/etc/default/snmpd</color> pour ajouter « extend » après le -I après avoir enlevé le commentaire en début de ligne.
 +
 +<code bash>
 +# 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’
 +</code>
 +
 +=== Installation scripts ===
 +
 +<code bash>
 +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
 +</code>
 +
 +=== Configuration ===
 +
 +Editer le fichier <color #00a2e8>/etc/snmp/snmpd.conf</color> pour autoriser la boucle locale ainsi que le range IP de destination du RaspBerry Pi :
 +
 +<code>
 +rocommunity public 127.0.0.1  
 +rocommunity public 10.0.0.0/8
 +</code>
 +
 +=== 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 :
 +
 +<code bash>
 +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
 +</code>
 +
 +Noter l'ID unique de la sonde : <color #ed1c24>28-03119779959b</color> dans notre cas de figure.
 +
 +Editer le fichier <color #00a2e8>/opt/snmpmoni/mapping/iso.3.6.1.4.1.50083.100.4.1.1.1.7.1</color> et remplacer le contenu par l'ID de la sonde DS18B20 :
 +
 +<code>
 +28-03119779959b
 +</code>
 +
 +La configuration permet de récupérer jusqu’à 8 sondes de température référencées sous les OID suivants :
 +
 +<code>
 +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
 +</code>
 +
 +L'utilisation de ces OID permet de ne pas rencontrer de conflit d’OID sur le système.
 +
 +Redémarrer le service SNMP :
 +
 +<code bash>
 +/etc/init.d/snmpd restart
 +</code>
 +
 +=== Interrogation ===
 +
 +L'interrogation peut se faire par la commande snmpwalk (package snmp) :
 +
 +<code bash>
 +snmpwalk -v 1 -c public 127.0.0.1 iso.3.6.1.4.1.50083.100.4.1.1.1.7.1
 +</code>
 +
 +On obtient le résultat :
 +
 +<code>
 +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"
 +</code>
 +
 +où l'on trouve la température de 22,375 °C
 +
 +----
 +
 +[[all:bibles:materiel:raspberry:sonde_temperature|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 ====
 +
 +{{ :all:bibles:materiel:raspberry:bme280.jpg?200 |}}
 +
 +==== 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  |
 +
 +{{ :all:bibles:materiel:raspberry:bme280.png?400 |}}
 +
 +==== Prise en compte ====
 +
 +=== Activer interface I2C ===
 +
 +Activer l'interface I2C à l'aide de l'outil de configuration.
 +
 +<code bash>
 +sudo raspi-config
 +</code>
 +
 +=== Récupérer l'adresse du capteur ===
 +
 +Lancer la commande suivante :
 +
 +<code bash>
 +sudo apt install i2c-tools
 +sudo i2cdetect -y 1
 +</code>
 +
 +Par défaut on doit trouver la sonde bme280 à l'adresse 76
 +
 +<code>
 +      1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
 +00:          -- -- -- -- -- -- -- -- -- -- -- -- -- 
 +10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
 +20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
 +30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
 +40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
 +50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
 +60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
 +70: -- -- -- -- -- -- 76 --                   
 +</code>
 +
 +==== Dépannage ====
 +
 +=== ImportError: No module named smbus ===
 +
 +<code bash>
 +sudo apt-get install python-pip
 +sudo apt install python-smbus
 +</code>
 +
 +----
 +
 +[[all:bibles:materiel:raspberry:sonde_temperature|Haut de page]]
 +
 +===== Sources =====
 +
 +  * [[https://www.framboise314.fr/mesure-de-temperature-1-wire-ds18b20-avec-le-raspberry-pi/|Mesure de température 1-wire DS18B20 avec le Raspberry Pi]] 
 +  * [[https://www.framboise314.fr/poller-des-sondes-de-temperature-ds18b20-en-snmp/|Poller des sondes de température DS18B20 en SNMP]]
 +  * [[https://www.raspberrypi-spy.co.uk/2016/07/using-bme280-i2c-temperature-pressure-sensor-in-python/|BME280 en Python]]
 +
 +----
 +
 +[[all:bibles:materiel:raspberry:sonde_temperature|Haut de page]]