Temperature Data Logger and Graphic Output to a GNU-Plot PNG Image

From wiki.linuxonlinehelp.eu
Jump to navigation Jump to search

Setup Raspberry Pi with BME280 Sensor (triple Sensor) and USB Stick

  • python 2.7
  • bme280 drivers and software installed
  • gnuplot Metapackage installed

Sensor Log Script:

#!/bin/bash
date=$(date +"%Y-%m-%d %H:%M")

cd /home/pi/bme280/
sudo python sensor-bme280.py|sed -n 3,5p > /tmp/test.txt  #read sensor 

TEMP=$(cat /tmp/test.txt|grep Temp|grep Temp|cut -d":" -f2|cut -d"C" -f1)
HUM=$(cat /tmp/test.txt|grep Hum|grep Hum|cut -d":" -f2|cut -d"%" -f1)
BARO=$(cat /tmp/test.txt|grep Press|cut -d":" -f2|cut -d"h" -f1)
echo "$date;$TEMP;$BARO ;$HUM" >> /usbdisk/weatherdata.csv # create easy csv data file
exit 0

Remark: Run the Read-Script by cron every 5-10 Minutes

Plot CSV to Graphic: gnuplot Config:

/usbdisk/config.gnuplot

set datafile separator ";"
set terminal png size 1280,800
set title "Weatherdata"
set ylabel "Celsius"
set xlabel "Time"
set xdata time
set timefmt '%Y-%m-%d %H:%M'
set xrange ['2017-11-01 00:00':'2017-11-30 00:00']
#set xrange ['0':'10000']
set yrange ['-50':'+70']
set format x "%Y/%m/%d"
set key left top
set grid
plot "/usbdisk/weatherdata.csv" using 1:2 with lines lw 2 lt 3 title 'Temperature'

Generate with:

gnuplot < config.gnuplot  >  /var/www/html/temperature-history.png

Remark: Change Rows "using 1:2 to 2:3" for other Images for Air Pressure and Humitdity