def __init__(self, scope_id, app_key, model_id, device_id, logger): model_data = Device._create_model_data(model_id, None, True) super(MasterDevice, self).__init__(scope_id, app_key, device_id, model_data, logger) if config.MODBUS_MODE == 0: self.modbus_client = SimulatedModbusDeviceClient(method='rtu', port=config.SERIAL_PORT, timeout=config.MODBUS_CLIENT_TIMEOUT, baudrate=config.BAUD_RATE) elif config.MODBUS_MODE == 1: self.modbus_client = SerialModbusDeviceClient(method=config.MODBUS_METHOD, port=config.SERIAL_PORT, timeout=config.MODBUS_CLIENT_TIMEOUT, baudrate=config.BAUD_RATE) elif config.MODBUS_MODE == 2: self.modbus_client = TCPModbusDeviceClient() else: raise 'Invalid Modbus Mode configuration'
def __init__(self, scope_id, app_key, model_id, device_id, master_id, slave_id, active_registers, update_interval, modbus_client, logger): model_data = Device._create_model_data(model_id, master_id, False) super(SlaveDevice, self).__init__(scope_id, app_key, device_id, model_data, logger) self.slave_id = slave_id self.update_interval = 2 if update_interval == None else update_interval self.active_registers = {} self.read_registers = [] self.modbus_client = modbus_client for active_register in active_registers: name = active_register[config.ACTIVE_REGISTERS_KEY_REGISTER_NAME] address = active_register[config.ACTIVE_REGISTERS_KEY_ADDRESS] type = active_register[config.ACTIVE_REGISTERS_KEY_TYPE] self.active_registers[name] = ActiveRegister(address, type) if type == config.ACTIVE_REGISTERS_TYPE_DISCRETE_INPUT or \ type == config.ACTIVE_REGISTERS_TYPE_INPUT_REGISTER: self.read_registers.append(name)