diff --git a/Logger.py b/Logger.py index dd5cd2a..167e702 100644 --- a/Logger.py +++ b/Logger.py @@ -7,6 +7,24 @@ import traceback from timeFunctions import * import xml.etree.ElementTree as ET +#class SensorType(Enum): +class SensorType: + none = 0 + temp = 1 + humi = 2 + ambi = 3 + baro = 4 + rain = 5 + +sensorValues=[ + (0,''), + (100.0, '°C'), + (10.0, '%RH'), + (10.0, 'Lux'), + (1000, 'mbar'), + (2.5, 'l/qm') +] + class Logger(object): def __init__(self,names, temperature_config, log, records): self.names = names @@ -39,34 +57,19 @@ class Logger(object): valuelog.close() ########################################## - # callbacks for temp1+2 # + # generic callback # ########################################## - def cb_temperature(self,value,sensor): - if(self.temp_rise(self.prev_temps[sensor],value,sensor)): + def cb_generic(self,value, sensor, type): + if(type == SensorType.temp): + if(self.temp_rise(self.prev_temps[sensor],value,sensor)): + self.write_value(value,sensor) + self.prev_temps[sensor]=value + elif (type == SensorType.none): + return + else: self.write_value(value,sensor) - self.prev_temps[sensor]=value - print(self.names[sensor] +': ' + str(value/100.0) + ' °C,' + str(time.ctime())) - - ########################################### - # callback for humidity1 # - ########################################### - def cb_humidity(self,rh,sensor): - self.write_value(rh,sensor) - print(self.names[sensor] +': '+ str(rh/10.0) + ' %RH,' + str(time.ctime())) - - ########################################### - # callback for ambi-light1+2 # - ########################################### - def cb_illuminance(self,illuminance,sensor): - self.write_value(illuminance,sensor) - print(self.names[sensor] +': '+ str(illuminance/10.0) + ' Lux,' + str(time.ctime())) - - ########################################### - # callback for barometer1 # - ########################################### - def cb_pressure(self,pressure,sensor): - self.write_value(pressure,sensor) - print(self.names[sensor] +": "+str(pressure/1000)+ "mbar"+str(time.ctime())) + unit=sensorValues[type] + print(self.names[sensor] +': ' + str(value/unit[0]) + ' '+unit[1]+', ' + str(time.ctime())) ########################################### # exception logging # diff --git a/all.py b/all.py index 6d65eb3..165b66f 100644 --- a/all.py +++ b/all.py @@ -1,14 +1,6 @@ #!/usr/bin/env python3 # -*- coding: utf-8 -*- -#class SensorType(Enum): -class SensorType: - none = 0 - temp = 1 - humi = 2 - ambi = 3 - baro = 4 - rain = 5 try: from tinkerforge.ip_connection import IPConnection @@ -26,6 +18,7 @@ import time from functools import partial from Logger import Logger +from Logger import SensorType #HOST = "localhost" HOST = "192.168.2.30" @@ -58,7 +51,6 @@ records='records' lockname=locks+"/all.lock" log=open(logs+"/all.log",'a') -noop_cb = lambda value,sensor:0 if __name__ == "__main__": if not os.path.exists(lockname): @@ -67,7 +59,6 @@ if __name__ == "__main__": lock.close() # lock obtained logger=Logger(names, (tempSensors, prev_temps_default, tempmaxdiff), log, records) - callbacks=[noop_cb, logger.cb_temperature, logger.cb_humidity, logger.cb_illuminance, logger.cb_pressure, noop_cb] try: ipcon = IPConnection() # connect @@ -76,7 +67,7 @@ if __name__ == "__main__": log.flush() connected=[] for i,sensor in enumerate(SENSORS): - callback=partial(callbacks[sensor[2]], sensor=i) + callback=partial(logger.cb_generic, sensor=i, type=sensor[2]) if(sensor[2] == SensorType.temp): obj = Temperature(sensor[1], ipcon) obj.set_temperature_callback_period(cbtimetemp)