Newer
Older
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()