Hårdvara: Raspberry Pi + 2st ds18b20 tempgivare (kopplade enligt denna sida http://www.cl.cam.ac.uk/freshers/raspbe ... mperature/ )
Mjukvara: Apache2, Gnuplot, Python
Det hela fungerar så här:
1. Python programmet läser av temperaturen och skriver den till textfilen "logg.txt" var 5.e minut, värdena läggs till längst ner på filen med en "timestamp", därefter körs ett Gnuplot-script
2. Gnuplot gör en bildfil i WWW katalogen, som index.html visar.
Det färdiga resultatet ser ut så här:

Pythonprogrammet
Kod: Markera allt
import datetime;
import time;
import commands
#läs givare nummer 1
def readone():
tfile = open("/sys/bus/w1/devices/28-0000040db5a9/w1_slave")
text = tfile.read()
tfile.close()
secondline = text.split("\n")[1]
temperaturedata = secondline.split(" ")[9]
temperature = float(temperaturedata[2:])
temperature = temperature / 1000
return(temperature)
#läs givare nummer två
def readtwo():
tfile = open("/sys/bus/w1/devices/28-0000040de8fc/w1_slave")
text = tfile.read()
tfile.close()
secondline = text.split("\n")[1]
temperaturedata = secondline.split(" ")[9]
temperature = float(temperaturedata[2:])
temperature = temperature / 1000
return(temperature)
#läs in aktuell datum och tid, samt ta bort microsekunderna
def getdate():
date = datetime.datetime.now()
return(unicode(date.replace(microsecond=0)))
#skriv värdena från temperaturgivarna och tidsstämpeln till en textfil, felvärde på -0.062 tas bort
def logg():
file = open("logg.txt", "a")
file.write(str(getdate()))
file.write(" ")
if readone() != -0.062:
file.write(str(readone()))
file.write(" ")
else:
file.write(" ")
if readtwo() != -0.062:
file.write(str(readtwo()))
file.write("\n")
else:
file.write("\n")
def main():
while 1 > 0:
time.sleep(297) #vänta i 297s(ca 5min)
print readone()
print readtwo()
#kör gnuplot scriptet för att generera bilden
commands.getstatusoutput('gnuplot logg.pg')
logg();
main();
Kod: Markera allt
#!/usr/bin/gnuplot
reset
set terminal png size 1250,700
set object 1 rectangle from screen 0,0 to screen 1,1 fillcolor rgb"#E6E6FA" behind
set output '/var/www/bild.png'
set multiplot
set xdata time
set timefmt "%Y-%m-%d %H:%M:%S"
set format x "%H:%M\n%d/%m"
set xlabel "Timme/datum"
set ylabel "Inomhustemperatur"
set yrange [15:28]
set y2label "Utomhustemperatur"
set y2range [-20:10]
set y2tics nomirror
set y2tics
set title "Temperatur"
set key reverse Left outside
set grid
set style data lines
plot "logg.txt" using 1:3 axes x1y1 lw 3 title "inomhus", "" using 1:4 axes x1y2 lw 3 title "utomhus"#
Kod: Markera allt
2013-01-24 19:22:59 23.75 -11.187
2013-01-24 19:28:01 23.687 -11.562
2013-01-24 19:33:04 23.625 -11.312
2013-01-24 19:38:06 23.687 -11.687
2013-01-24 19:43:09 23.687 -11.75
2013-01-24 19:48:11 23.687 -11.5
2013-01-24 19:53:14 23.687 -11.875
2013-01-24 19:58:16 23.625 -12.0
2013-01-24 20:03:19 23.562 -11.812
2013-01-24 20:08:21 23.687 -11.875
2013-01-24 20:13:24 23.812 -12.187
2013-01-24 20:18:26 23.687 -12.375
2013-01-24 20:23:29 23.5 -12.625
2013-01-24 20:28:32 23.625 -12.25