import os import sys import re import time import subprocess import MySQLdb as mdb # MySQL database connection info dbhost="xxx.xxx.xxx.xxx" # remote ip dbport=3306 # default remote port dbuser="user" # mysql username dbpass="pass" # mysql password dbname="database" # mysql database name # initialize sensors os.system('modprobe w1-gpio') os.system('modprobe w1-therm') # exterior 1 sensor exterior1_file = '/sys/bus/w1/devices/28-03168b15a8ff/w1_slave' # exterior 2 sensor exterior2_file = '/sys/bus/w1/devices/28-051692f536ff/w1_slave' # interior 1 sensor interior1_file = '/sys/bus/w1/devices/28-051692dd71ff/w1_slave' # interior 2 sensor interior2_file = '/sys/bus/w1/devices/28-051692e16dff/w1_slave' # database insert def saveToDatabase(exterior1,exterior2,interior1,interior2): con=mdb.Connection(dbhost,dbuser,dbpass,dbname,dbport) currentTime = int(time.time()) # unix timestamp for better sorting with con: cur=con.cursor() cur.execute("INSERT INTO cabn (exterior1, exterior2, interior1, interior2, timestamp) VALUES (%s,%s,%s,%s,%s)",(exterior1, exterior2, interior1, interior2, currentTime)) print "Saved temperature" return "true" # new file process function def read_raw(sensorfile): catdata = subprocess.Popen(['cat',sensorfile], # verify filename stdout=subprocess.PIPE, stderr=subprocess.PIPE) out,err = catdata.communicate() out_decode = out.decode('utf-8') lines = out_decode.split('\n') return lines def read_file(sensorfile): lines = read_raw(sensorfile) while lines[0].strip()[-3:] != 'YES': time.sleep(0.2) lines = read_raw(sensorfile) equals_pos = lines[1].find('t=') if equals_pos != -1: temp_string = lines[1][equals_pos+2:] temp_c = float(temp_string) / 1000.0 # proper decimal place temp_f = temp_c * 9.0 / 5.0 + 32.0 # fahrenheit conversion return temp_f # run it! saveToDatabase(read_file(exterior1_file), read_file(exterior2_file), read_file(interior1_file), read_file(interior2_file))