Simple plots using data collected from the new Raspberry Pi Sense HAT

On the Raspberry Pi…

The (crappy) Python code to write the data

#!/usr/bin/python3
import csv
import datetime
import time
from sense_hat import SenseHat

sense = SenseHat()
sense.set_rotation(180)

msleep = lambda x: time.sleep(x / 1000.0)

t = sense.get_temperature()
p = sense.get_pressure()
h = sense.get_humidity()

t = round(t, 1)
p = round(p, 1)
h = round(h, 1)

# This bit just flashes the LED matrix a few times to indicate the readings are to follow
sense.clear([255,0,0])
msleep(200)
sense.clear([0,0,0])
msleep(200)
sense.clear([255,0,0])
msleep(300)
sense.clear([0,0,0])
msleep(300)
sense.clear([255,0,0])
msleep(400)
sense.clear([0,0,0])
msleep(400)

msg = "T: %s   P: %s   H: %s" % (t,p,h)

sense.show_message(msg, scroll_speed=0.07, text_colour=(0,0,200))

with open('/data/sense/env.csv', 'a', newline='') as fp:
    a = csv.writer(fp, delimiter=',')
    data = [["sense",time.strftime("%d/%m/%Y"),time.strftime("%H:%M:%S"),t,p,h]]
    a.writerows(data)

CRON the Python program to run every 5 minutes

$ crontab -e

# m h  dom mon dow   command
*/5 * * * * /data/sense/env.py

Data Sample from env.csv

 # head /data/sense/env.csv
Sensor,Date,Time,Temperature,Pressure,Humidity
sense,05/09/2015,21:55:14,29.7,1027.9,33.4
sense,05/09/2015,22:00:14,29.8,1028.0,32.5
sense,05/09/2015,22:05:15,29.8,1028.0,33.5
sense,05/09/2015,22:10:14,30.0,1028.0,34.2
sense,05/09/2015,22:15:14,29.7,1028.0,32.9
sense,05/09/2015,22:20:15,29.6,1028.0,32.8
sense,05/09/2015,22:25:15,29.5,1028.0,33.3
sense,05/09/2015,22:30:14,29.6,1028.1,32.8
sense,05/09/2015,22:35:15,29.2,1028.1,33.4

In RStudio…

Get data from csv

envdata<-read.csv("env-2015.csv")

Pressure

boxplot(Pressure ~ factor(Date, levels=unique(Date)), data=envdata,ylim=c(990, 1040))
title(main="Pressure, Ingol Preston", 
      xlab="Date", 
      ylab="Pressure (mb)")

Pressure (no outliers)

boxplot(Pressure ~ factor(Date, levels=unique(Date)), data=envdata,ylim=c(990, 1040), outline=FALSE)
title(main="Pressure, Ingol Preston", 
      xlab="Date", 
      ylab="Pressure (mb)")

Temperature

boxplot(Temperature~factor(Date, levels=unique(Date)),data=envdata, ylim=c(22, 35))
title(main="Temperature, Ingol Preston", 
      xlab="Date", 
      ylab="Temperature")

Temperature (no outliers)

boxplot(Temperature~factor(Date, levels=unique(Date)),data=envdata, ylim=c(22, 35), outline=FALSE)
title(main="Temperature, Ingol Preston", 
      xlab="Date", 
      ylab="Temperature")

Humidity

boxplot(Humidity~factor(Date, levels=unique(Date)),data=envdata, ylim=c(22, 50))
title(main="Humidity, Ingol Preston", 
      xlab="Date", 
      ylab="Humidity")

Humidity (no outliers)

boxplot(Humidity~factor(Date, levels=unique(Date)),data=envdata, ylim=c(22, 50), outline=FALSE)
title(main="Humidity, Ingol Preston", 
      xlab="Date", 
      ylab="Humidity")

head envdata

head(envdata, 20)
##    Sensor       Date     Time Temperature Pressure Humidity
## 1   sense 05/09/2015 21:55:14        29.7   1027.9     33.4
## 2   sense 05/09/2015 22:00:14        29.8   1028.0     32.5
## 3   sense 05/09/2015 22:05:15        29.8   1028.0     33.5
## 4   sense 05/09/2015 22:10:14        30.0   1028.0     34.2
## 5   sense 05/09/2015 22:15:14        29.7   1028.0     32.9
## 6   sense 05/09/2015 22:20:15        29.6   1028.0     32.8
## 7   sense 05/09/2015 22:25:15        29.5   1028.0     33.3
## 8   sense 05/09/2015 22:30:14        29.6   1028.1     32.8
## 9   sense 05/09/2015 22:35:15        29.2   1028.1     33.4
## 10  sense 05/09/2015 22:40:14        29.2   1028.0     33.6
## 11  sense 05/09/2015 22:45:15        29.3   1028.1     33.9
## 12  sense 05/09/2015 22:50:14        29.5   1028.0     33.3
## 13  sense 05/09/2015 22:55:14        29.2   1028.0     33.5
## 14  sense 05/09/2015 23:00:15        29.5   1028.0     33.3
## 15  sense 05/09/2015 23:05:15        29.4   1028.0     33.6
## 16  sense 05/09/2015 23:10:15        29.7   1028.0     32.9
## 17  sense 05/09/2015 23:15:14        29.6   1028.1     33.1
## 18  sense 05/09/2015 23:20:16        29.5   1028.0     33.8
## 19  sense 05/09/2015 23:25:17        29.5   1028.0     33.2
## 20  sense 05/09/2015 23:30:16        29.5   1027.9     32.8

tail envdata

tail(envdata, 20)
##       Sensor       Date     Time Temperature Pressure Humidity
## 32178  sense 26/12/2015 14:30:17        32.6   1007.2     37.9
## 32179  sense 26/12/2015 14:35:17        32.8   1007.2     36.6
## 32180  sense 26/12/2015 14:40:16        32.7   1007.2     36.7
## 32181  sense 26/12/2015 14:45:17        32.6   1007.2     36.5
## 32182  sense 26/12/2015 14:50:34        32.6   1007.0     37.3
## 32183  sense 26/12/2015 14:55:34        32.8   1007.0     36.4
## 32184  sense 26/12/2015 15:00:33        32.5   1007.0     36.6
## 32185  sense 26/12/2015 15:03:28        32.8   1006.8     36.7
## 32186  sense 26/12/2015 15:05:03        32.9   1006.8     36.6
## 32187  sense 26/12/2015 15:10:03        32.8   1006.9     36.3
## 32188  sense 26/12/2015 15:15:03        32.8   1006.8     36.9
## 32189  sense 26/12/2015 15:20:03        32.7   1006.7     35.7
## 32190  sense 26/12/2015 15:25:03        32.8   1006.7     36.4
## 32191  sense 26/12/2015 15:30:02        32.8   1006.7     35.7
## 32192  sense 26/12/2015 15:35:03        32.7   1006.6     35.7
## 32193  sense 26/12/2015 15:40:03        32.9   1006.7     36.2
## 32194  sense 26/12/2015 15:45:03        33.1   1006.8     35.6
## 32195  sense 26/12/2015 15:50:03        32.8   1006.6     35.2
## 32196  sense 26/12/2015 15:55:03        32.9   1006.4     35.4
## 32197  sense 26/12/2015 16:00:03        32.7   1006.5     35.2

envdata summary

summary(envdata[4:6])
##   Temperature       Pressure       Humidity    
##  Min.   :23.40   Min.   :   0   Min.   :22.20  
##  1st Qu.:29.50   1st Qu.:1008   1st Qu.:33.10  
##  Median :30.50   Median :1015   Median :35.20  
##  Mean   :30.48   Mean   :1015   Mean   :35.37  
##  3rd Qu.:31.50   3rd Qu.:1023   3rd Qu.:37.60  
##  Max.   :34.50   Max.   :1040   Max.   :48.90