def __init__(self): # Start logger codenames = list(CONF_TO_NAME.values()) self.db_saver = ContinuousDataSaver( continuous_data_table='dateplots_b312gasalarm', username=credentials.USERNAME, password=credentials.PASSWORD, measurement_codenames=codenames, ) self.db_saver.start() LOGGER.info('Logger started') # Init live socket self.live_socket = LiveSocket(name='gas_alarm_312_live', codenames=codenames) self.live_socket.start() LOGGER.info('Live socket started') # Start driver self.vortex = Vortex( '/dev/serial/by-id/usb-FTDI_USB-RS485_Cable_FTWGRKRA-if00-port0', 1) LOGGER.info('Vortex driver opened') # Init database connection self.db_connection = MySQLdb.connect(host='servcinf-sql', user=credentials.USERNAME, passwd=credentials.PASSWORD, db='cinfdata') self.db_cursor = self.db_connection.cursor() # Initiate static information. All information about the except for # the list of their numbers are placed in dicts because the numbering # starts at 1. # Detector numbers: [1, 2, 3, ..., 12] self.detector_numbers = range( 1, self.vortex.get_number_installed_detectors() + 1) self.detector_info = { detector_num: self.vortex.detector_configuration(detector_num) for detector_num in self.detector_numbers } # trip_levels are the differences that are required to force a log # The levels are set to 2 * the communication resolution # (1000 values / full range) self.trip_levels = { detector_num: info.range * 2.0 / 1000.0 for detector_num, info in self.detector_info.items() } # Initiate last measured values and their corresponding times self.detector_levels_last_values = \ {detector_num: - (10 ** 9) for detector_num in self.detector_numbers} self.detector_levels_last_times = \ {detector_num: 0 for detector_num in self.detector_numbers} self.detector_status_last_values = \ {detector_num: {'inhibit': False, 'status': ['OK'], 'codename': self.detector_info[detector_num].identity} for detector_num in self.detector_numbers} self.detector_status_last_times = \ {detector_num: 0 for detector_num in self.detector_numbers} # Initiate variables for system power status self.central_power_status_last_value = 'OK' self.central_power_status_last_time = -(10**9) # Initiate variables for system status self.central_status_last_value = ['All OK'] self.central_status_last_time = 0
def __init__(self): # Start logger codenames = [ 'B307_gasalarm_CO_051', 'B307_gasalarm_H2_051', 'B307_gasalarm_CO_055', 'B307_gasalarm_H2_055', 'B307_gasalarm_CO_059', 'B307_gasalarm_H2_059', 'B307_gasalarm_CO_061', 'B307_gasalarm_H2_061', 'B307_gasalarm_CO_42-43', 'B307_gasalarm_H2_2sal', 'B307_gasalarm_CO_932', 'B307_gasalarm_H2_932' ] self.db_logger = ContinuousLogger(table='dateplots_b307gasalarm', username=credentials.USERNAME, password=credentials.PASSWORD, measurement_codenames=codenames) self.db_logger.start() LOGGER.info('Logger started') # Each value is measured about every 5 sec, so sane interval about 2 self.live_socket = LiveSocket(name='gas_alarm_307_live', codenames=codenames) self.live_socket.start() LOGGER.info('Live socket started') # Start driver self.vortex = Vortex('/dev/ttyUSB0', 1) LOGGER.info('Vortex driver opened') # Init database connection self.db_connection = MySQLdb.connect(host='servcinf-sql.fysik.dtu.dk', user=credentials.USERNAME, passwd=credentials.PASSWORD, db='cinfdata') self.db_cursor = self.db_connection.cursor() # Initiate static information. All information about the except for # the list of their numbers are placed in dicts because the numbering # starts at 1. # Detector numbers: [1, 2, 3, ..., 12] self.detector_numbers = \ range(1, self.vortex.get_number_installed_detectors() + 1) self.detector_info = \ {detector_num: self.vortex.detector_configuration(detector_num) for detector_num in self.detector_numbers} # trip_levels are the differences that are required to force a log # The levels are set to 2 * the communication resolution # (1000 values over the full range) # NOTE. Since we have had a lot of noise on the CO channels, we # increased the level to info.range * 7.0 / 1000.0 for those #self.trip_levels = {detector_num: info.range * 2.0 / 1000.0 for # detector_num, info in self.detector_info.items()} self.trip_levels = {} for detector_number, info in self.detector_info.items(): if info.unit == "PPM": self.trip_levels[detector_number] = info.range * 7.0 / 1000.0 else: self.trip_levels[detector_number] = info.range * 2.0 / 1000.0 # Initiate last measured values and their corresponding times self.detector_levels_last_values = \ {detector_num: - (10 ** 9) for detector_num in self.detector_numbers} self.detector_levels_last_times = \ {detector_num: 0 for detector_num in self.detector_numbers} self.detector_status_last_values = \ {detector_num: {'inhibit': False, 'status': ['OK'], 'codename': self.detector_info[detector_num].identity} for detector_num in self.detector_numbers} self.detector_status_last_times = \ {detector_num: 0 for detector_num in self.detector_numbers} # Initiate variables for system power status self.central_power_status_last_value = 'OK' self.central_power_status_last_time = -(10**9) # Initiate variables for system status self.central_status_last_value = ['All OK'] self.central_status_last_time = 0