Nu har jag gjort lite ändringar i koden, framförallt att "trasiga" värden inte loggas och att värdena loggas exakt prick varje minut(inte med sleep-fördröjning som tidigare). Problemet verkar vara att flyttals jämförelser i python är opålitliga.
Kod: Markera allt
mport datetime;
import time;
import commands
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
if temperature == -0.062:
return("#error")
else:
return(temperature)
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
if temperature == -0.062:
return("#error")
else:
return(temperature)
def getdate():
date = datetime.datetime.now()
return(unicode(date.replace(microsecond=0)))
def logg():
if readtwo() == -0.062 or readone() == -0.062:
print "error!"
file = open("logg.txt", "a")
file.write("#ERROR")
file.write("\n")
else:
file = open("logg.txt", "a")
file.write(str(getdate()))
file.write(" ")
file.write(str(readone()))
file.write(" ")
file.write(str(readtwo()))
file.write("\n")
def copy():
commands.getstatusoutput('gnuplot logg.pg')
commands.getstatusoutput('gnuplot logg3d.pg')
commands.getstatusoutput('gnuplot logg3h.pg')
commands.getstatusoutput('gnuplot logg1d.pg')
commands.getstatusoutput('gnuplot logg7d.pg')
def main():
while 1 > 0:
d = datetime.datetime.now()
if d.second == 59:
logg();
copy();
main();