from almemo710 import almemo710 from almemo2490 import almemo2490 import pandas as pd import climate_chamber_dummy class ExternalSensorsDummy: def __init__(self): self.climate_chamber_dummy = climate_chamber_dummy.get_climate_chamber_dummy([0.2, 0.1]) def get_sensor_values(self): # FIXME: Do we have to run the simulation here or do we piggy-back on the chamber probably also being dummy? temp = self.climate_chamber_dummy.read_temperature()[0] humidity = self.climate_chamber_dummy.read_humidity()[0] # half a degree thermal cycle of 10 minutes from the room's air conditioning room_temp = 22.97 + abs((self.climate_chamber_dummy.last_simulation_time % 600)-300)/600 # Use the same DUT chamber values as the simulation, but constant measurement instrument chamber and room # temp_dut, temp_room, temp_meas_instr, hum_dut, hum_room, hum_meas_instr, air_press_room return temp, room_temp, 23.0, humidity, 62.2, 45.0, 1013 def close(self): pass def create_sensors(logger_model, logger_address, ext_sensor_channels): if logger_address == 'localhost': return ExternalSensorsDummy() else: return ExternalSensors(logger_model, logger_address, ext_sensor_channels) class ExternalSensors: def __init__(self, logger_model, logger_address, ext_sensor_channels): if logger_model == '710': self.logger = almemo710(ip=logger_address, timeout=10) elif logger_model == '2490': self.logger = almemo2490(ip=logger_address, timeout=10) else: raise Exception('Unknown logger type: '+logger_model) self.logger_model = logger_model self.ext_sensor_channels = ext_sensor_channels # initialise the logger self.logger.request_sens_channel_list() def get_sensor_values(self): """ Returns: (temp_dut, temp_room, temp_meas_instr, hum_dut, hum_room, hum_meas_instr, air_press_room, temp_dut2, hum_dut2) """ sens_vals_dict = dict() self.logger.request_meas_vals_all_channels() for key, value in self.ext_sensor_channels.items(): sens_vals_dict[key] = self.logger.fetch_channel_param_from_meas_buffer(pattern=value)[0].meas_val # set values from series to variables sens_vals_series = pd.Series(sens_vals_dict) # set series items for sensor value to matching variable temp_dut = sens_vals_series.temp_dut temp_room = sens_vals_series.temp_room hum_dut = sens_vals_series.hum_dut hum_room = sens_vals_series.hum_room air_press_room = sens_vals_series.air_press_room temp_dut2 = sens_vals_series.temp_dut2 hum_dut2 = sens_vals_series.hum_dut2 if self.logger_model == '710': temp_meas_instr = sens_vals_series.temp_meas_instr hum_meas_instr = sens_vals_series.hum_meas_instr else: temp_meas_instr = -30 hum_meas_instr = 0 return temp_dut, temp_room, temp_meas_instr, hum_dut, hum_room, hum_meas_instr, \ air_press_room, temp_dut2, hum_dut2 def close(self): self.logger.close()