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'
コード例 #2
0
    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)