Ejemplo n.º 1
0
    def __init__(self, input_dev):
        self.cmd_send = None
        self.ph_sensor_uart = None
        self.ph_sensor_i2c = None
        self.interface = input_dev.interface

        if self.interface == 'FTDI':
            from mycodo.devices.atlas_scientific_ftdi import AtlasScientificFTDI
            self.ph_sensor_ftdi = AtlasScientificFTDI(
                input_dev.ftdi_location)
        elif self.interface == 'UART':
            from mycodo.devices.atlas_scientific_uart import AtlasScientificUART
            self.ph_sensor_uart = AtlasScientificUART(
                input_dev.uart_location,
                baudrate=input_dev.baud_rate)
        elif self.interface == 'I2C':
            from mycodo.devices.atlas_scientific_i2c import AtlasScientificI2C
            self.ph_sensor_i2c = AtlasScientificI2C(
                i2c_address=int(str(input_dev.i2c_location), 16),
                i2c_bus=input_dev.i2c_bus)

        self.board_version, self.board_info = self.get_board_version()

        if self.board_version == 0:
            logger.error("Unable to retrieve device info (this indicates the "
                         "device was not properly initialized or connected)")
        else:
            # TODO: Change back to debug
            logger.error("Device Info: {info}".format(info=self.board_info))
            logger.error("Detected Version: {ver}".format(ver=self.board_version))
Ejemplo n.º 2
0
    def __init__(self, input_dev):
        self.cmd_send = None
        self.ph_sensor_uart = None
        self.ph_sensor_i2c = None
        self.interface = input_dev.interface

        if self.interface == 'FTDI':
            from mycodo.devices.atlas_scientific_ftdi import AtlasScientificFTDI
            self.ph_sensor_ftdi = AtlasScientificFTDI(input_dev.ftdi_location)
        elif self.interface == 'UART':
            from mycodo.devices.atlas_scientific_uart import AtlasScientificUART
            self.ph_sensor_uart = AtlasScientificUART(
                input_dev.uart_location, baudrate=input_dev.baud_rate)
        elif self.interface == 'I2C':
            from mycodo.devices.atlas_scientific_i2c import AtlasScientificI2C
            self.ph_sensor_i2c = AtlasScientificI2C(i2c_address=int(
                str(input_dev.i2c_location), 16),
                                                    i2c_bus=input_dev.i2c_bus)

        self.measurement, self.board_version, self.firmware_version = self.get_board_version(
        )

        if self.board_version == 0:
            logger.error("Atlas Scientific board initialization unsuccessful. "
                         "Unable to retrieve device info (this indicates the "
                         "device was not properly initialized or connected)")
        else:
            # TODO: Change back to debug
            logger.info(
                "Atlas Scientific board initialization success. "
                "Measurement: {meas}, Board: {brd}, Firmware: {fw}".format(
                    meas=self.measurement,
                    brd=self.board_version,
                    fw=self.firmware_version))
Ejemplo n.º 3
0
 def initialize_sensor(self):
     from mycodo.devices.atlas_scientific_i2c import AtlasScientificI2C
     from mycodo.devices.atlas_scientific_uart import AtlasScientificUART
     if self.interface == 'UART':
         self.atlas_sensor_uart = AtlasScientificUART(
             self.device_loc, baudrate=self.baud_rate)
     elif self.interface == 'I2C':
         self.atlas_sensor_i2c = AtlasScientificI2C(
             i2c_address=self.i2c_address, i2c_bus=self.i2c_bus)
Ejemplo n.º 4
0
 def initialize_sensor(self):
     from mycodo.devices.atlas_scientific_ftdi import AtlasScientificFTDI
     from mycodo.devices.atlas_scientific_i2c import AtlasScientificI2C
     from mycodo.devices.atlas_scientific_uart import AtlasScientificUART
     if self.interface == 'FTDI':
         self.atlas_sensor_ftdi = AtlasScientificFTDI(self.ftdi_location)
     elif self.interface == 'UART':
         self.atlas_sensor_uart = AtlasScientificUART(self.uart_location)
     elif self.interface == 'I2C':
         self.atlas_sensor_i2c = AtlasScientificI2C(
             i2c_address=self.i2c_address, i2c_bus=self.i2c_bus)
Ejemplo n.º 5
0
 def connect_atlas_ezo_pump(selected_output):
     atlas_command = None
     if selected_output.interface == 'FTDI':
         atlas_command = AtlasScientificFTDI(selected_output.ftdi_location)
     elif selected_output.interface == 'I2C':
         atlas_command = AtlasScientificI2C(i2c_address=int(
             str(selected_output.location), 16),
                                            i2c_bus=selected_output.i2c_bus)
     elif selected_output.interface == 'UART':
         atlas_command = AtlasScientificUART(
             selected_output.location, baudrate=selected_output.baud_rate)
     return atlas_command
Ejemplo n.º 6
0
 def __init__(self, interface, device_loc=None, baud_rate=None,
              i2c_address=None, i2c_bus=None, sensor_sel=None):
     super(AtlaspHSensor, self).__init__()
     self._ph = 0
     self.interface = interface
     self.sensor_sel = sensor_sel
     if self.interface == 'UART':
         self.atlas_sensor_uart = AtlasScientificUART(device_loc,
                                                      baudrate=baud_rate)
     elif self.interface == 'I2C':
         self.atlas_sensor_i2c = AtlasScientificI2C(
             i2c_address=i2c_address, i2c_bus=i2c_bus)
Ejemplo n.º 7
0
 def initialize_sensor(self):
     from mycodo.devices.atlas_scientific_i2c import AtlasScientificI2C
     from mycodo.devices.atlas_scientific_uart import AtlasScientificUART
     if self.interface == 'UART':
         self.logger = logging.getLogger(
             "mycodo.inputs.atlas_ph_{uart}".format(uart=self.device_loc))
         self.atlas_sensor_uart = AtlasScientificUART(self.device_loc)
     elif self.interface == 'I2C':
         self.logger = logging.getLogger(
             "mycodo.inputs.atlas_ph_{bus}_{add}".format(
                 bus=self.i2c_bus, add=self.i2c_address))
         self.atlas_sensor_i2c = AtlasScientificI2C(
             i2c_address=self.i2c_address, i2c_bus=self.i2c_bus)
Ejemplo n.º 8
0
 def initialize_sensor(self):
     if self.interface == 'FTDI':
         from mycodo.devices.atlas_scientific_ftdi import AtlasScientificFTDI
         self.ftdi_location = self.input_dev.ftdi_location
         self.atlas_sensor = AtlasScientificFTDI(self.ftdi_location)
     elif self.interface == 'UART':
         from mycodo.devices.atlas_scientific_uart import AtlasScientificUART
         self.uart_location = self.input_dev.uart_location
         self.atlas_sensor = AtlasScientificUART(self.uart_location)
     elif self.interface == 'I2C':
         from mycodo.devices.atlas_scientific_i2c import AtlasScientificI2C
         self.i2c_address = int(str(self.input_dev.i2c_location), 16)
         self.i2c_bus = self.input_dev.i2c_bus
         self.atlas_sensor = AtlasScientificI2C(
             i2c_address=self.i2c_address, i2c_bus=self.i2c_bus)
Ejemplo n.º 9
0
 def setup_output(self):
     if self.interface == 'FTDI':
         from mycodo.devices.atlas_scientific_ftdi import AtlasScientificFTDI
         self.atlas_command = AtlasScientificFTDI(self.output.ftdi_location)
     elif self.interface == 'I2C':
         from mycodo.devices.atlas_scientific_i2c import AtlasScientificI2C
         self.atlas_command = AtlasScientificI2C(
             i2c_address=int(str(self.output.i2c_location), 16),
             i2c_bus=self.output.i2c_bus)
     elif self.interface == 'UART':
         from mycodo.devices.atlas_scientific_uart import AtlasScientificUART
         self.atlas_command = AtlasScientificUART(
             self.output.uart_location, baudrate=self.output.baud_rate)
     else:
         self.logger.error("Unknown interface: {}".format(self.interface))
Ejemplo n.º 10
0
 def setup_output(self):
     if self.output_interface == 'FTDI':
         from mycodo.devices.atlas_scientific_ftdi import AtlasScientificFTDI
         self.ftdi_location = self.output.ftdi_location
         self.atlas_command = AtlasScientificFTDI(self.ftdi_location)
     elif self.output_interface == 'I2C':
         from mycodo.devices.atlas_scientific_i2c import AtlasScientificI2C
         self.i2c_address = int(str(self.output.i2c_location), 16)
         self.i2c_bus = self.output.i2c_bus
         self.atlas_command = AtlasScientificI2C(
             i2c_address=self.i2c_address, i2c_bus=self.i2c_bus)
     elif self.output_interface == 'UART':
         from mycodo.devices.atlas_scientific_uart import AtlasScientificUART
         self.uart_location = self.output.uart_location
         self.output_baud_rate = self.output.baud_rate
         self.atlas_command = AtlasScientificUART(
             self.uart_location, baudrate=self.output_baud_rate)
Ejemplo n.º 11
0
def setup_atlas_device(atlas_device):
    if atlas_device.interface == 'FTDI':
        from mycodo.devices.atlas_scientific_ftdi import AtlasScientificFTDI
        atlas_device = AtlasScientificFTDI(atlas_device.ftdi_location)
    elif atlas_device.interface == 'UART':
        from mycodo.devices.atlas_scientific_uart import AtlasScientificUART
        atlas_device = AtlasScientificUART(atlas_device.uart_location,
                                           baudrate=atlas_device.baud_rate)
    elif atlas_device.interface == 'I2C':
        from mycodo.devices.atlas_scientific_i2c import AtlasScientificI2C
        atlas_device = AtlasScientificI2C(i2c_address=int(
            str(atlas_device.i2c_location), 16),
                                          i2c_bus=atlas_device.i2c_bus)
    else:
        logger.error("Unrecognized interface: {}".format(
            atlas_device.interface))
        return
    return atlas_device
Ejemplo n.º 12
0
def setup_atlas_ph_measure(input_id):
    """
    Acquire a measurement from the Atlas Scientific pH input and return it
    Used during calibration to display the current pH to the user
    """
    if not utils_general.user_has_permission('edit_controllers'):
        return redirect(url_for('routes_page.page_atlas_ph_calibrate'))

    selected_input = Input.query.filter_by(unique_id=input_id).first()

    ph = None
    error = None

    if selected_input.interface == 'UART':
        ph_input_uart = AtlasScientificUART(
            selected_input.device_loc, baudrate=selected_input.baud_rate)
        lines = ph_input_uart.query('R')
        logger.debug("All Lines: {lines}".format(lines=lines))

        if 'check probe' in lines:
            error = '"check probe" returned from input'
        elif not lines:
            error = 'Nothing returned from input'
        elif str_is_float(lines[0]):
            ph = lines[0]
            logger.debug('Value[0] is float: {val}'.format(val=ph))
        else:
            error = 'Value[0] is not float or "check probe": {val}'.format(
                val=lines[0])
    elif selected_input.interface == 'I2C':
        ph_input_i2c = AtlasScientificI2C(
            i2c_address=int(str(selected_input.location), 16),
            i2c_bus=selected_input.i2c_bus)
        ph_status, ph_str = ph_input_i2c.query('R')
        if ph_status == 'error':
            error = "Input read unsuccessful: {err}".format(err=ph_str)
        elif ph_status == 'success':
            ph = ph_str

    if error:
        logger.error(error)
        return error, 204
    else:
        return ph
Ejemplo n.º 13
0
 def initialize_sensor(self):
     from mycodo.devices.atlas_scientific_ftdi import AtlasScientificFTDI
     from mycodo.devices.atlas_scientific_i2c import AtlasScientificI2C
     from mycodo.devices.atlas_scientific_uart import AtlasScientificUART
     if self.interface == 'FTDI':
         self.logger = logging.getLogger(
             "mycodo.inputs.atlas_electrical_conductivity_ftdi_{ftdi}".format(
                 ftdi=self.ftdi_location))
         self.atlas_sensor_ftdi = AtlasScientificFTDI(self.ftdi_location)
     elif self.interface == 'UART':
         self.logger = logging.getLogger(
             "mycodo.inputs.atlas_electrical_conductivity_uart_{uart}".format(
                 uart=self.uart_location))
         self.atlas_sensor_uart = AtlasScientificUART(self.uart_location)
     elif self.interface == 'I2C':
         self.logger = logging.getLogger(
             "mycodo.inputs.atlas_electrical_conductivity_i2c_{bus}_{add}".format(
                 bus=self.i2c_bus, add=self.i2c_address))
         self.atlas_sensor_i2c = AtlasScientificI2C(
             i2c_address=self.i2c_address, i2c_bus=self.i2c_bus)
Ejemplo n.º 14
0
    def __init__(self, sensor_sel):
        self.cmd_send = None
        self.ph_sensor_uart = None
        self.ph_sensor_i2c = None
        self.interface = sensor_sel.interface

        if self.interface == 'UART':
            self.ph_sensor_uart = AtlasScientificUART(
                sensor_sel.device_loc, baudrate=sensor_sel.baud_rate)
        elif self.interface == 'I2C':
            self.ph_sensor_i2c = AtlasScientificI2C(
                i2c_address=sensor_sel.i2c_address, i2c_bus=sensor_sel.i2c_bus)

        self.board_version, self.board_info = self.board_version()

        if self.board_version == 0:
            logger.error("Unable to retrieve device info (this indicates the "
                         "device was not properly initialized or connected)")
        else:
            logger.debug("Device Info: {info}".format(info=self.board_info))
            logger.debug(
                "Detected Version: {ver}".format(ver=self.board_version))
Ejemplo n.º 15
0
    def initialize_sensor(self):
        from mycodo.devices.atlas_scientific_ftdi import AtlasScientificFTDI
        from mycodo.devices.atlas_scientific_i2c import AtlasScientificI2C
        from mycodo.devices.atlas_scientific_uart import AtlasScientificUART
        if self.interface == 'FTDI':
            self.ftdi_location = self.input_dev.ftdi_location
            self.atlas_sensor = AtlasScientificFTDI(self.ftdi_location)
        elif self.interface == 'UART':
            self.uart_location = self.input_dev.uart_location
            self.atlas_sensor = AtlasScientificUART(self.uart_location)
        elif self.interface == 'I2C':
            self.i2c_address = int(str(self.input_dev.i2c_location), 16)
            self.i2c_bus = self.input_dev.i2c_bus
            self.atlas_sensor = AtlasScientificI2C(
                i2c_address=self.i2c_address, i2c_bus=self.i2c_bus)

        if self.is_enabled(0):
            self.atlas_sensor.query('O,TV,1')
            self.logger.debug("Enabling Total Volume measurement")
        else:
            self.atlas_sensor.query('O,TV,0')
            self.logger.debug("Disabling Total Volume measurement")

        if self.is_enabled(1):
            self.atlas_sensor.query('O,FR,1')
            self.logger.debug("Enabling Flow Rate measurement")
        else:
            self.atlas_sensor.query('O,FR,0')
            self.logger.debug("Disabling Flow Rate measurement")

        if self.flow_meter_type:
            if self.flow_meter_type == 'non-atlas':
                if ';' in self.custom_k_values:
                    list_k_values = self.custom_k_values.split(';')
                    self.atlas_sensor.query('K,clear')
                    self.logger.debug("Cleared K Values")
                    for each_k in list_k_values:
                        if ',' in each_k:
                            self.atlas_sensor.query('K,{}'.format(each_k))
                            self.logger.debug("Set K Value: {}".format(each_k))
                        else:
                            self.logger.error(
                                "Improperly-formatted K-value: {}".format(
                                    each_k))
                elif ',' in self.custom_k_values:
                    self.atlas_sensor.query('K,clear')
                    self.logger.debug("Cleared K Values")
                    self.atlas_sensor.query('K,{}'.format(
                        self.custom_k_values))
                    self.logger.debug("Set K Value: {}".format(
                        self.custom_k_values))
                else:
                    self.logger.error(
                        "Improperly-formatted K-value: {}".format(
                            self.custom_k_values))
                self.atlas_sensor.query('Vp,{}'.format(
                    self.custom_k_value_time_base))
                self.logger.debug("Set Custom Time Base: {}".format(
                    self.custom_k_value_time_base))
            else:
                self.atlas_sensor.query('Set,{}'.format(self.flow_meter_type))
                self.logger.debug("Set Flow Meter: {}".format(
                    self.flow_meter_type))

        if self.flow_rate_unit:
            self.atlas_sensor.query('Frp,{}'.format(self.flow_rate_unit))
            self.logger.debug("Set Flow Rate: l/{}".format(
                self.flow_rate_unit))

        if self.internal_resistor and self.internal_resistor != 'atlas':
            self.atlas_sensor.query('P,{}'.format(int(self.internal_resistor)))
            if self.internal_resistor == '0':
                self.logger.debug("Internal Resistor disabled")
            else:
                self.logger.debug("Internal Resistor set: {} K".format(
                    self.internal_resistor))