unified callbacks to one generic

master
agp8x 2014-01-17 17:56:31 +01:00
parent a5d3fd4f79
commit 1373046027
2 changed files with 31 additions and 37 deletions

View File

@ -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):
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
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()))
elif (type == SensorType.none):
return
else:
self.write_value(value,sensor)
unit=sensorValues[type]
print(self.names[sensor] +': ' + str(value/unit[0]) + ' '+unit[1]+', ' + str(time.ctime()))
###########################################
# exception logging #

13
all.py
View File

@ -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)