class SensorDataManager(threading.Thread): ''' * Default Constructor ''' def __init__(self): threading.Thread.__init__(self) time.sleep(1) self.alo = ActuatorDataListener() self.alo.start() ''' * Runnable thread,to perform actuation ''' def run(self): while(True): if (self.alo.on_Actuator_Message() is True): maa = MultiActuatorAdaptor() maa.temp_act(self.alo.get_alo_object().sensor_value) else: continue time.sleep(5) ''' * Function to create instance of MultiActuatorAdaptor class ''' def trigger_actuation(self): self.maa = MultiActuatorAdaptor() ''' * Standard getter function * Output: MultiActuatorAdaptor(object) ''' def get_maaadaptor(self): return self.maa ''' * Function to handle sensor data, so as to activate actuator * Input: SensorData(Object) * Output: True or False (Boolean) ''' def handle_sensordata(self, invalue): self.x = invalue if(self.x.getActuationStae() is True): return True if(self.x.getActuationStae() is False): return False def get_alo(self): return self.alo
class PersistenceUtil(object): #Default Constructor def __init__(self): self.dataUtil = DataUtil() self.redis_connection = redis.Redis(host='localhost', port=6379) self.actuatorDataListener = ActuatorDataListener() self.sensorDataListener = SensorDataListener() ''' Write the actutorData to the DBMS ''' def readActuatorDataToDbms(self): redis_subscribe = self.redis_connection().pubsub() actuatorData_subscribe = redis_subscribe.subscribe("ActuatorData") redis_message = redis_subscribe.getMessage() self.registerActuatorDatatoDbmsListener() return ''' Method to write SensorData to DBMS''' def writeSensorDataToDbms(self, sensorData): json_sensorData = self.dataUtil.toJsonFromSensorData(sensorData) self.redis_connection.pubsub() self.redis_connection.publish("SensorData", json_sensorData) self.registerSensorDataToDbmsListener() return def registerSensorDataToDbmsListener(self): self.sensorDataListener.OnMessage() def registerActuatorDataToDbmsListener(self): self.actuatorDataListener.OnMessage()
def registerActuatorDataDbmsListener(self,ActuatorDataListener): db = redis.StrictRedis(host=self.host, port=self.port, password=self.auth, decode_responses=True) dbs = db.pubsub() dbs.subscribe("Actuator") #logging.info("Waiting for message") for new_message in dbs.listen(): adj = db.get(new_message['data']) #logging.info("Received new message" + str(new_message['data'])) if(new_message['data']!=1): logging.info("New Actuator Reading Received with ID \n" + str(new_message['data'])) #logging.info("New Actuator Data Received - " + adj ) sleep(.5) jdata = db.get(new_message['data']) logging.info("data - >"+jdata) ad = DataUtil.toActuatorDataFromJson(self, jdata) ActuatorDataListener.onActuatorMessage(ad) return True
def registerActuatorDataDbmsListener(self) -> bool: #try registering to actuatorDataListener try: #initialize ActuatorDataListener and send current reference to redis actuatorDataListener = ActuatorDataListener(self.r_actuator) #start the thread actuatorDataListener.start() #if caused an exception except Exception as e: print(e) #return false return False #if ran successfully return True
def __init__(self): threading.Thread.__init__(self) time.sleep(1) self.alo = ActuatorDataListener() self.alo.start()
def __init__(self): self.dataUtil = DataUtil() self.redis_connection = redis.Redis(host='localhost', port=6379) self.actuatorDataListener = ActuatorDataListener() self.sensorDataListener = SensorDataListener()
Created on Feb 5, 2020 @author: sk199 ''' import logging from time import sleep from labs.module05.MultiSensorAdaptor import MultiSensorAdaptor from labs.common.ActuatorDataListener import ActuatorDataListener #from labs.common.SensorDataListener import SensorDataListener logging.getLogger().setLevel(logging.INFO) logging.basicConfig(format='%(asctime)s:%(levelname)s:%(message)s', level=logging.DEBUG) logging.info("Starting temperature sensor adaptor daemon thread...") multisensoradaptor = MultiSensorAdaptor() multisensoradaptor.enableTempSensor = True multisensoradaptor.enableHumidSensor = False multisensoradaptor.enableHI2CSensor = False multisensoradaptor.start() #sensordatalistener = SensorDataListener() actuatordatalistener = ActuatorDataListener() while (True): #sensordatalistener.listener() actuatordatalistener.listener() sleep(10) pass