lint-all #3

Merged
kleph merged 11 commits from lint-all into master 2020-10-28 18:10:43 +01:00
Showing only changes of commit 0b11ae4941 - Show all commits

View file

@ -13,35 +13,41 @@ Je me suis beaucoup inspiré du site [framboise314][1], avec un ajout de configu
[TOC] [TOC]
# Matériel # Matériel
- une sonde DS18B20 - une sonde DS18B20
- une nappe IDE (40 fils) pour se brancher sur le port GPIO de la raspi - une nappe IDE (40 fils) pour se brancher sur le port GPIO de la raspi
- une [raspberry pi][4] - une [raspberry pi][4]
## Images ## Images
Le montage est très bien décrit sur le site de [framboise314][1], je ne le décrirais donc pas à nouveau. Le montage est très bien décrit sur le site de [framboise314][1], je ne le décrirais donc pas à nouveau.
J'ai choisi la version "standard" à 3 fils. J'ai choisi la version "standard" à 3 fils.
Voici une image de la raspi : [![raspi](images/therm_raspi_small.jpg)][5] Voici une image de la raspi : [![raspi](images/therm_raspi_small.jpg)][5]
et une de la breadboard : [![breadboard](images/therm_raspi_bread_small.jpg)][6] et une de la breadboard : [![breadboard](images/therm_raspi_bread_small.jpg)][6]
et une sans la breadboard : [![without_breadboard](images/therm_raspi_without_breadboard_small.jpg)][7] et une sans la breadboard : [![without_breadboard](images/therm_raspi_without_breadboard_small.jpg)][7]
# Logiciel # Logiciel
## Ajout de l'overlay (3.18+) ## Ajout de l'overlay (3.18+)
Dans le fichier `/boot/config.txt`, il faut ajouter le chargement d'un overlay pour le DTB. J'en parle très succintement [ici][2] avec un lien vers [devicetree.org][3], c'est une description du matériel qui permet au noyau d'activer et de configurer certaines parties de la carte. Dans le fichier `/boot/config.txt`, il faut ajouter le chargement d'un overlay pour le DTB. J'en parle très succintement [ici][2] avec un lien vers [devicetree.org][3], c'est une description du matériel qui permet au noyau d'activer et de configurer certaines parties de la carte.
Il me semble qu'avant le 3.18 cette description était statique pour la raspi. Il me semble qu'avant le 3.18 cette description était statique pour la raspi.
```
```bash
dtoverlay=w1-gpio dtoverlay=w1-gpio
``` ```
Une version `-pullup` est aussi disponible, mais n'est nécessaire que si on branche le capteur en mode parasite (la version 2 fils, en reliant la patte d'alimentation avec la patte data) Une version `-pullup` est aussi disponible, mais n'est nécessaire que si on branche le capteur en mode parasite (la version 2 fils, en reliant la patte d'alimentation avec la patte data)
Ensuite dans `/etc/modules`, on rajoute le chargement des pilotes 1-wire : Ensuite dans `/etc/modules`, on rajoute le chargement des pilotes 1-wire :
```
w1-gpio ```bash
w1-gpio
w1-therm w1-therm
``` ```
Comme pour la DTB, je n'ai pas activé l'option `pullup=1`.
Comme pour la DTB, je n'ai pas activé l'option `pullup=1`.
# Lecture de la valeur # Lecture de la valeur
@ -49,33 +55,38 @@ Si le dispositif fonctionne bien et que les pilotes sont chargés, un fichier es
En lisant ce fichier, on obtient sur le CRC de la lecture sur la première ligne qui permet de déterminer si la lecture de la valeur et sa transmission au pilote a fonctionné. En lisant ce fichier, on obtient sur le CRC de la lecture sur la première ligne qui permet de déterminer si la lecture de la valeur et sa transmission au pilote a fonctionné.
Voici un exemple d'une sortie en erreur : Voici un exemple d'une sortie en erreur :
```
```console
cat : /sys/bus/w1/devices/28-001451521dff cat : /sys/bus/w1/devices/28-001451521dff
00 00 00 00 00 00 00 00 00 : crc=00 NO 00 00 00 00 00 00 00 00 00 : crc=00 NO
00 00 00 00 00 00 00 00 00 t=0 00 00 00 00 00 00 00 00 00 t=0
``` ```
On retrouve alors dans les logs un message : On retrouve alors dans les logs un message :
```
```console
w1_slave_driver 28-001451521dff: Read failed CRC check w1_slave_driver 28-001451521dff: Read failed CRC check
``` ```
J'utilisais alors une nappe IDE de longueur classique, environ 60 cm, cela semble être trop. J'utilisais alors une nappe IDE de longueur classique, environ 60 cm, cela semble être trop.
En utilisant une nappe plus courte (5cm, je ne sais plus du tout dans quelle machine j'ai récupéré ça), j'ai obtenu une sortie correcte : En utilisant une nappe plus courte (5cm, je ne sais plus du tout dans quelle machine j'ai récupéré ça), j'ai obtenu une sortie correcte :
```
```console
78 01 55 00 7f ff 0c 10 57 : crc=57 YES 78 01 55 00 7f ff 0c 10 57 : crc=57 YES
78 01 55 00 7f ff 0c 10 57 t=23500 78 01 55 00 7f ff 0c 10 57 t=23500
``` ```
La deuxième ligne donne la température en millième de °C. La deuxième ligne donne la température en millième de °C.
# Plugin collectd # Plugin collectd
Dans un premier temps, je vais utiliser un script shell et le plugin [Exec][8] de collectd. J'essaierai de faire une meilleure version du plugin, en C je suppose, plus tard. Dans un premier temps, je vais utiliser un script shell et le plugin [Exec][8] de collectd. J'essaierai de faire une meilleure version du plugin, en C je suppose, plus tard.
## En utilisant le plugin exec ## En utilisant le plugin exec
Voici un exemple de script donné sur la page [wiki du plugin][7], adaptée pour ce capteur : Voici un exemple de script donné sur la page [wiki du plugin][7], adaptée pour ce capteur :
``` bash ``` bash
#!/bin/bash #!/bin/bash
# script to read DS18B20 temp value and output in collectd format # script to read DS18B20 temp value and output in collectd format
@ -95,10 +106,10 @@ Voici un exemple de script donné sur la page [wiki du plugin][7], adaptée pour
value=$(awk -F "t=" '/t=/ {print $2/1000}' ${probe_path}) value=$(awk -F "t=" '/t=/ {print $2/1000}' ${probe_path})
echo "PUTVAL \"${HOSTNAME}/exec-temp/gauge-DS18B20\" interval=${INTERVAL} N:${value}" echo "PUTVAL \"${HOSTNAME}/exec-temp/gauge-DS18B20\" interval=${INTERVAL} N:${value}"
done done
``` ```
Voici la configuration du plugin dans le fichier `collectd.conf`. Notez l'id de la sonde en paramètre du plugin, il sera passé au script de lecture. Voici la configuration du plugin dans le fichier `collectd.conf`. Notez l'id de la sonde en paramètre du plugin, il sera passé au script de lecture.
``` bash ``` bash
<Plugin exec> <Plugin exec>
Exec "pi" "/home/pi/read_temp.sh" "28-001451521dff" Exec "pi" "/home/pi/read_temp.sh" "28-001451521dff"