#!/usr/bin/env python# coding=utf-8"""Author: Christian AshbySeptember 2016@babelmonkThanks to: http://raspbrew.tumblr.com/post/44456213110/reading-temperatures-on-a-raspberry-pi-using"""fromthreadingimportThreadimporttimeimportsysclassTemp(Thread):""" A class for getting the current temp of a DS18B20 """def__init__(self,sensorid=None,sensordir='/sys/bus/w1/devices',group=None,target=None,name=None,verbose=None):super(Temp,self).__init__(group=group,target=target,name=name,verbose=verbose)self.sensorid=sensoridself.sensordir=sensordirself.currentTemp=-999self.correctionFactor=0self.enabled=Trueself.error=Falseself.ready=Falseself.daemon=Truedefrun(self):whileTrue:ifself.isEnabled():filename=self.sensordir+"/"+self.sensorid+"/w1_slave"try:f=open(filename,'r')exceptIOErrorase:sys.stderr.write("Error: File "+filename+" does not exist.\n")self.error=Truereturnlines=f.readlines()crcLine=lines[0]tempLine=lines[1]result_list=tempLine.split("=")temp=float(result_list[-1])/1000# temp in Celciustemp=temp+self.correctionFactor# correction factor#if you want to convert to fahrenheit, uncomment this line#temp = (9.0/5.0)*temp + 32 ifcrcLine.find("NO")>-1:temp=-999else:self.ready=Trueself.currentTemp=temp#print "Current: " + str(self.currentTemp) + " " + str(self.sensorid)time.sleep(1)#returns the current temp for the probedefgetCurrentTemp(self):returnself.currentTemp#setter to enable this probedefsetEnabled(self,enabled):self.enabled=enabled#getter defisEnabled(self):returnself.enabled#getter for ready checkdefisReady(self):returnself.ready#getter for error checkdefisError(self):returnself.error
Comments (0)
HTTPSSSH
You can clone a snippet to your computer for local editing.
Learn more.