import re
import datetime
import time

def read_one_thermo(filename):
    try:
        NO_OF_DECIMALS = 3
        for x in range(0, 3):
                textfile = open(filename, 'r')
                filetext = textfile.read()
                textfile.close()
                if 'YES' in filetext:
                        matches = re.findall("t=(\-?)(\d+)", filetext)
                        sign = -1 if matches[0][0] == '-' else 1
                        whole_reading = matches[0][1]
                        first_part = matches[0][1][0:-NO_OF_DECIMALS]
                        second_part = matches[0][1][-NO_OF_DECIMALS:]
                        first_part = '0' if first_part == '' else first_part
#                        with open("/mnt/zoblakdata/w1_sensor_log_sent","a") as log:
#                                log.write(datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S') + ' | filename: ' + filename + ' | reading: ' + str(x+1) + '\n' )
#                                log.write(filetext)
#                                log.write("--------\n")
                        result = (int(first_part)  +  (int(second_part) / (10.0 ** NO_OF_DECIMALS) )) * sign
                        if result >= -30.0 and result <= 60.0:
                                return result
#                if x == 2:
#                        with open("/mnt/zoblakdata/w1_sensor_log_probable_exception","a") as log2:
#                                log2.write(datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S') + ' | filename: ' + filename + ' | reading: ' + str(x+1) + '\n' )
#                                log2.write(filetext)
#                                log2.write("--------\n")
                time.sleep(5)
        print 'error'
        print e
        return -101.0
    except Exception as e:
#        with open("/mnt/zoblakdata/w1_sensor_log_exception","a") as log3:
#                log3.write(datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S') + ' - exception!\n')
#                log3.write("--------\n")
        print 'errror'
        print e
        return -100.0

def read_many_thermo(filenames):
    result = []
    for filename in list(filenames):
        if filename is None:
            continue
        result.append(read_one_thermo(filename))
    return result

