new structure to store sensor properties
parent
1395675600
commit
e16b27e448
|
|
@ -11,6 +11,7 @@ class Logger(object):
|
|||
def __init__(self,names, temperature_config, log, records):
|
||||
self.names = names
|
||||
self.temp_sensors = temperature_config[0]
|
||||
self.temp_prev_default=temperature_config[1]
|
||||
self.prev_temps =[]
|
||||
for i in range(self.temp_sensors):
|
||||
self.prev_temps.append(temperature_config[1])
|
||||
|
|
@ -19,7 +20,7 @@ class Logger(object):
|
|||
self.records = records
|
||||
|
||||
def temp_rise(self,old,new,sensor):
|
||||
if(old==20000):
|
||||
if(old==self.temp_prev_default):
|
||||
return True
|
||||
if((old-new)>self.temp_max_diff or (new-old)>self.temp_max_diff):
|
||||
self.log.write('error checking temp '+sensor+';prev('+str(old)+');cur('+str(new)+'); ... @'+time.ctime()+"\n")
|
||||
|
|
|
|||
110
all.py
110
all.py
|
|
@ -1,6 +1,24 @@
|
|||
#!/usr/bin/env python
|
||||
#!/usr/bin/env python3
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
#class SensorType(Enum):
|
||||
class SensorType:
|
||||
temp = 1
|
||||
humi = 2
|
||||
ambi = 3
|
||||
baro = 4
|
||||
rain = 5
|
||||
none = -1
|
||||
|
||||
try:
|
||||
from tinkerforge.ip_connection import IPConnection
|
||||
from tinkerforge.bricklet_temperature import Temperature
|
||||
from tinkerforge.bricklet_humidity import Humidity
|
||||
from tinkerforge.bricklet_ambient_light import AmbientLight
|
||||
from tinkerforge.bricklet_barometer import Barometer
|
||||
except ImportError:
|
||||
print("package 'tinkerforge' not installed, canceling")
|
||||
raise
|
||||
|
||||
import os.path
|
||||
import os
|
||||
|
|
@ -12,19 +30,17 @@ from Logger import Logger
|
|||
HOST = "192.168.2.30"
|
||||
PORT = 4223
|
||||
|
||||
UID = ["7B5", "8js", "7RY", "8Fw", "8DJ", "bB7"]
|
||||
NAMES = ["temp1", "temp2", "humi1", "ambi1", "ambi2", "baro1"]
|
||||
|
||||
|
||||
try:
|
||||
from tinkerforge.ip_connection import IPConnection
|
||||
from tinkerforge.bricklet_temperature import Temperature
|
||||
from tinkerforge.bricklet_humidity import Humidity
|
||||
from tinkerforge.bricklet_ambient_light import AmbientLight
|
||||
from tinkerforge.bricklet_barometer import Barometer
|
||||
except ImportError:
|
||||
print("package 'tinkerforge' not installed, canceling")
|
||||
raise
|
||||
SENSORS=[
|
||||
["temp1", "7B5", SensorType.temp],
|
||||
["temp2", "8js", SensorType.temp],
|
||||
["humi1", "7RY", SensorType.humi],
|
||||
["ambi1", "8Fw", SensorType.ambi],
|
||||
["ambi2", "8DJ", SensorType.ambi],
|
||||
["baro1", "bB7", SensorType.baro],
|
||||
]
|
||||
names=[]
|
||||
for x in SENSORS:
|
||||
names.append(x[0])
|
||||
|
||||
cbtimetemp=30000
|
||||
cbtimehumi=30000
|
||||
|
|
@ -42,50 +58,52 @@ records='records'
|
|||
lockname=locks+"/all.lock"
|
||||
log=open(logs+"/all.log",'a')
|
||||
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
if not os.path.exists(lockname):
|
||||
lock=open(lockname,'w')
|
||||
lock.write(str(time.time()))
|
||||
lock.close()
|
||||
# lock obtained
|
||||
logger=Logger(NAMES, (tempSensors, prev_temps_default, tempmaxdiff), log, records)
|
||||
logger=Logger(names, (tempSensors, prev_temps_default, tempmaxdiff), log, records)
|
||||
try:
|
||||
ipcon = IPConnection()
|
||||
t0 = Temperature(UID[0], ipcon)
|
||||
t1 = Temperature(UID[1], ipcon)
|
||||
h2 = Humidity(UID[2], ipcon)
|
||||
al3 = AmbientLight(UID[3], ipcon)
|
||||
al4 = AmbientLight(UID[4], ipcon)
|
||||
b5 = Barometer(UID[5], ipcon)
|
||||
# connect
|
||||
ipcon.connect(HOST, PORT)
|
||||
# ensure all sensors are present
|
||||
logger.cb_temperature0(t0.get_temperature())
|
||||
logger.cb_temperature1(t1.get_temperature())
|
||||
logger.cb_humidity2(h2.get_humidity())
|
||||
logger.cb_illuminance3(al3.get_illuminance())
|
||||
logger.cb_illuminance4(al4.get_illuminance())
|
||||
logger.cb_pressure5(b5.get_air_pressure())
|
||||
|
||||
t0.set_temperature_callback_period(cbtimetemp)
|
||||
t1.set_temperature_callback_period(cbtimetemp)
|
||||
h2.set_humidity_callback_period(cbtimehumi)
|
||||
al3.set_illuminance_callback_period(cbtimeambi)
|
||||
al4.set_illuminance_callback_period(cbtimeambi)
|
||||
b5.set_air_pressure_callback_period(cbtimebaro)
|
||||
|
||||
log.write('start logging "all" ... @'+time.ctime()+"\n")
|
||||
log.flush()
|
||||
|
||||
t0.register_callback(t0.CALLBACK_TEMPERATURE, logger.cb_temperature0)
|
||||
t1.register_callback(t1.CALLBACK_TEMPERATURE, logger.cb_temperature1)
|
||||
h2.register_callback(h2.CALLBACK_HUMIDITY, logger.cb_humidity2)
|
||||
al3.register_callback(al3.CALLBACK_ILLUMINANCE, logger.cb_illuminance3)
|
||||
al4.register_callback(al4.CALLBACK_ILLUMINANCE, logger.cb_illuminance4)
|
||||
b5.register_callback(b5.CALLBACK_AIR_PRESSURE,logger.cb_pressure5)
|
||||
|
||||
connected=[]
|
||||
for i,sensor in enumerate(SENSORS):
|
||||
if(sensor[2] == SensorType.temp):
|
||||
obj = Temperature(sensor[1], ipcon)
|
||||
obj.set_temperature_callback_period(cbtimetemp)
|
||||
if(i == 0):
|
||||
logger.cb_temperature0(obj.get_temperature())
|
||||
obj.register_callback(obj.CALLBACK_TEMPERATURE, logger.cb_temperature0)
|
||||
else:
|
||||
logger.cb_temperature1(obj.get_temperature())
|
||||
obj.register_callback(obj.CALLBACK_TEMPERATURE, logger.cb_temperature1)
|
||||
elif (sensor[2] == SensorType.humi):
|
||||
obj = Humidity(sensor[1], ipcon)
|
||||
logger.cb_humidity2(obj.get_humidity())
|
||||
obj.set_humidity_callback_period(cbtimehumi)
|
||||
obj.register_callback(obj.CALLBACK_HUMIDITY, logger.cb_humidity2)
|
||||
elif(sensor[2] == SensorType.ambi):
|
||||
obj = AmbientLight(sensor[1], ipcon)
|
||||
obj.set_illuminance_callback_period(cbtimeambi)
|
||||
if(i == 0):
|
||||
logger.cb_illuminance3(obj.get_illuminance())
|
||||
obj.register_callback(obj.CALLBACK_ILLUMINANCE, logger.cb_illuminance3)
|
||||
else:
|
||||
logger.cb_illuminance4(obj.get_illuminance())
|
||||
obj.register_callback(obj.CALLBACK_ILLUMINANCE, logger.cb_illuminance4)
|
||||
elif (sensor[2] == SensorType.baro):
|
||||
obj = Barometer(sensor[1], ipcon)
|
||||
logger.cb_pressure5(obj.get_air_pressure())
|
||||
obj.set_air_pressure_callback_period(cbtimebaro)
|
||||
obj.register_callback(obj.CALLBACK_AIR_PRESSURE,logger.cb_pressure5)
|
||||
else:
|
||||
continue
|
||||
connected.append(obj)
|
||||
raw_input('Press key to exit\n')
|
||||
ipcon.disconnect()
|
||||
log.write('stop logging... @'+time.ctime()+"\n")
|
||||
|
|
|
|||
Loading…
Reference in New Issue