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):
|
def __init__(self,names, temperature_config, log, records):
|
||||||
self.names = names
|
self.names = names
|
||||||
self.temp_sensors = temperature_config[0]
|
self.temp_sensors = temperature_config[0]
|
||||||
|
self.temp_prev_default=temperature_config[1]
|
||||||
self.prev_temps =[]
|
self.prev_temps =[]
|
||||||
for i in range(self.temp_sensors):
|
for i in range(self.temp_sensors):
|
||||||
self.prev_temps.append(temperature_config[1])
|
self.prev_temps.append(temperature_config[1])
|
||||||
|
|
@ -19,7 +20,7 @@ class Logger(object):
|
||||||
self.records = records
|
self.records = records
|
||||||
|
|
||||||
def temp_rise(self,old,new,sensor):
|
def temp_rise(self,old,new,sensor):
|
||||||
if(old==20000):
|
if(old==self.temp_prev_default):
|
||||||
return True
|
return True
|
||||||
if((old-new)>self.temp_max_diff or (new-old)>self.temp_max_diff):
|
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")
|
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 -*-
|
# -*- 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.path
|
||||||
import os
|
import os
|
||||||
|
|
@ -12,19 +30,17 @@ from Logger import Logger
|
||||||
HOST = "192.168.2.30"
|
HOST = "192.168.2.30"
|
||||||
PORT = 4223
|
PORT = 4223
|
||||||
|
|
||||||
UID = ["7B5", "8js", "7RY", "8Fw", "8DJ", "bB7"]
|
SENSORS=[
|
||||||
NAMES = ["temp1", "temp2", "humi1", "ambi1", "ambi2", "baro1"]
|
["temp1", "7B5", SensorType.temp],
|
||||||
|
["temp2", "8js", SensorType.temp],
|
||||||
|
["humi1", "7RY", SensorType.humi],
|
||||||
try:
|
["ambi1", "8Fw", SensorType.ambi],
|
||||||
from tinkerforge.ip_connection import IPConnection
|
["ambi2", "8DJ", SensorType.ambi],
|
||||||
from tinkerforge.bricklet_temperature import Temperature
|
["baro1", "bB7", SensorType.baro],
|
||||||
from tinkerforge.bricklet_humidity import Humidity
|
]
|
||||||
from tinkerforge.bricklet_ambient_light import AmbientLight
|
names=[]
|
||||||
from tinkerforge.bricklet_barometer import Barometer
|
for x in SENSORS:
|
||||||
except ImportError:
|
names.append(x[0])
|
||||||
print("package 'tinkerforge' not installed, canceling")
|
|
||||||
raise
|
|
||||||
|
|
||||||
cbtimetemp=30000
|
cbtimetemp=30000
|
||||||
cbtimehumi=30000
|
cbtimehumi=30000
|
||||||
|
|
@ -42,50 +58,52 @@ records='records'
|
||||||
lockname=locks+"/all.lock"
|
lockname=locks+"/all.lock"
|
||||||
log=open(logs+"/all.log",'a')
|
log=open(logs+"/all.log",'a')
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
if not os.path.exists(lockname):
|
if not os.path.exists(lockname):
|
||||||
lock=open(lockname,'w')
|
lock=open(lockname,'w')
|
||||||
lock.write(str(time.time()))
|
lock.write(str(time.time()))
|
||||||
lock.close()
|
lock.close()
|
||||||
# lock obtained
|
# lock obtained
|
||||||
logger=Logger(NAMES, (tempSensors, prev_temps_default, tempmaxdiff), log, records)
|
logger=Logger(names, (tempSensors, prev_temps_default, tempmaxdiff), log, records)
|
||||||
try:
|
try:
|
||||||
ipcon = IPConnection()
|
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
|
# connect
|
||||||
ipcon.connect(HOST, PORT)
|
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.write('start logging "all" ... @'+time.ctime()+"\n")
|
||||||
log.flush()
|
log.flush()
|
||||||
|
connected=[]
|
||||||
t0.register_callback(t0.CALLBACK_TEMPERATURE, logger.cb_temperature0)
|
for i,sensor in enumerate(SENSORS):
|
||||||
t1.register_callback(t1.CALLBACK_TEMPERATURE, logger.cb_temperature1)
|
if(sensor[2] == SensorType.temp):
|
||||||
h2.register_callback(h2.CALLBACK_HUMIDITY, logger.cb_humidity2)
|
obj = Temperature(sensor[1], ipcon)
|
||||||
al3.register_callback(al3.CALLBACK_ILLUMINANCE, logger.cb_illuminance3)
|
obj.set_temperature_callback_period(cbtimetemp)
|
||||||
al4.register_callback(al4.CALLBACK_ILLUMINANCE, logger.cb_illuminance4)
|
if(i == 0):
|
||||||
b5.register_callback(b5.CALLBACK_AIR_PRESSURE,logger.cb_pressure5)
|
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')
|
raw_input('Press key to exit\n')
|
||||||
ipcon.disconnect()
|
ipcon.disconnect()
|
||||||
log.write('stop logging... @'+time.ctime()+"\n")
|
log.write('stop logging... @'+time.ctime()+"\n")
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue