Aller au contenu

Controle de température du Raspberry Pi

site d’origine : https://yavin4.ovh/index.php/2014/12/31/raspberry-pi-recuperer-la-temperature-cpu-dans-un-fichier/

Pour l’alerte par courriel, il faut installer et configurer le logiciel de messagerie mute

#!/bin/bash

# Récupération de la température ; on obtient ici une valeur à 5 chiffres sans virgules (ex: 44123) :
TEMP=$(cat /sys/class/thermal/thermal_zone0/temp)

# On divise alors la valeur obtenue par 1000, pour obtenir un résultat avec deux chiffres seulement (ex: 44) :
TEMP=$(($TEMP/1000))

# Récupération de la date et l'heure du jour ; on obtient ici une valeur telle que "mercredi 31 décembre 2014, 00:15:01" :
DATE=`date +"%A %d %B %Y, %H:%M:%S"`

# Récupération de la date et l'heure du jour sous un autre format ; on obtient ici un résultat sous la forme suivante : XX-YY-ZZZZ (ex: 31-12-2014) :
DATE2=`date +"%d-%m-%Y"`

# Répertoire cible (où seront stockées les valeurs). Ici je stocke mes valeurs sur mon NAS et dans un sous-répertoire portant la date du jour ($DATE2) :
REP="/media/NAS/Captures/$DATE2"

# Le fichier à créer dans ce répertoire est "temperature.html"
FICHIER="${REP}/temperature.html"

# Si le répertoire cible n'existe pas, on le crée
if [ ! -d "$REP" ];then
  mkdir -p "$REP"
fi

# Si le fichier temperature.html n'existe pas, on le crée et on y injecte le code html minimum
if [ ! -f "$FICHIER" ];then
  touch "$FICHIER" &&
  echo "<!DOCTYPE html><html><head><meta charset='utf-8' /></head><body><center>" > "$FICHIER"
fi


# Test de la température relevée

# Si la température relevée est inférieure à 40°C, on écrit la valeur en bleu dans le fichier :
if [ "$TEMP" -lt "40" ]; then
    echo "<font face='Courier'>${DATE}" "<strong><font color='blue'>${TEMP}°C</font></font></strong><br>" >> "$FICHIER"

# Si la température relevée est comprise entre +40 et 50°C, on écrit la valeur en vert dans le fichier :
elif [ "$TEMP" -ge "40" ] && [ "$TEMP" -lt "50" ];then
    echo "<font face='Courier'>${DATE}" "<strong><font color='green'>${TEMP}°C</font></font></strong><br>" >> "$FICHIER"

# Si la température relevée est comprise entre +50 et 70°C, on écrit la valeur en orange dans le fichier :
elif [ "$TEMP" -ge "50" ] && [ "$TEMP" -lt "70" ];then
    echo "<font face='Courier'>${DATE}" "<strong><font color='orange'>${TEMP}°C</font></font></strong><br>" >> "$FICHIER"

# Si la température relevée est comprise entre +70 et 75°C, on écrit la valeur en rouge dans le fichier et on envoie une alerte "surchauffe" par mail :
elif [ "$TEMP" -ge "70" ] && [ "$TEMP" -lt "75" ];then
    echo "<font face='Courier'>${DATE}" "<strong><font color='red'>${TEMP}°C</font></font></strong><br>" >> "$FICHIER"
    echo "" | mutt -s "Alerte surchauffe, température = ${TEMP}°C" mon_email

# Si la température relevée dépasse 75°, on écrit la valeur en noir dans le fichier, on envoie une alerte par mail et on ordonne l'arrêt du RPi :
elif [ "$TEMP" -ge "75" ];then
    echo "<font face='Courier'>${DATE}" "<strong><font color='black'>${TEMP}°C</font></font></strong><br>" >> "$FICHIER"
    echo "" | mutt -s "Alerte température anormale, arrêt immédiat du pi, température = ${TEMP}°C" mon_email
    sudo shutdown -h now
fi
exit
crontab -e
*/5 * * * * /home/pi/scripts/script_temperature.sh