Installerade först python-rrdtool, python-supervisor och python-webpy med apt-get.
Sen en fil som loggar temp från en ds18s20. (Skapa en katalog under /home/pi som heter rrd först):
Kod: Markera allt
#!/usr/bin/env python
# -*- coding: utf-8 -*-
#owtemp.py. This script prints the measured temperature in C and updates every minute.
import time
import os
import rrdtool
rrd_file_name=os.path.join("/","home","pi","rrd","rrdfil.rrd")
file_name=os.path.join("/","mnt","1wire","10.BA6B13020800","temperature") #Byt till egen adress på ds18s20 givare här
while 1:
file_object=open(file_name,'r')
line=file_object.read()
#print(line+'°C')
rrdtool.update(rrd_file_name,'N:'+line)
last = rrdtool.last(rrd_file_name)
#print('Senaste: '+ time.strftime('%Y-%m-%d %H:%M',time.localtime(last)))
file_object.close()
time.sleep(60)
Kod: Markera allt
#!/usr/bin/env python
# -*- coding: utf-8 -*-
#owtemp_graph.py. RRDTOOL graph.
import os
import rrdtool
import tempfile
import locale
import web
locale.setlocale(locale.LC_ALL, 'sv_SE.UTF-8')
def makeGraph():
rrd_file_name=os.path.join("/","home","pi","rrd","rrdfil.rrd")
fd,path = tempfile.mkstemp('.png')
rrdtool.graph('./images/3h.png',
'--imgformat', 'PNG',
'--width', '540',
'--height', '100',
'--start','end-3h',
'--font','DEFAULT:0:arial',
'--font','WATERMARK:8:arial',
'--color', 'MGRID#00BFFFAA',
'--color', 'ARROW#000000',
'--vertical-label', 'Temp [°C]',
'--title', 'En liten titel (Tre timmar)',
'--watermark','Egen vattenstämpel',
'DEF:utetemp=./rrd/rrdfil.rrd:utetemp:AVERAGE',
'AREA:utetemp#87CEFA',
'COMMENT:\t\t\tNu Medel Max Min\\n',
'LINE1:utetemp#1E90FF:Ute\t\t',
'GPRINT:utetemp:LAST:%6.1lf',
'GPRINT:utetemp:AVERAGE:%6.1lf',
'GPRINT:utetemp:MAX:%6.1lf',
'GPRINT:utetemp:MIN:%6.1lf\\n')
urls = (
'/', 'index',
'/images/(.*)', 'images' #this is where the image folder is located....
)
class index:
def GET(self):
makeGraph()
webString = "<html>\n<head></head>\n<body>\n"
webString += " <h1>Temp</h1>\n <img src='/images/3h.png' border=0>\n"
webString += "</body>\n</html>"
return webString
class images:
def GET(self,name):
ext = name.split(".")[-1] # Gather extension
cType = {
"png":"images/png",
"jpg":"images/jpeg",
"gif":"images/gif",
"ico":"images/x-icon" }
if name in os.listdir('images'): # Security
web.header("Content-Type", cType[ext]) # Set the Header
return open('images/%s'%name,"rb").read() # Notice 'rb' for reading images
else:
raise web.notfound()
if __name__ == "__main__":
app = web.application(urls, globals())
app.run()
Kod: Markera allt
[program:owtemp]
command=/usr/bin/python /home/pi/owtemp.py
directory=/home/pi
autostart=true
autorestart=true
startretries=3
stderr_logfile=/var/log/owtemp/owtemp.err.log
stdout_logfile=/var/log/owtemp/owtemp.out.log
user=root
[program:owtemp_web]
command=/usr/bin/python /home/pi/owtemp_web.py 80
directory=/home/pi
autostart=true
autorestart=true
startretries=3
stderr_logfile=/var/log/owtemp/owtemp_web.err.log
stdout_logfile=/var/log/owtemp/owtemp_web.out.log
user=root
Det enda jag inte fått att fungera är att starta owfs med supervisor. Gissar att jag får lägga upp en autostart i /etc/inet.d för den även om målet var att undvika sh-skript...
Nästa steg blir att ta in 1wire via GPIO isf med USB.
/M