compacted logic to add bricklets into one method
parent
c0197c0812
commit
2fbe788774
|
|
@ -24,58 +24,69 @@ class SensorSetup(object):
|
|||
def parametrizedCallback(self, name, type):
|
||||
return partial(self.cb_generic, sensor=name, type=type)
|
||||
|
||||
def setupTemp(self, callback, id, cbtime):
|
||||
obj = Temperature(id, self.connection)
|
||||
obj.set_temperature_callback_period(cbtime)
|
||||
callback(obj.get_temperature())
|
||||
obj.register_callback(obj.CALLBACK_TEMPERATURE, callback)
|
||||
return obj
|
||||
def getTemp(self):
|
||||
obj = Temperature
|
||||
setcb = obj.set_temperature_callback_period
|
||||
get = obj.get_temperature
|
||||
cb = Temperature.CALLBACK_TEMPERATURE
|
||||
return obj, setcb, get, cb
|
||||
|
||||
def setupHumi(self, callback, id, cbtime):
|
||||
obj = Humidity(id, self.connection)
|
||||
obj.set_humidity_callback_period(cbtime)
|
||||
callback(obj.get_humidity())
|
||||
obj.register_callback(obj.CALLBACK_HUMIDITY, callback)
|
||||
return obj
|
||||
def getHumi(self):
|
||||
obj = Humidity
|
||||
setcb = obj.set_humidity_callback_period
|
||||
get = obj.get_humidity
|
||||
cb = Humidity.CALLBACK_HUMIDITY
|
||||
return obj, setcb, get, cb
|
||||
|
||||
def setupAmbi(self, callback, id, cbtime):
|
||||
obj = AmbientLight(id, self.connection)
|
||||
obj.set_illuminance_callback_period(cbtime)
|
||||
callback(obj.get_illuminance())
|
||||
obj.register_callback(obj.CALLBACK_ILLUMINANCE, callback)
|
||||
return obj
|
||||
def getAmbi(self):
|
||||
obj = AmbientLight
|
||||
setcb = obj.set_illuminance_callback_period
|
||||
get = obj.get_illuminance
|
||||
cb = AmbientLight.CALLBACK_ILLUMINANCE
|
||||
return obj, setcb, get, cb
|
||||
|
||||
def setupBaro(self, callback, id, cbtime):
|
||||
obj = Barometer(id, self.connection)
|
||||
callback(obj.get_air_pressure())
|
||||
obj.set_air_pressure_callback_period(cbtime)
|
||||
obj.register_callback(obj.CALLBACK_AIR_PRESSURE, callback)
|
||||
return obj
|
||||
def getBaro(self):
|
||||
obj = Barometer
|
||||
setcb = obj.set_air_pressure_callback_period
|
||||
get = obj.get_air_pressure
|
||||
cb = Barometer.CALLBACK_AIR_PRESSURE
|
||||
return obj, setcb, get, cb
|
||||
|
||||
def setupNone(self, callback, id, cbtime):
|
||||
obj = "None " + str(id)
|
||||
#def getNew(self):
|
||||
# obj = Bricklet # Object
|
||||
# setcb = obj.set_XXX_callback_period # set-callback-period-method-pointer
|
||||
# get = obj.get_XXX # value-get-method-pointer
|
||||
# cb = Bricklet.CALLBACK_XXX # callback identifier
|
||||
# return obj, setcb, get, cb
|
||||
|
||||
def __setupSensor__(self, callback, id, cbtime, var):
|
||||
obj = var[0](id, self.connection) # construct instance
|
||||
var[1](obj, cbtime) # set callback period
|
||||
callback(var[2](obj ), supress=True) # execute callback with raw getter as value
|
||||
obj.register_callback(var[3], callback) # register callback
|
||||
return obj
|
||||
|
||||
def genericSensorSetup(self, name, sensor):
|
||||
status = "setup device "+ sensor[0] +" ("+ name +"): "
|
||||
callback = self.parametrizedCallback(name, type=sensor[1])
|
||||
cbtime = self.cbtimes[sensor[1]]
|
||||
obj = None
|
||||
if sensor[1] is SensorType.temp:
|
||||
var = self.getTemp()
|
||||
elif sensor[1] is SensorType.humi:
|
||||
var = self.getHumi()
|
||||
elif sensor[1] is SensorType.ambi:
|
||||
var = self.getAmbi()
|
||||
elif sensor[1] is SensorType.baro:
|
||||
var = self.getBaro()
|
||||
try:
|
||||
if sensor[1] is SensorType.temp:
|
||||
obj = self.setupTemp(callback, sensor[0], cbtime)
|
||||
elif sensor[1] is SensorType.humi:
|
||||
obj = self.setupHumi(callback, sensor[0], cbtime)
|
||||
elif sensor[1] is SensorType.ambi:
|
||||
obj = self.setupAmbi(callback, sensor[0], cbtime)
|
||||
elif sensor[1] is SensorType.baro:
|
||||
obj = self.setupBaro(callback, sensor[0], cbtime)
|
||||
obj = self.__setupSensor__(callback, sensor[0], cbtime, var)
|
||||
status += "OK"
|
||||
except Exception as e:
|
||||
status += "FAIL"
|
||||
#print(e)
|
||||
#print(traceback.format_exc())
|
||||
print(status)
|
||||
obj = self.setupNone(callback, sensor[0] + name, cbtime)
|
||||
return obj
|
||||
|
||||
def setupSensors(self):
|
||||
|
|
@ -86,4 +97,3 @@ class SensorSetup(object):
|
|||
connected.append(obj)
|
||||
return connected
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -30,6 +30,7 @@ SENSORS={
|
|||
"ambi2": ["8DJ", SensorType.ambi],
|
||||
"baro1": ["bB7", SensorType.baro],
|
||||
"temp3": ["8ms", SensorType.temp],
|
||||
"humi2": ["9V5", SensorType.humi],
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue