unified callbacks to one generic
parent
a5d3fd4f79
commit
1373046027
55
Logger.py
55
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 #
|
||||
|
|
|
|||
13
all.py
13
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)
|
||||
|
|
|
|||
Loading…
Reference in New Issue