So, I have a raspberry Pi, and I wanted to chart it’s CPU temp
Ex: temp log hosted on RPI itself | backup if the the RPI is down
To do this I needed to do a few things:
- Log the CPU temp (I’m doing every 5 minutes)
- Prepare the data
- Chart
- Show it to the world
1) Log data via 5 minute cron:
$ cat templog.sh temp=` cat /sys/class/thermal/thermal_zone0/temp| awk -v FS=" " '{print $1/1000""}'` echo "$temp | `date` ">>~/temp.log |
Then a cronjob as normal user
*/5 * * * * bash ~/templog.sh |
now a gnuplot script (plot.pg)
#!/usr/bin/gnuplot reset set nokey plot "/home/pi/temp500" u 0:1 MAX=GPVAL_Y_MAX min_y = GPVAL_DATA_Y_MIN max_y = GPVAL_DATA_Y_MAX f(x) = mean_y fit f(x) '/home/pi/temp500' u 0:1 via mean_y set label 1 gprintf("Min = %g", min_y) at 52, 21 tc rgb "#00FFFF" set label 2 gprintf("Max = %g", max_y) at 0, 21 tc rgb "#FF0000" set label 3 gprintf("Mean = %g", mean_y) at 102, 21 tc lt 2 set terminal png size 1400,400 set style data linespoints set yrange [20:MAX+(MAX*.1)] set grid set style line 1 lt 1 lw 3 pt 3 linecolor rgb "blue" set object 1 rectangle from graph 0,0 to graph 1,1 behind fc rgbcolor "#10000f" lw 0 set pointsize .5 plot \ "/home/pi/temp500" using 0:1 title "cpu temp" pt 5 ps .5 lc rgb "#FF0000" , \ min_y with filledcurves y1=min_y lt 1 lw 2 lc rgb "#00FFFF" , \ max_y with filledcurves y1=max_y lt 2 lw 2 lc rgb "#FF0000", \ mean_y with filledcurves y1=mean_y lt 3 lw 2 lc 2,\ "/home/pi/temp500" using 0:1 title "cpu temp" pt 5 ps .10 lc rgb "#0FfFFF" |
now a script to run it all: (plot.sh)
#!/bin/bash cat /home/pi/temp.log|tail -n 500 > /home/pi/temp500A sed '/-/d' /home/pi/temp500A > /home/pi/temp500 chown pi:pi /home/pi * /root/plot.pg > /var/www/temp.png |