def main():
	print "Launching House Fan Controller..."

	CheckEquipment()

	while 1:
		curRPiPressure = RPi_Pressure.read_avg_pressure(10)
		time.sleep(0.1)
Beispiel #2
0
def RPiTimer(*args):

	try:

		print "RPiTimer"

		global logger
		#global RPiDataPoints
		global CHARTTIME
		global tRPiPeriod
	
		device_file = args[0]
		db = args[1]

		#debug
		#print "RPiDataPoints: "
		#print RPiDataPoints
		#debug

		#Get RaspberryPi temp
		curRPiTemp = None
		curRPiPressure = None
		try:
			#print "RPi temp"
			curRPiTemp = RPi_Temp.read_temp(device_file, 5)
			#print "RPi pressure"
			curRPiPressure = RPi_Pressure.read_pressure()
			if (curRPiPressure < 900 or curRPiPressure > 1100): curRPiPressure = None
		except Exception, e:
			logger.error('Failed to read Raspberry Pi', exc_info=True)



		if (curRPiTemp != None and curRPiPressure != None):
			print (strftime("[%H:%M:%S]: ", localtime()) + "Upstair Temp\t" + str(curRPiTemp))
			logger.info(strftime("[%H:%M:%S]: ", localtime()) + "Upstair Temp\t" + str(curRPiTemp))

			try:
				db = MySQLdatabase.Connect(mysql_host, mysql_login, mysql_pw, mysql_db)
				MySQLdatabase.InsertData(db, 'sensordata', '2nd Floor', 'Raspberry Pi', 'Current', 'Temperature', curRPiTemp, 'F')
				MySQLdatabase.InsertData(db, 'sensordata', '2nd Floor', 'Raspberry Pi', 'Current', 'Pressure', curRPiPressure, 'mbar')
				MySQLdatabase.Close(db)

				#RPiDataPoints.append((datetime.now(), curRPiTemp))
				#shorten array to fit chart
				#if (len(RPiDataPoints) > CHARTTIME/tRPiPeriod):
				#	index = len(RPiDataPoints) - CHARTTIME/tRPiPeriod
				#	RPiDataPoints = RPiDataPoints[index:]	
				#data = [DataPoint(datetime.now(), curRPiTemp)]
				#tempo_client.write_key("temp3", data)
			except:
				print (strftime("[%H:%M:%S]: EXCEPTION ", localtime()) + str(sys.exc_info()[0]))
				logger.error(strftime("[%H:%M:%S]: EXCEPTION ", localtime()) + str(sys.exc_info()[0]), exc_info=True)
Beispiel #3
0
def RPiTimer(*args):

    try:

        print "RPiTimer"

        global logger
        #global RPiDataPoints
        global CHARTTIME
        global tRPiPeriod

        device_file = args[0]
        db = args[1]

        #debug
        #print "RPiDataPoints: "
        #print RPiDataPoints
        #debug

        #Get RaspberryPi temp
        curRPiTemp = None
        curRPiPressure = None
        try:
            #print "RPi temp"
            curRPiTemp = RPi_Temp.read_temp(device_file, 5)
            #print "RPi pressure"
            curRPiPressure = RPi_Pressure.read_pressure()
            if (curRPiPressure < 900 or curRPiPressure > 1100):
                curRPiPressure = None
        except Exception, e:
            logger.error('Failed to read Raspberry Pi', exc_info=True)

        if (curRPiTemp != None and curRPiPressure != None):
            print(
                strftime("[%H:%M:%S]: ", localtime()) + "Upstair Temp\t" +
                str(curRPiTemp))
            logger.info(
                strftime("[%H:%M:%S]: ", localtime()) + "Upstair Temp\t" +
                str(curRPiTemp))

            try:
                db = MySQLdatabase.Connect(mysql_host, mysql_login, mysql_pw,
                                           mysql_db)
                MySQLdatabase.InsertData(db, 'sensordata', '2nd Floor',
                                         'Raspberry Pi', 'Current',
                                         'Temperature', curRPiTemp, 'F')
                MySQLdatabase.InsertData(db, 'sensordata', '2nd Floor',
                                         'Raspberry Pi', 'Current', 'Pressure',
                                         curRPiPressure, 'mbar')
                MySQLdatabase.Close(db)

                #RPiDataPoints.append((datetime.now(), curRPiTemp))
                #shorten array to fit chart
                #if (len(RPiDataPoints) > CHARTTIME/tRPiPeriod):
                #	index = len(RPiDataPoints) - CHARTTIME/tRPiPeriod
                #	RPiDataPoints = RPiDataPoints[index:]
                #data = [DataPoint(datetime.now(), curRPiTemp)]
                #tempo_client.write_key("temp3", data)
            except:
                print(
                    strftime("[%H:%M:%S]: EXCEPTION ", localtime()) +
                    str(sys.exc_info()[0]))
                logger.error(strftime("[%H:%M:%S]: EXCEPTION ", localtime()) +
                             str(sys.exc_info()[0]),
                             exc_info=True)
Beispiel #4
0
def initSensors(lock, logger=None):

    # Init MySQLdb
    db = MySQLdatabase.Connect(mysql_host, mysql_login, mysql_pw, mysql_db)
    if (db == None):
        print(
            strftime("[%H:%M:%S]: Error: Cannot connect to MySQL database",
                     localtime()))
        if logger:
            logger.error(strftime(
                "[%H:%M:%S]: Error: Cannot connect to MySQL database",
                localtime()),
                         exc_info=True)
        return False

    # Arduino Temp Sensor
    qIn_Arduino = Queue.Queue()
    qOut_Arduino = Queue.Queue()

    if ArduinoTempEnable:
        arduino_temp = Arduino_Temp.Arduino_Temp(lock, qIn_Arduino,
                                                 qOut_Arduino, logger)

        # Initialize Arduino_Temp module
        if not arduino_temp.init():
            print(
                strftime("[%H:%M:%S]: Error: initializing Arduino_Temp",
                         localtime()))
            if logger:
                logger.error(strftime(
                    "[%H:%M:%S]: Error: initializing Arduino_Temp",
                    localtime()),
                             exc_info=True)
            return False

        #arduino_temp.run()					# run on main thread
        arduino_temp.start()  # start thread

        #sleep(5)

    # ForecastIO Data
    qIn_ForecastIO = Queue.Queue()
    qOut_ForecastIO = Queue.Queue()

    if ForecastIOEnable:
        forecastio = ForecastIO.ForecastIO(lock, qIn_ForecastIO,
                                           qOut_ForecastIO, logger)

        # Initialize ForecastIO module
        if not forecastio.init():
            print(
                strftime("[%H:%M:%S]: Error: initializing ForecastIO",
                         localtime()))
            if logger:
                logger.error(strftime(
                    "[%H:%M:%S]: Error: initializing ForecastIO", localtime()),
                             exc_info=True)
            return False

        #forecastio.run()					# run on main thread
        forecastio.start()  # start thread

        #sleep(5)

    # Nest Sensor Data
    qIn_NestSensor = Queue.Queue()
    qOut_NestSensor = Queue.Queue()

    if NestSensorEnable:
        nestsensor = NestSensor.NestSensor(lock, qIn_NestSensor,
                                           qOut_NestSensor, logger)

        # Initialize NestSensor module
        if not nestsensor.init():
            print(
                strftime("[%H:%M:%S]: Error: initializing NestSensor",
                         localtime()))
            if logger:
                logger.error(strftime(
                    "[%H:%M:%S]: Error: initializing NestSensor", localtime()),
                             exc_info=True)
            return False

        #nestsensor.run()					# run on main thread
        nestsensor.start()  # start thread

        #sleep(5)

    # RPi Pressure Sensor
    qIn_RPiPressure = Queue.Queue()
    qOut_RPiPressure = Queue.Queue()

    if RPiPressEnable:
        rpipressure = RPi_Pressure.RPi_Pressure(lock, qIn_RPiPressure,
                                                qOut_RPiPressure, logger)

        # Initialize RPi Pressure module
        if not rpipressure.init():
            print(
                strftime("[%H:%M:%S]: Error: initializing RPi Pressure",
                         localtime()))
            if logger:
                logger.error(strftime(
                    "[%H:%M:%S]: Error: initializing RPi Pressure",
                    localtime()),
                             exc_info=True)
            return False

        #rpipressure.run()					# run on main thread
        rpipressure.start()  # start thread

        #sleep(5)

    # RPi Temp Sensor
    qIn_RPiTemp = Queue.Queue()
    qOut_RPiTemp = Queue.Queue()

    if RPiTempEnable:
        rpi_temp = RPi_Temp.RPi_Temp(lock, qIn_RPiTemp, qOut_RPiTemp, logger)

        # Initialize RPi_Temp module
        if not rpi_temp.init():
            print(
                strftime("[%H:%M:%S]: Error: initializing RPi Temp",
                         localtime()))
            if logger:
                logger.error(strftime(
                    "[%H:%M:%S]: Error: initializing RPi Temp", localtime()),
                             exc_info=True)
            return False

        #rpi_temp.run()					# run on main thread
        rpi_temp.start()  # start thread

        #sleep(5)

    return True