[gnuplot] Un petit script de temperature

Questions et astuces concernant l'installation et la configuration d'archlinux
pguillot
Hankyu
Messages : 21
Inscription : dim. 10 févr. 2013, 18:38
Localisation : Montendre (17)

[gnuplot] Un petit script de temperature

Message par pguillot »

Bonjour à tous.

Ne voulant pas de système comme munin ou autre pour monitorer la température, j'ai décidé de chercher comment créer deux scripts qui fonctionneraient de concert :

- Le premier pour récupérer les températures via cron et les stocker dans les fichiers texte
- Le deuxième pour lire ces températures par gnuplot et les afficher sur un jolie graphique comme celui la : http://minorstuff.files.wordpress.com/2 ... pu-hdd.png

Voici donc le premier script :

Code : Tout sélectionner

# Pour nvidi-settings
export DISPLAY=:0.0
logfile=~/system-monitoring/log/temps.log
timestamp=$(date +%s)


# Récuperation des valeurs
tempGpu=$(nvidia-settings -t -q gpucoretemp)
tempHdd=$(nc localhost 7634 | cut -c34-35)
tempCpu=$(sensors |grep Physical | cut -c18-19)
tempMB=$(( $(cat /sys/devices/platform/nct6775.656/temp2_input) / 1000))

# Ajout des valeurs dans le fichier
echo "${timestamp} ${tempGpu} ${tempHdd} ${tempCpu} ${tempMB} " >> ${logfile}
Quelques explications peut-être :

- Le fichier de log est stocké dans un fichier texte de votre convenance, pensez à changer le chemin suivant vos besoins.
- Chaque variable va correspondre à une valeur de température. J'ai une i5 et une carte mère asus P8Z77-V ainsi qu'un disque dur Western Digital et une carte graphique NVIDIA.
- Chaque valeur récupérée est ensuite stockée dans le fichier de log sous forme de ligne, à la fin, vous vous trouvez avec un fichier qui ressemble à cela :

Code : Tout sélectionner

1389979741 28 27 39 30 
1389979801 28 27 34 29 
1389979861 28 27 34 29 
1389979921 27 27 32 29 
1389979981 29 27 32 29 
1389980041 28 27 38 29 
1389980101 28 27 32 28 
1389980161 27 27 30 28 
1389980221 27 27 31 28 
1389980281 27 27 31 28
Pour exécuter le script, il ne reste plus qu'a le mettre en cron dans la crontab de l'utilisateur :

Code : Tout sélectionner

* * * * * /bin/bash /home/pierre/system-monitoring/temps.sh
Attendez un peu pour que le script puisse récupérer les valeurs. On peut alors générer le graphique! Voici le script :

Code : Tout sélectionner

# Nombre d'heures à afficher
HOURS=2
# Choix du timezone
TZ=2
# Calcul de la date de début
NOW=$(date +%s)
BEFORE=$((${NOW}-60*60*$HOURS+(${TZ}*3600)))


gnuplot -persist <<-EOP
	#set terminal gif small size 800, 500 transparent
	set terminal svg size 1200, 700 fname 'Verdana' fsize 10
	set output "temps.svg"
	set time
	t0 = $((${TZ}*3600))
	set xtics rotate
	set xdata time
	set timefmt "%s"
	set format x "%H:%M le %d/%m"
	set yrange ["15":"62"]
	set xrang [$BEFORE-946684800:]
	set grid
	set title "Computer Temperature"
	set ylabel "Degrees Celsius"
	set xlabel "\n1 minute interval"
	plot '/home/pierre/system-monitoring/log/temps.log' using (\$1+t0):2 title "GPU" with lines, '' using (\$1+t0):3 title "HDD" with lines, '' using (\$1+t0):4 title "CPU" with lines, '' using (\$1+t0):5 title "M/B" with lines
	set key below
	set output
EOP
Et voilà! Voici un exemple de ce que cela peut donner, il s'agit d'un fichier SVG à l'origine (que vous pouvez modifier dans le script de génération) mais pour être stocké sur le net, je l'ai converti en png (J'ai aussi utilisé ce script pour la vitesse des ventilateurs qui sont tous PWM) :

Image

(Bon ok, au début je jouais à Metro Last Light, puis ensuite à estranged act 1, on remarque le Source Engine du second semble exiger plus de ressources compte-tenu de la température plus élevée).

N'hésitez pas à me donner vos remarque et/ou amélioration! De mon côté, un problème subsiste. Si vous éteignez votre ordinateur, les données ne sont pas enregistrées (c'est normal), mais quand vous le rallumez et que des données sont à nouveau enregistrées, lors de la génération, vous avez le dernier point et le nouveau point (depuis l'allumage du PC) qui sont relié par une longue ligne pas très esthétique. Si quelqu'un sait comment l'éviter...

Enfin, voici les sources :

http://talk.maemo.org/showthread.php?p=496931
http://www.jefftk.com/news/2011-06-20
http://blog.petitepomme.net/post/290538 ... ng-gnuplot
Répondre