virtual_centrifuge:
  category:
  - virtual_device
  class:
    action_value_mappings:
      auto-cleanup:
        feedback: {}
        goal: {}
        goal_default: {}
        handles: []
        result: {}
        schema:
          description: cleanup的参数schema
          properties:
            feedback: {}
            goal:
              properties: {}
              required: []
              type: object
            result: {}
          required:
          - goal
          title: cleanup参数
          type: object
        type: UniLabJsonCommandAsync
      auto-initialize:
        feedback: {}
        goal: {}
        goal_default: {}
        handles: []
        result: {}
        schema:
          description: initialize的参数schema
          properties:
            feedback: {}
            goal:
              properties: {}
              required: []
              type: object
            result: {}
          required:
          - goal
          title: initialize参数
          type: object
        type: UniLabJsonCommandAsync
      centrifuge:
        feedback:
          current_speed: current_speed
          current_status: status
          current_temp: current_temp
          progress: progress
        goal:
          speed: speed
          temp: temp
          time: time
          vessel: vessel
        goal_default:
          speed: 0.0
          temp: 0.0
          time: 0.0
          vessel:
            category: ''
            children: []
            config: ''
            data: ''
            id: ''
            name: ''
            parent: ''
            pose:
              orientation:
                w: 1.0
                x: 0.0
                y: 0.0
                z: 0.0
              position:
                x: 0.0
                y: 0.0
                z: 0.0
            sample_id: ''
            type: ''
        handles: []
        result:
          message: message
          success: success
        schema:
          description: ''
          properties:
            feedback:
              properties:
                current_speed:
                  type: number
                current_status:
                  type: string
                current_temp:
                  type: number
                progress:
                  type: number
              required:
              - progress
              - current_speed
              - current_temp
              - current_status
              title: Centrifuge_Feedback
              type: object
            goal:
              properties:
                speed:
                  type: number
                temp:
                  type: number
                time:
                  type: number
                vessel:
                  properties:
                    category:
                      type: string
                    children:
                      items:
                        type: string
                      type: array
                    config:
                      type: string
                    data:
                      type: string
                    id:
                      type: string
                    name:
                      type: string
                    parent:
                      type: string
                    pose:
                      properties:
                        orientation:
                          properties:
                            w:
                              type: number
                            x:
                              type: number
                            y:
                              type: number
                            z:
                              type: number
                          required:
                          - x
                          - y
                          - z
                          - w
                          title: Quaternion
                          type: object
                        position:
                          properties:
                            x:
                              type: number
                            y:
                              type: number
                            z:
                              type: number
                          required:
                          - x
                          - y
                          - z
                          title: Point
                          type: object
                      required:
                      - position
                      - orientation
                      title: Pose
                      type: object
                    sample_id:
                      type: string
                    type:
                      type: string
                  required:
                  - id
                  - name
                  - sample_id
                  - children
                  - parent
                  - type
                  - category
                  - pose
                  - config
                  - data
                  title: Resource
                  type: object
              required:
              - vessel
              - speed
              - time
              - temp
              title: Centrifuge_Goal
              type: object
            result:
              properties:
                message:
                  type: string
                return_info:
                  type: string
                success:
                  type: boolean
              required:
              - success
              - message
              - return_info
              title: Centrifuge_Result
              type: object
          required:
          - goal
          title: Centrifuge
          type: object
        type: Centrifuge
    module: unilabos.devices.virtual.virtual_centrifuge:VirtualCentrifuge
    status_types:
      centrifuge_state: str
      current_speed: float
      current_temp: float
      max_speed: float
      max_temp: float
      message: str
      min_temp: float
      progress: float
      status: str
      target_speed: float
      target_temp: float
      time_remaining: float
    type: python
  config_info: []
  description: Virtual Centrifuge for CentrifugeProtocol Testing
  handles:
  - data_key: vessel
    data_source: handle
    data_type: transport
    description: 需要离心的样品容器
    handler_key: centrifuge
    io_type: target
    label: centrifuge
    side: NORTH
  icon: ''
  init_param_schema:
    config:
      properties:
        config:
          type: string
        device_id:
          type: string
      required: []
      type: object
    data:
      properties:
        centrifuge_state:
          type: string
        current_speed:
          type: number
        current_temp:
          type: number
        max_speed:
          type: number
        max_temp:
          type: number
        message:
          type: string
        min_temp:
          type: number
        progress:
          type: number
        status:
          type: string
        target_speed:
          type: number
        target_temp:
          type: number
        time_remaining:
          type: number
      required:
      - status
      - centrifuge_state
      - current_speed
      - target_speed
      - current_temp
      - target_temp
      - max_speed
      - max_temp
      - min_temp
      - time_remaining
      - progress
      - message
      type: object
  version: 1.0.0
virtual_column:
  category:
  - virtual_device
  class:
    action_value_mappings:
      auto-cleanup:
        feedback: {}
        goal: {}
        goal_default: {}
        handles: []
        result: {}
        schema:
          description: cleanup的参数schema
          properties:
            feedback: {}
            goal:
              properties: {}
              required: []
              type: object
            result: {}
          required:
          - goal
          title: cleanup参数
          type: object
        type: UniLabJsonCommandAsync
      auto-initialize:
        feedback: {}
        goal: {}
        goal_default: {}
        handles: []
        result: {}
        schema:
          description: initialize的参数schema
          properties:
            feedback: {}
            goal:
              properties: {}
              required: []
              type: object
            result: {}
          required:
          - goal
          title: initialize参数
          type: object
        type: UniLabJsonCommandAsync
      run_column:
        feedback:
          current_status: current_status
          processed_volume: processed_volume
          progress: progress
        goal:
          column: column
          from_vessel: from_vessel
          to_vessel: to_vessel
        goal_default:
          column: ''
          from_vessel:
            category: ''
            children: []
            config: ''
            data: ''
            id: ''
            name: ''
            parent: ''
            pose:
              orientation:
                w: 1.0
                x: 0.0
                y: 0.0
                z: 0.0
              position:
                x: 0.0
                y: 0.0
                z: 0.0
            sample_id: ''
            type: ''
          pct1: ''
          pct2: ''
          ratio: ''
          rf: ''
          solvent1: ''
          solvent2: ''
          to_vessel:
            category: ''
            children: []
            config: ''
            data: ''
            id: ''
            name: ''
            parent: ''
            pose:
              orientation:
                w: 1.0
                x: 0.0
                y: 0.0
                z: 0.0
              position:
                x: 0.0
                y: 0.0
                z: 0.0
            sample_id: ''
            type: ''
        handles: []
        result:
          message: current_status
          return_info: current_status
          success: success
        schema:
          description: ''
          properties:
            feedback:
              properties:
                progress:
                  type: number
                status:
                  type: string
              required:
              - status
              - progress
              title: RunColumn_Feedback
              type: object
            goal:
              properties:
                column:
                  type: string
                from_vessel:
                  properties:
                    category:
                      type: string
                    children:
                      items:
                        type: string
                      type: array
                    config:
                      type: string
                    data:
                      type: string
                    id:
                      type: string
                    name:
                      type: string
                    parent:
                      type: string
                    pose:
                      properties:
                        orientation:
                          properties:
                            w:
                              type: number
                            x:
                              type: number
                            y:
                              type: number
                            z:
                              type: number
                          required:
                          - x
                          - y
                          - z
                          - w
                          title: Quaternion
                          type: object
                        position:
                          properties:
                            x:
                              type: number
                            y:
                              type: number
                            z:
                              type: number
                          required:
                          - x
                          - y
                          - z
                          title: Point
                          type: object
                      required:
                      - position
                      - orientation
                      title: Pose
                      type: object
                    sample_id:
                      type: string
                    type:
                      type: string
                  required:
                  - id
                  - name
                  - sample_id
                  - children
                  - parent
                  - type
                  - category
                  - pose
                  - config
                  - data
                  title: Resource
                  type: object
                pct1:
                  type: string
                pct2:
                  type: string
                ratio:
                  type: string
                rf:
                  type: string
                solvent1:
                  type: string
                solvent2:
                  type: string
                to_vessel:
                  properties:
                    category:
                      type: string
                    children:
                      items:
                        type: string
                      type: array
                    config:
                      type: string
                    data:
                      type: string
                    id:
                      type: string
                    name:
                      type: string
                    parent:
                      type: string
                    pose:
                      properties:
                        orientation:
                          properties:
                            w:
                              type: number
                            x:
                              type: number
                            y:
                              type: number
                            z:
                              type: number
                          required:
                          - x
                          - y
                          - z
                          - w
                          title: Quaternion
                          type: object
                        position:
                          properties:
                            x:
                              type: number
                            y:
                              type: number
                            z:
                              type: number
                          required:
                          - x
                          - y
                          - z
                          title: Point
                          type: object
                      required:
                      - position
                      - orientation
                      title: Pose
                      type: object
                    sample_id:
                      type: string
                    type:
                      type: string
                  required:
                  - id
                  - name
                  - sample_id
                  - children
                  - parent
                  - type
                  - category
                  - pose
                  - config
                  - data
                  title: Resource
                  type: object
              required:
              - from_vessel
              - to_vessel
              - column
              - rf
              - pct1
              - pct2
              - solvent1
              - solvent2
              - ratio
              title: RunColumn_Goal
              type: object
            result:
              properties:
                message:
                  type: string
                return_info:
                  type: string
                success:
                  type: boolean
              required:
              - success
              - message
              - return_info
              title: RunColumn_Result
              type: object
          required:
          - goal
          title: RunColumn
          type: object
        type: RunColumn
    module: unilabos.devices.virtual.virtual_column:VirtualColumn
    status_types:
      column_diameter: float
      column_length: float
      column_state: str
      current_flow_rate: float
      current_phase: str
      current_status: str
      final_volume: float
      max_flow_rate: float
      processed_volume: float
      progress: float
      status: str
    type: python
  config_info: []
  description: Virtual Column Chromatography Device for RunColumn Protocol Testing
  handles:
  - data_key: from_vessel
    data_source: handle
    data_type: transport
    description: 样品输入口
    handler_key: columnin
    io_type: target
    label: columnin
    side: WEST
  - data_key: to_vessel
    data_source: handle
    data_type: transport
    description: 产物输出口
    handler_key: columnout
    io_type: source
    label: columnout
    side: EAST
  icon: ''
  init_param_schema:
    config:
      properties:
        config:
          type: object
        device_id:
          type: string
      required: []
      type: object
    data:
      properties:
        column_diameter:
          type: number
        column_length:
          type: number
        column_state:
          type: string
        current_flow_rate:
          type: number
        current_phase:
          type: string
        current_status:
          type: string
        final_volume:
          type: number
        max_flow_rate:
          type: number
        processed_volume:
          type: number
        progress:
          type: number
        status:
          type: string
      required:
      - status
      - column_state
      - current_flow_rate
      - max_flow_rate
      - column_length
      - column_diameter
      - processed_volume
      - progress
      - current_status
      - current_phase
      - final_volume
      type: object
  version: 1.0.0
virtual_filter:
  category:
  - virtual_device
  class:
    action_value_mappings:
      auto-cleanup:
        feedback: {}
        goal: {}
        goal_default: {}
        handles: []
        result: {}
        schema:
          description: cleanup的参数schema
          properties:
            feedback: {}
            goal:
              properties: {}
              required: []
              type: object
            result: {}
          required:
          - goal
          title: cleanup参数
          type: object
        type: UniLabJsonCommandAsync
      auto-initialize:
        feedback: {}
        goal: {}
        goal_default: {}
        handles: []
        result: {}
        schema:
          description: initialize的参数schema
          properties:
            feedback: {}
            goal:
              properties: {}
              required: []
              type: object
            result: {}
          required:
          - goal
          title: initialize参数
          type: object
        type: UniLabJsonCommandAsync
      filter:
        feedback:
          current_status: current_status
          current_temp: current_temp
          filtered_volume: filtered_volume
          progress: progress
        goal:
          continue_heatchill: continue_heatchill
          filtrate_vessel: filtrate_vessel
          stir: stir
          stir_speed: stir_speed
          temp: temp
          vessel: vessel
          volume: volume
        goal_default:
          continue_heatchill: false
          filtrate_vessel:
            category: ''
            children: []
            config: ''
            data: ''
            id: ''
            name: ''
            parent: ''
            pose:
              orientation:
                w: 1.0
                x: 0.0
                y: 0.0
                z: 0.0
              position:
                x: 0.0
                y: 0.0
                z: 0.0
            sample_id: ''
            type: ''
          stir: false
          stir_speed: 0.0
          temp: 0.0
          vessel:
            category: ''
            children: []
            config: ''
            data: ''
            id: ''
            name: ''
            parent: ''
            pose:
              orientation:
                w: 1.0
                x: 0.0
                y: 0.0
                z: 0.0
              position:
                x: 0.0
                y: 0.0
                z: 0.0
            sample_id: ''
            type: ''
          volume: 0.0
        handles: []
        result:
          message: message
          return_info: message
          success: success
        schema:
          description: ''
          properties:
            feedback:
              properties:
                current_status:
                  type: string
                current_temp:
                  type: number
                filtered_volume:
                  type: number
                progress:
                  type: number
              required:
              - progress
              - current_temp
              - filtered_volume
              - current_status
              title: Filter_Feedback
              type: object
            goal:
              properties:
                continue_heatchill:
                  type: boolean
                filtrate_vessel:
                  properties:
                    category:
                      type: string
                    children:
                      items:
                        type: string
                      type: array
                    config:
                      type: string
                    data:
                      type: string
                    id:
                      type: string
                    name:
                      type: string
                    parent:
                      type: string
                    pose:
                      properties:
                        orientation:
                          properties:
                            w:
                              type: number
                            x:
                              type: number
                            y:
                              type: number
                            z:
                              type: number
                          required:
                          - x
                          - y
                          - z
                          - w
                          title: Quaternion
                          type: object
                        position:
                          properties:
                            x:
                              type: number
                            y:
                              type: number
                            z:
                              type: number
                          required:
                          - x
                          - y
                          - z
                          title: Point
                          type: object
                      required:
                      - position
                      - orientation
                      title: Pose
                      type: object
                    sample_id:
                      type: string
                    type:
                      type: string
                  required:
                  - id
                  - name
                  - sample_id
                  - children
                  - parent
                  - type
                  - category
                  - pose
                  - config
                  - data
                  title: Resource
                  type: object
                stir:
                  type: boolean
                stir_speed:
                  type: number
                temp:
                  type: number
                vessel:
                  properties:
                    category:
                      type: string
                    children:
                      items:
                        type: string
                      type: array
                    config:
                      type: string
                    data:
                      type: string
                    id:
                      type: string
                    name:
                      type: string
                    parent:
                      type: string
                    pose:
                      properties:
                        orientation:
                          properties:
                            w:
                              type: number
                            x:
                              type: number
                            y:
                              type: number
                            z:
                              type: number
                          required:
                          - x
                          - y
                          - z
                          - w
                          title: Quaternion
                          type: object
                        position:
                          properties:
                            x:
                              type: number
                            y:
                              type: number
                            z:
                              type: number
                          required:
                          - x
                          - y
                          - z
                          title: Point
                          type: object
                      required:
                      - position
                      - orientation
                      title: Pose
                      type: object
                    sample_id:
                      type: string
                    type:
                      type: string
                  required:
                  - id
                  - name
                  - sample_id
                  - children
                  - parent
                  - type
                  - category
                  - pose
                  - config
                  - data
                  title: Resource
                  type: object
                volume:
                  type: number
              required:
              - vessel
              - filtrate_vessel
              - stir
              - stir_speed
              - temp
              - continue_heatchill
              - volume
              title: Filter_Goal
              type: object
            result:
              properties:
                message:
                  type: string
                return_info:
                  type: string
                success:
                  type: boolean
              required:
              - success
              - message
              - return_info
              title: Filter_Result
              type: object
          required:
          - goal
          title: Filter
          type: object
        type: Filter
    module: unilabos.devices.virtual.virtual_filter:VirtualFilter
    status_types:
      current_status: str
      current_temp: float
      filtered_volume: float
      max_stir_speed: float
      max_temp: float
      max_volume: float
      message: str
      progress: float
      status: str
    type: python
  config_info: []
  description: Virtual Filter for FilterProtocol Testing
  handles:
  - data_key: vessel_in
    data_source: handle
    data_type: transport
    description: 需要过滤的样品容器
    handler_key: filterin
    io_type: target
    label: filter_in
    side: NORTH
  - data_key: filtrate_out
    data_source: handle
    data_type: transport
    description: 滤液出口
    handler_key: filtrateout
    io_type: source
    label: filtrate_out
    side: SOUTH
  - data_key: retentate_out
    data_source: handle
    data_type: transport
    description: 滤渣/固体出口
    handler_key: retentateout
    io_type: source
    label: retentate_out
    side: EAST
  icon: ''
  init_param_schema:
    config:
      properties:
        config:
          type: string
        device_id:
          type: string
      required: []
      type: object
    data:
      properties:
        current_status:
          type: string
        current_temp:
          type: number
        filtered_volume:
          type: number
        max_stir_speed:
          type: number
        max_temp:
          type: number
        max_volume:
          type: number
        message:
          type: string
        progress:
          type: number
        status:
          type: string
      required:
      - status
      - progress
      - current_temp
      - filtered_volume
      - current_status
      - message
      - max_temp
      - max_stir_speed
      - max_volume
      type: object
  version: 1.0.0
virtual_gas_source:
  category:
  - virtual_device
  class:
    action_value_mappings:
      auto-cleanup:
        feedback: {}
        goal: {}
        goal_default: {}
        handles: []
        result: {}
        schema:
          description: cleanup的参数schema
          properties:
            feedback: {}
            goal:
              properties: {}
              required: []
              type: object
            result: {}
          required:
          - goal
          title: cleanup参数
          type: object
        type: UniLabJsonCommandAsync
      auto-initialize:
        feedback: {}
        goal: {}
        goal_default: {}
        handles: []
        result: {}
        schema:
          description: initialize的参数schema
          properties:
            feedback: {}
            goal:
              properties: {}
              required: []
              type: object
            result: {}
          required:
          - goal
          title: initialize参数
          type: object
        type: UniLabJsonCommandAsync
      auto-is_closed:
        feedback: {}
        goal: {}
        goal_default: {}
        handles: []
        result: {}
        schema:
          description: is_closed的参数schema
          properties:
            feedback: {}
            goal:
              properties: {}
              required: []
              type: object
            result: {}
          required:
          - goal
          title: is_closed参数
          type: object
        type: UniLabJsonCommand
      auto-is_open:
        feedback: {}
        goal: {}
        goal_default: {}
        handles: []
        result: {}
        schema:
          description: is_open的参数schema
          properties:
            feedback: {}
            goal:
              properties: {}
              required: []
              type: object
            result: {}
          required:
          - goal
          title: is_open参数
          type: object
        type: UniLabJsonCommand
      close:
        feedback: {}
        goal: {}
        goal_default: {}
        handles: []
        result: {}
        schema:
          description: ''
          properties:
            feedback:
              properties: {}
              required: []
              title: EmptyIn_Feedback
              type: object
            goal:
              properties: {}
              required: []
              title: EmptyIn_Goal
              type: object
            result:
              properties:
                return_info:
                  type: string
              required:
              - return_info
              title: EmptyIn_Result
              type: object
          required:
          - goal
          title: EmptyIn
          type: object
        type: EmptyIn
      open:
        feedback: {}
        goal: {}
        goal_default: {}
        handles: []
        result: {}
        schema:
          description: ''
          properties:
            feedback:
              properties: {}
              required: []
              title: EmptyIn_Feedback
              type: object
            goal:
              properties: {}
              required: []
              title: EmptyIn_Goal
              type: object
            result:
              properties:
                return_info:
                  type: string
              required:
              - return_info
              title: EmptyIn_Result
              type: object
          required:
          - goal
          title: EmptyIn
          type: object
        type: EmptyIn
      set_status:
        feedback: {}
        goal:
          string: string
        goal_default:
          string: ''
        handles: []
        result: {}
        schema:
          description: ''
          properties:
            feedback:
              properties: {}
              required: []
              title: StrSingleInput_Feedback
              type: object
            goal:
              properties:
                string:
                  type: string
              required:
              - string
              title: StrSingleInput_Goal
              type: object
            result:
              properties:
                return_info:
                  type: string
                success:
                  type: boolean
              required:
              - return_info
              - success
              title: StrSingleInput_Result
              type: object
          required:
          - goal
          title: StrSingleInput
          type: object
        type: StrSingleInput
    module: unilabos.devices.virtual.virtual_gas_source:VirtualGasSource
    status_types:
      status: str
    type: python
  config_info: []
  description: Virtual gas source
  handles:
  - data_key: fluid_out
    data_source: executor
    data_type: fluid
    description: 气源出气口
    handler_key: gassource
    io_type: source
    label: gassource
    side: SOUTH
  icon: ''
  init_param_schema:
    config:
      properties:
        config:
          type: string
        device_id:
          type: string
      required: []
      type: object
    data:
      properties:
        status:
          type: string
      required:
      - status
      type: object
  version: 1.0.0
virtual_heatchill:
  category:
  - virtual_device
  class:
    action_value_mappings:
      auto-cleanup:
        feedback: {}
        goal: {}
        goal_default: {}
        handles: []
        result: {}
        schema:
          description: cleanup的参数schema
          properties:
            feedback: {}
            goal:
              properties: {}
              required: []
              type: object
            result: {}
          required:
          - goal
          title: cleanup参数
          type: object
        type: UniLabJsonCommandAsync
      auto-initialize:
        feedback: {}
        goal: {}
        goal_default: {}
        handles: []
        result: {}
        schema:
          description: initialize的参数schema
          properties:
            feedback: {}
            goal:
              properties: {}
              required: []
              type: object
            result: {}
          required:
          - goal
          title: initialize参数
          type: object
        type: UniLabJsonCommandAsync
      heat_chill:
        feedback:
          status: status
        goal:
          purpose: purpose
          stir: stir
          stir_speed: stir_speed
          temp: temp
          time: time
          vessel: vessel
        goal_default:
          pressure: ''
          purpose: ''
          reflux_solvent: ''
          stir: false
          stir_speed: 0.0
          temp: 0.0
          temp_spec: ''
          time: ''
          time_spec: ''
          vessel:
            category: ''
            children: []
            config: ''
            data: ''
            id: ''
            name: ''
            parent: ''
            pose:
              orientation:
                w: 1.0
                x: 0.0
                y: 0.0
                z: 0.0
              position:
                x: 0.0
                y: 0.0
                z: 0.0
            sample_id: ''
            type: ''
        handles: []
        result:
          success: success
        schema:
          description: ''
          properties:
            feedback:
              properties:
                status:
                  type: string
              required:
              - status
              title: HeatChill_Feedback
              type: object
            goal:
              properties:
                pressure:
                  type: string
                purpose:
                  type: string
                reflux_solvent:
                  type: string
                stir:
                  type: boolean
                stir_speed:
                  type: number
                temp:
                  type: number
                temp_spec:
                  type: string
                time:
                  type: string
                time_spec:
                  type: string
                vessel:
                  properties:
                    category:
                      type: string
                    children:
                      items:
                        type: string
                      type: array
                    config:
                      type: string
                    data:
                      type: string
                    id:
                      type: string
                    name:
                      type: string
                    parent:
                      type: string
                    pose:
                      properties:
                        orientation:
                          properties:
                            w:
                              type: number
                            x:
                              type: number
                            y:
                              type: number
                            z:
                              type: number
                          required:
                          - x
                          - y
                          - z
                          - w
                          title: Quaternion
                          type: object
                        position:
                          properties:
                            x:
                              type: number
                            y:
                              type: number
                            z:
                              type: number
                          required:
                          - x
                          - y
                          - z
                          title: Point
                          type: object
                      required:
                      - position
                      - orientation
                      title: Pose
                      type: object
                    sample_id:
                      type: string
                    type:
                      type: string
                  required:
                  - id
                  - name
                  - sample_id
                  - children
                  - parent
                  - type
                  - category
                  - pose
                  - config
                  - data
                  title: Resource
                  type: object
              required:
              - vessel
              - temp
              - time
              - temp_spec
              - time_spec
              - pressure
              - reflux_solvent
              - stir
              - stir_speed
              - purpose
              title: HeatChill_Goal
              type: object
            result:
              properties:
                message:
                  type: string
                return_info:
                  type: string
                success:
                  type: boolean
              required:
              - success
              - message
              - return_info
              title: HeatChill_Result
              type: object
          required:
          - goal
          title: HeatChill
          type: object
        type: HeatChill
      heat_chill_start:
        feedback:
          status: status
        goal:
          purpose: purpose
          temp: temp
          vessel: vessel
        goal_default:
          purpose: ''
          temp: 0.0
          vessel:
            category: ''
            children: []
            config: ''
            data: ''
            id: ''
            name: ''
            parent: ''
            pose:
              orientation:
                w: 1.0
                x: 0.0
                y: 0.0
                z: 0.0
              position:
                x: 0.0
                y: 0.0
                z: 0.0
            sample_id: ''
            type: ''
        handles: []
        result:
          success: success
        schema:
          description: ''
          properties:
            feedback:
              properties:
                status:
                  type: string
              required:
              - status
              title: HeatChillStart_Feedback
              type: object
            goal:
              properties:
                purpose:
                  type: string
                temp:
                  type: number
                vessel:
                  properties:
                    category:
                      type: string
                    children:
                      items:
                        type: string
                      type: array
                    config:
                      type: string
                    data:
                      type: string
                    id:
                      type: string
                    name:
                      type: string
                    parent:
                      type: string
                    pose:
                      properties:
                        orientation:
                          properties:
                            w:
                              type: number
                            x:
                              type: number
                            y:
                              type: number
                            z:
                              type: number
                          required:
                          - x
                          - y
                          - z
                          - w
                          title: Quaternion
                          type: object
                        position:
                          properties:
                            x:
                              type: number
                            y:
                              type: number
                            z:
                              type: number
                          required:
                          - x
                          - y
                          - z
                          title: Point
                          type: object
                      required:
                      - position
                      - orientation
                      title: Pose
                      type: object
                    sample_id:
                      type: string
                    type:
                      type: string
                  required:
                  - id
                  - name
                  - sample_id
                  - children
                  - parent
                  - type
                  - category
                  - pose
                  - config
                  - data
                  title: Resource
                  type: object
              required:
              - vessel
              - temp
              - purpose
              title: HeatChillStart_Goal
              type: object
            result:
              properties:
                return_info:
                  type: string
                success:
                  type: boolean
              required:
              - return_info
              - success
              title: HeatChillStart_Result
              type: object
          required:
          - goal
          title: HeatChillStart
          type: object
        type: HeatChillStart
      heat_chill_stop:
        feedback:
          status: status
        goal:
          vessel: vessel
        goal_default:
          vessel:
            category: ''
            children: []
            config: ''
            data: ''
            id: ''
            name: ''
            parent: ''
            pose:
              orientation:
                w: 1.0
                x: 0.0
                y: 0.0
                z: 0.0
              position:
                x: 0.0
                y: 0.0
                z: 0.0
            sample_id: ''
            type: ''
        handles: []
        result:
          success: success
        schema:
          description: ''
          properties:
            feedback:
              properties:
                status:
                  type: string
              required:
              - status
              title: HeatChillStop_Feedback
              type: object
            goal:
              properties:
                vessel:
                  properties:
                    category:
                      type: string
                    children:
                      items:
                        type: string
                      type: array
                    config:
                      type: string
                    data:
                      type: string
                    id:
                      type: string
                    name:
                      type: string
                    parent:
                      type: string
                    pose:
                      properties:
                        orientation:
                          properties:
                            w:
                              type: number
                            x:
                              type: number
                            y:
                              type: number
                            z:
                              type: number
                          required:
                          - x
                          - y
                          - z
                          - w
                          title: Quaternion
                          type: object
                        position:
                          properties:
                            x:
                              type: number
                            y:
                              type: number
                            z:
                              type: number
                          required:
                          - x
                          - y
                          - z
                          title: Point
                          type: object
                      required:
                      - position
                      - orientation
                      title: Pose
                      type: object
                    sample_id:
                      type: string
                    type:
                      type: string
                  required:
                  - id
                  - name
                  - sample_id
                  - children
                  - parent
                  - type
                  - category
                  - pose
                  - config
                  - data
                  title: Resource
                  type: object
              required:
              - vessel
              title: HeatChillStop_Goal
              type: object
            result:
              properties:
                return_info:
                  type: string
                success:
                  type: boolean
              required:
              - return_info
              - success
              title: HeatChillStop_Result
              type: object
          required:
          - goal
          title: HeatChillStop
          type: object
        type: HeatChillStop
    module: unilabos.devices.virtual.virtual_heatchill:VirtualHeatChill
    status_types:
      is_stirring: bool
      max_stir_speed: float
      max_temp: float
      min_temp: float
      operation_mode: str
      progress: float
      remaining_time: float
      status: str
      stir_speed: float
    type: python
  config_info: []
  description: Virtual HeatChill for HeatChillProtocol Testing
  handles:
  - data_key: vessel
    data_source: handle
    data_type: mechanical
    description: 加热/冷却器的物理连接口
    handler_key: heatchill
    io_type: source
    label: heatchill
    side: NORTH
  icon: Heater.webp
  init_param_schema:
    config:
      properties:
        config:
          type: object
        device_id:
          type: string
      required: []
      type: object
    data:
      properties:
        is_stirring:
          type: boolean
        max_stir_speed:
          type: number
        max_temp:
          type: number
        min_temp:
          type: number
        operation_mode:
          type: string
        progress:
          type: number
        remaining_time:
          type: number
        status:
          type: string
        stir_speed:
          type: number
      required:
      - status
      - operation_mode
      - is_stirring
      - stir_speed
      - remaining_time
      - progress
      - max_temp
      - min_temp
      - max_stir_speed
      type: object
  version: 1.0.0
virtual_multiway_valve:
  category:
  - virtual_device
  class:
    action_value_mappings:
      auto-close:
        feedback: {}
        goal: {}
        goal_default: {}
        handles: []
        result: {}
        schema:
          description: close的参数schema
          properties:
            feedback: {}
            goal:
              properties: {}
              required: []
              type: object
            result: {}
          required:
          - goal
          title: close参数
          type: object
        type: UniLabJsonCommand
      auto-is_at_port:
        feedback: {}
        goal: {}
        goal_default:
          port_number: null
        handles: []
        result: {}
        schema:
          description: is_at_port的参数schema
          properties:
            feedback: {}
            goal:
              properties:
                port_number:
                  type: integer
              required:
              - port_number
              type: object
            result: {}
          required:
          - goal
          title: is_at_port参数
          type: object
        type: UniLabJsonCommand
      auto-is_at_position:
        feedback: {}
        goal: {}
        goal_default:
          position: null
        handles: []
        result: {}
        schema:
          description: is_at_position的参数schema
          properties:
            feedback: {}
            goal:
              properties:
                position:
                  type: integer
              required:
              - position
              type: object
            result: {}
          required:
          - goal
          title: is_at_position参数
          type: object
        type: UniLabJsonCommand
      auto-is_at_pump_position:
        feedback: {}
        goal: {}
        goal_default: {}
        handles: []
        result: {}
        schema:
          description: is_at_pump_position的参数schema
          properties:
            feedback: {}
            goal:
              properties: {}
              required: []
              type: object
            result: {}
          required:
          - goal
          title: is_at_pump_position参数
          type: object
        type: UniLabJsonCommand
      auto-open:
        feedback: {}
        goal: {}
        goal_default: {}
        handles: []
        result: {}
        schema:
          description: ''
          properties:
            feedback: {}
            goal:
              properties: {}
              required: []
              type: object
            result: {}
          required:
          - goal
          title: open参数
          type: object
        type: UniLabJsonCommand
      auto-reset:
        feedback: {}
        goal: {}
        goal_default: {}
        handles: []
        result: {}
        schema:
          description: reset的参数schema
          properties:
            feedback: {}
            goal:
              properties: {}
              required: []
              type: object
            result: {}
          required:
          - goal
          title: reset参数
          type: object
        type: UniLabJsonCommand
      auto-set_to_port:
        feedback: {}
        goal: {}
        goal_default:
          port_number: null
        handles: []
        result: {}
        schema:
          description: set_to_port的参数schema
          properties:
            feedback: {}
            goal:
              properties:
                port_number:
                  type: integer
              required:
              - port_number
              type: object
            result: {}
          required:
          - goal
          title: set_to_port参数
          type: object
        type: UniLabJsonCommand
      auto-set_to_pump_position:
        feedback: {}
        goal: {}
        goal_default: {}
        handles: []
        result: {}
        schema:
          description: set_to_pump_position的参数schema
          properties:
            feedback: {}
            goal:
              properties: {}
              required: []
              type: object
            result: {}
          required:
          - goal
          title: set_to_pump_position参数
          type: object
        type: UniLabJsonCommand
      auto-switch_between_pump_and_port:
        feedback: {}
        goal: {}
        goal_default:
          port_number: null
        handles: []
        result: {}
        schema:
          description: switch_between_pump_and_port的参数schema
          properties:
            feedback: {}
            goal:
              properties:
                port_number:
                  type: integer
              required:
              - port_number
              type: object
            result: {}
          required:
          - goal
          title: switch_between_pump_and_port参数
          type: object
        type: UniLabJsonCommand
      set_position:
        feedback: {}
        goal:
          command: command
        goal_default:
          command: ''
        handles: []
        result:
          success: success
        schema:
          description: ''
          properties:
            feedback:
              properties:
                status:
                  type: string
              required:
              - status
              title: SendCmd_Feedback
              type: object
            goal:
              properties:
                command:
                  type: string
              required:
              - command
              title: SendCmd_Goal
              type: object
            result:
              properties:
                return_info:
                  type: string
                success:
                  type: boolean
              required:
              - return_info
              - success
              title: SendCmd_Result
              type: object
          required:
          - goal
          title: SendCmd
          type: object
        type: SendCmd
      set_valve_position:
        feedback: {}
        goal:
          command: command
        goal_default:
          command: ''
        handles: []
        result:
          success: success
        schema:
          description: ''
          properties:
            feedback:
              properties:
                status:
                  type: string
              required:
              - status
              title: SendCmd_Feedback
              type: object
            goal:
              properties:
                command:
                  type: string
              required:
              - command
              title: SendCmd_Goal
              type: object
            result:
              properties:
                return_info:
                  type: string
                success:
                  type: boolean
              required:
              - return_info
              - success
              title: SendCmd_Result
              type: object
          required:
          - goal
          title: SendCmd
          type: object
        type: SendCmd
    module: unilabos.devices.virtual.virtual_multiway_valve:VirtualMultiwayValve
    status_types:
      available_ports: dict
      available_positions: list
      current_port: str
      current_position: int
      flow_path: str
      info: dict
      status: str
      target_position: int
      valve_position: int
      valve_state: str
    type: python
  config_info: []
  description: Virtual 8-Way Valve for flow direction control
  handles:
  - data_key: fluid_in
    data_source: handle
    data_type: fluid
    description: 八通阀门进液口
    handler_key: transferpump
    io_type: target
    label: transferpump
    side: NORTH
  - data_key: fluid_port_1
    data_source: executor
    data_type: fluid
    description: 八通阀门端口1
    handler_key: '1'
    io_type: source
    label: '1'
    side: NORTH
  - data_key: fluid_port_2
    data_source: executor
    data_type: fluid
    description: 八通阀门端口2
    handler_key: '2'
    io_type: source
    label: '2'
    side: EAST
  - data_key: fluid_port_3
    data_source: executor
    data_type: fluid
    description: 八通阀门端口3
    handler_key: '3'
    io_type: source
    label: '3'
    side: EAST
  - data_key: fluid_port_4
    data_source: executor
    data_type: fluid
    description: 八通阀门端口4
    handler_key: '4'
    io_type: source
    label: '4'
    side: SOUTH
  - data_key: fluid_port_5
    data_source: executor
    data_type: fluid
    description: 八通阀门端口5
    handler_key: '5'
    io_type: source
    label: '5'
    side: SOUTH
  - data_key: fluid_port_6
    data_source: executor
    data_type: fluid
    description: 八通阀门端口6
    handler_key: '6'
    io_type: source
    label: '6'
    side: WEST
  - data_key: fluid_port_7
    data_source: executor
    data_type: fluid
    description: 八通阀门端口7
    handler_key: '7'
    io_type: source
    label: '7'
    side: WEST
  - data_key: fluid_port_8
    data_source: executor
    data_type: fluid
    description: 八通阀门端口8-特殊输入
    handler_key: '8'
    io_type: target
    label: '8'
    side: WEST
  - data_key: fluid_port_8
    data_source: executor
    data_type: fluid
    description: 八通阀门端口8
    handler_key: '8'
    io_type: source
    label: '8'
    side: NORTH
  icon: EightPipeline.webp
  init_param_schema:
    config:
      properties:
        port:
          default: VIRTUAL
          type: string
        positions:
          default: 8
          type: integer
      required: []
      type: object
    data:
      properties:
        available_ports:
          type: object
        available_positions:
          type: array
        current_port:
          type: string
        current_position:
          type: integer
        flow_path:
          type: string
        info:
          type: object
        status:
          type: string
        target_position:
          type: integer
        valve_position:
          type: integer
        valve_state:
          type: string
      required:
      - status
      - valve_state
      - current_position
      - target_position
      - current_port
      - valve_position
      - available_positions
      - available_ports
      - flow_path
      - info
      type: object
  version: 1.0.0
virtual_pump:
  category:
  - virtual_device
  class:
    action_value_mappings:
      auto-clean_vessel:
        feedback: {}
        goal: {}
        goal_default:
          repeats: 1
          solvent: null
          temp: null
          vessel: null
          volume: null
        handles: []
        result: {}
        schema:
          description: clean_vessel的参数schema
          properties:
            feedback: {}
            goal:
              properties:
                repeats:
                  default: 1
                  type: integer
                solvent:
                  type: string
                temp:
                  type: number
                vessel:
                  type: string
                volume:
                  type: number
              required:
              - vessel
              - solvent
              - volume
              - temp
              type: object
            result: {}
          required:
          - goal
          title: clean_vessel参数
          type: object
        type: UniLabJsonCommandAsync
      auto-cleanup:
        feedback: {}
        goal: {}
        goal_default: {}
        handles: []
        result: {}
        schema:
          description: cleanup的参数schema
          properties:
            feedback: {}
            goal:
              properties: {}
              required: []
              type: object
            result: {}
          required:
          - goal
          title: cleanup参数
          type: object
        type: UniLabJsonCommandAsync
      auto-initialize:
        feedback: {}
        goal: {}
        goal_default: {}
        handles: []
        result: {}
        schema:
          description: initialize的参数schema
          properties:
            feedback: {}
            goal:
              properties: {}
              required: []
              type: object
            result: {}
          required:
          - goal
          title: initialize参数
          type: object
        type: UniLabJsonCommandAsync
      set_valve_position:
        feedback:
          status: status
        goal:
          float_in: valve_position
        goal_default:
          float_in: 0.0
        handles: []
        result:
          success: success
        schema:
          description: ''
          properties:
            feedback:
              properties: {}
              required: []
              title: FloatSingleInput_Feedback
              type: object
            goal:
              properties:
                float_in:
                  type: number
              required:
              - float_in
              title: FloatSingleInput_Goal
              type: object
            result:
              properties:
                return_info:
                  type: string
                success:
                  type: boolean
              required:
              - return_info
              - success
              title: FloatSingleInput_Result
              type: object
          required:
          - goal
          title: FloatSingleInput
          type: object
        type: FloatSingleInput
      transfer:
        feedback:
          status: status
        goal:
          amount: amount
          from_vessel: from_vessel
          rinsing_repeats: rinsing_repeats
          rinsing_solvent: rinsing_solvent
          rinsing_volume: rinsing_volume
          solid: solid
          time: time
          to_vessel: to_vessel
          viscous: viscous
          volume: volume
        goal_default:
          amount: ''
          event: ''
          flowrate: 0.0
          from_vessel:
            category: ''
            children: []
            config: ''
            data: ''
            id: ''
            name: ''
            parent: ''
            pose:
              orientation:
                w: 1.0
                x: 0.0
                y: 0.0
                z: 0.0
              position:
                x: 0.0
                y: 0.0
                z: 0.0
            sample_id: ''
            type: ''
          rate_spec: ''
          rinsing_repeats: 0
          rinsing_solvent: ''
          rinsing_volume: 0.0
          solid: false
          through: ''
          time: 0.0
          to_vessel:
            category: ''
            children: []
            config: ''
            data: ''
            id: ''
            name: ''
            parent: ''
            pose:
              orientation:
                w: 1.0
                x: 0.0
                y: 0.0
                z: 0.0
              position:
                x: 0.0
                y: 0.0
                z: 0.0
            sample_id: ''
            type: ''
          transfer_flowrate: 0.0
          viscous: false
          volume: 0.0
        handles: []
        result:
          success: success
        schema:
          description: ''
          properties:
            feedback:
              properties:
                current_device:
                  type: string
                status:
                  type: string
                time_remaining:
                  properties:
                    nanosec:
                      maximum: 4294967295
                      minimum: 0
                      type: integer
                    sec:
                      maximum: 2147483647
                      minimum: -2147483648
                      type: integer
                  required:
                  - sec
                  - nanosec
                  title: Duration
                  type: object
                time_spent:
                  properties:
                    nanosec:
                      maximum: 4294967295
                      minimum: 0
                      type: integer
                    sec:
                      maximum: 2147483647
                      minimum: -2147483648
                      type: integer
                  required:
                  - sec
                  - nanosec
                  title: Duration
                  type: object
              required:
              - status
              - current_device
              - time_spent
              - time_remaining
              title: PumpTransfer_Feedback
              type: object
            goal:
              properties:
                amount:
                  type: string
                event:
                  type: string
                flowrate:
                  type: number
                from_vessel:
                  properties:
                    category:
                      type: string
                    children:
                      items:
                        type: string
                      type: array
                    config:
                      type: string
                    data:
                      type: string
                    id:
                      type: string
                    name:
                      type: string
                    parent:
                      type: string
                    pose:
                      properties:
                        orientation:
                          properties:
                            w:
                              type: number
                            x:
                              type: number
                            y:
                              type: number
                            z:
                              type: number
                          required:
                          - x
                          - y
                          - z
                          - w
                          title: Quaternion
                          type: object
                        position:
                          properties:
                            x:
                              type: number
                            y:
                              type: number
                            z:
                              type: number
                          required:
                          - x
                          - y
                          - z
                          title: Point
                          type: object
                      required:
                      - position
                      - orientation
                      title: Pose
                      type: object
                    sample_id:
                      type: string
                    type:
                      type: string
                  required:
                  - id
                  - name
                  - sample_id
                  - children
                  - parent
                  - type
                  - category
                  - pose
                  - config
                  - data
                  title: Resource
                  type: object
                rate_spec:
                  type: string
                rinsing_repeats:
                  maximum: 2147483647
                  minimum: -2147483648
                  type: integer
                rinsing_solvent:
                  type: string
                rinsing_volume:
                  type: number
                solid:
                  type: boolean
                through:
                  type: string
                time:
                  type: number
                to_vessel:
                  properties:
                    category:
                      type: string
                    children:
                      items:
                        type: string
                      type: array
                    config:
                      type: string
                    data:
                      type: string
                    id:
                      type: string
                    name:
                      type: string
                    parent:
                      type: string
                    pose:
                      properties:
                        orientation:
                          properties:
                            w:
                              type: number
                            x:
                              type: number
                            y:
                              type: number
                            z:
                              type: number
                          required:
                          - x
                          - y
                          - z
                          - w
                          title: Quaternion
                          type: object
                        position:
                          properties:
                            x:
                              type: number
                            y:
                              type: number
                            z:
                              type: number
                          required:
                          - x
                          - y
                          - z
                          title: Point
                          type: object
                      required:
                      - position
                      - orientation
                      title: Pose
                      type: object
                    sample_id:
                      type: string
                    type:
                      type: string
                  required:
                  - id
                  - name
                  - sample_id
                  - children
                  - parent
                  - type
                  - category
                  - pose
                  - config
                  - data
                  title: Resource
                  type: object
                transfer_flowrate:
                  type: number
                viscous:
                  type: boolean
                volume:
                  type: number
              required:
              - from_vessel
              - to_vessel
              - volume
              - amount
              - time
              - viscous
              - rinsing_solvent
              - rinsing_volume
              - rinsing_repeats
              - solid
              - flowrate
              - transfer_flowrate
              - rate_spec
              - event
              - through
              title: PumpTransfer_Goal
              type: object
            result:
              properties:
                return_info:
                  type: string
                success:
                  type: boolean
              required:
              - return_info
              - success
              title: PumpTransfer_Result
              type: object
          required:
          - goal
          title: PumpTransfer
          type: object
        type: PumpTransfer
    module: unilabos.devices.virtual.virtual_pump:VirtualPump
    status_types:
      current_status: str
      current_volume: float
      from_vessel: str
      max_volume: float
      progress: float
      status: str
      to_vessel: str
      transfer_rate: float
      transferred_volume: float
      valve_position: int
    type: python
  config_info: []
  description: Virtual Pump for PumpTransferProtocol Testing
  handles:
  - data_key: fluid_in
    data_source: handle
    data_type: fluid
    description: 泵的输出口
    handler_key: pumpio
    io_type: source
    label: pumpio
  icon: ''
  init_param_schema:
    config:
      properties:
        config:
          type: object
        device_id:
          type: string
      required: []
      type: object
    data:
      properties:
        current_status:
          type: string
        current_volume:
          type: number
        from_vessel:
          type: string
        max_volume:
          type: number
        progress:
          type: number
        status:
          type: string
        to_vessel:
          type: string
        transfer_rate:
          type: number
        transferred_volume:
          type: number
        valve_position:
          type: integer
      required:
      - status
      - valve_position
      - current_volume
      - max_volume
      - transfer_rate
      - from_vessel
      - to_vessel
      - progress
      - transferred_volume
      - current_status
      type: object
  version: 1.0.0
virtual_rotavap:
  category:
  - virtual_device
  class:
    action_value_mappings:
      auto-cleanup:
        feedback: {}
        goal: {}
        goal_default: {}
        handles: []
        result: {}
        schema:
          description: cleanup的参数schema
          properties:
            feedback: {}
            goal:
              properties: {}
              required: []
              type: object
            result: {}
          required:
          - goal
          title: cleanup参数
          type: object
        type: UniLabJsonCommandAsync
      auto-initialize:
        feedback: {}
        goal: {}
        goal_default: {}
        handles: []
        result: {}
        schema:
          description: initialize的参数schema
          properties:
            feedback: {}
            goal:
              properties: {}
              required: []
              type: object
            result: {}
          required:
          - goal
          title: initialize参数
          type: object
        type: UniLabJsonCommandAsync
      evaporate:
        feedback:
          current_device: current_device
          status: status
        goal:
          pressure: pressure
          stir_speed: stir_speed
          temp: temp
          time: time
          vessel: vessel
        goal_default:
          pressure: 0.0
          solvent: ''
          stir_speed: 0.0
          temp: 0.0
          time: ''
          vessel:
            category: ''
            children: []
            config: ''
            data: ''
            id: ''
            name: ''
            parent: ''
            pose:
              orientation:
                w: 1.0
                x: 0.0
                y: 0.0
                z: 0.0
              position:
                x: 0.0
                y: 0.0
                z: 0.0
            sample_id: ''
            type: ''
        handles: []
        result:
          message: message
          success: success
        schema:
          description: ''
          properties:
            feedback:
              properties:
                current_device:
                  type: string
                status:
                  type: string
                time_remaining:
                  properties:
                    nanosec:
                      maximum: 4294967295
                      minimum: 0
                      type: integer
                    sec:
                      maximum: 2147483647
                      minimum: -2147483648
                      type: integer
                  required:
                  - sec
                  - nanosec
                  title: Duration
                  type: object
                time_spent:
                  properties:
                    nanosec:
                      maximum: 4294967295
                      minimum: 0
                      type: integer
                    sec:
                      maximum: 2147483647
                      minimum: -2147483648
                      type: integer
                  required:
                  - sec
                  - nanosec
                  title: Duration
                  type: object
              required:
              - status
              - current_device
              - time_spent
              - time_remaining
              title: Evaporate_Feedback
              type: object
            goal:
              properties:
                pressure:
                  type: number
                solvent:
                  type: string
                stir_speed:
                  type: number
                temp:
                  type: number
                time:
                  type: string
                vessel:
                  properties:
                    category:
                      type: string
                    children:
                      items:
                        type: string
                      type: array
                    config:
                      type: string
                    data:
                      type: string
                    id:
                      type: string
                    name:
                      type: string
                    parent:
                      type: string
                    pose:
                      properties:
                        orientation:
                          properties:
                            w:
                              type: number
                            x:
                              type: number
                            y:
                              type: number
                            z:
                              type: number
                          required:
                          - x
                          - y
                          - z
                          - w
                          title: Quaternion
                          type: object
                        position:
                          properties:
                            x:
                              type: number
                            y:
                              type: number
                            z:
                              type: number
                          required:
                          - x
                          - y
                          - z
                          title: Point
                          type: object
                      required:
                      - position
                      - orientation
                      title: Pose
                      type: object
                    sample_id:
                      type: string
                    type:
                      type: string
                  required:
                  - id
                  - name
                  - sample_id
                  - children
                  - parent
                  - type
                  - category
                  - pose
                  - config
                  - data
                  title: Resource
                  type: object
              required:
              - vessel
              - pressure
              - temp
              - time
              - stir_speed
              - solvent
              title: Evaporate_Goal
              type: object
            result:
              properties:
                return_info:
                  type: string
                success:
                  type: boolean
              required:
              - return_info
              - success
              title: Evaporate_Result
              type: object
          required:
          - goal
          title: Evaporate
          type: object
        type: Evaporate
    module: unilabos.devices.virtual.virtual_rotavap:VirtualRotavap
    status_types:
      current_temp: float
      evaporated_volume: float
      max_rotation_speed: float
      max_temp: float
      message: str
      progress: float
      remaining_time: float
      rotation_speed: float
      rotavap_state: str
      status: str
      vacuum_pressure: float
    type: python
  config_info: []
  description: Virtual Rotary Evaporator for EvaporateProtocol Testing
  handles:
  - data_key: vessel_in
    data_source: handle
    data_type: fluid
    description: 样品连接口
    handler_key: samplein
    io_type: target
    label: sample_in
    side: NORTH
  - data_key: product_out
    data_source: handle
    data_type: fluid
    description: 浓缩产物出口
    handler_key: productout
    io_type: source
    label: product_out
    side: SOUTH
  - data_key: solvent_out
    data_source: handle
    data_type: fluid
    description: 冷凝溶剂出口
    handler_key: solventout
    io_type: source
    label: solvent_out
    side: EAST
  icon: Rotaryevaporator.webp
  init_param_schema:
    config:
      properties:
        config:
          type: string
        device_id:
          type: string
      required: []
      type: object
    data:
      properties:
        current_temp:
          type: number
        evaporated_volume:
          type: number
        max_rotation_speed:
          type: number
        max_temp:
          type: number
        message:
          type: string
        progress:
          type: number
        remaining_time:
          type: number
        rotation_speed:
          type: number
        rotavap_state:
          type: string
        status:
          type: string
        vacuum_pressure:
          type: number
      required:
      - status
      - rotavap_state
      - current_temp
      - rotation_speed
      - vacuum_pressure
      - evaporated_volume
      - progress
      - message
      - max_temp
      - max_rotation_speed
      - remaining_time
      type: object
  version: 1.0.0
virtual_separator:
  category:
  - virtual_device
  class:
    action_value_mappings:
      auto-cleanup:
        feedback: {}
        goal: {}
        goal_default: {}
        handles: []
        result: {}
        schema:
          description: cleanup的参数schema
          properties:
            feedback: {}
            goal:
              properties: {}
              required: []
              type: object
            result: {}
          required:
          - goal
          title: cleanup参数
          type: object
        type: UniLabJsonCommandAsync
      auto-initialize:
        feedback: {}
        goal: {}
        goal_default: {}
        handles: []
        result: {}
        schema:
          description: initialize的参数schema
          properties:
            feedback: {}
            goal:
              properties: {}
              required: []
              type: object
            result: {}
          required:
          - goal
          title: initialize参数
          type: object
        type: UniLabJsonCommandAsync
      separate:
        feedback:
          current_status: status
          progress: progress
        goal:
          from_vessel: from_vessel
          product_phase: product_phase
          purpose: purpose
          repeats: repeats
          separation_vessel: separation_vessel
          settling_time: settling_time
          solvent: solvent
          solvent_volume: solvent_volume
          stir_speed: stir_speed
          stir_time: stir_time
          through: through
          to_vessel: to_vessel
          waste_phase_to_vessel: waste_phase_to_vessel
        goal_default:
          from_vessel:
            category: ''
            children: []
            config: ''
            data: ''
            id: ''
            name: ''
            parent: ''
            pose:
              orientation:
                w: 1.0
                x: 0.0
                y: 0.0
                z: 0.0
              position:
                x: 0.0
                y: 0.0
                z: 0.0
            sample_id: ''
            type: ''
          product_phase: ''
          product_vessel:
            category: ''
            children: []
            config: ''
            data: ''
            id: ''
            name: ''
            parent: ''
            pose:
              orientation:
                w: 1.0
                x: 0.0
                y: 0.0
                z: 0.0
              position:
                x: 0.0
                y: 0.0
                z: 0.0
            sample_id: ''
            type: ''
          purpose: ''
          repeats: 0
          separation_vessel:
            category: ''
            children: []
            config: ''
            data: ''
            id: ''
            name: ''
            parent: ''
            pose:
              orientation:
                w: 1.0
                x: 0.0
                y: 0.0
                z: 0.0
              position:
                x: 0.0
                y: 0.0
                z: 0.0
            sample_id: ''
            type: ''
          settling_time: 0.0
          solvent: ''
          solvent_volume: ''
          stir_speed: 0.0
          stir_time: 0.0
          through: ''
          to_vessel:
            category: ''
            children: []
            config: ''
            data: ''
            id: ''
            name: ''
            parent: ''
            pose:
              orientation:
                w: 1.0
                x: 0.0
                y: 0.0
                z: 0.0
              position:
                x: 0.0
                y: 0.0
                z: 0.0
            sample_id: ''
            type: ''
          vessel:
            category: ''
            children: []
            config: ''
            data: ''
            id: ''
            name: ''
            parent: ''
            pose:
              orientation:
                w: 1.0
                x: 0.0
                y: 0.0
                z: 0.0
              position:
                x: 0.0
                y: 0.0
                z: 0.0
            sample_id: ''
            type: ''
          volume: ''
          waste_phase_to_vessel:
            category: ''
            children: []
            config: ''
            data: ''
            id: ''
            name: ''
            parent: ''
            pose:
              orientation:
                w: 1.0
                x: 0.0
                y: 0.0
                z: 0.0
              position:
                x: 0.0
                y: 0.0
                z: 0.0
            sample_id: ''
            type: ''
          waste_vessel:
            category: ''
            children: []
            config: ''
            data: ''
            id: ''
            name: ''
            parent: ''
            pose:
              orientation:
                w: 1.0
                x: 0.0
                y: 0.0
                z: 0.0
              position:
                x: 0.0
                y: 0.0
                z: 0.0
            sample_id: ''
            type: ''
        handles: []
        result:
          message: message
          success: success
        schema:
          description: ''
          properties:
            feedback:
              properties:
                progress:
                  type: number
                status:
                  type: string
              required:
              - status
              - progress
              title: Separate_Feedback
              type: object
            goal:
              properties:
                from_vessel:
                  properties:
                    category:
                      type: string
                    children:
                      items:
                        type: string
                      type: array
                    config:
                      type: string
                    data:
                      type: string
                    id:
                      type: string
                    name:
                      type: string
                    parent:
                      type: string
                    pose:
                      properties:
                        orientation:
                          properties:
                            w:
                              type: number
                            x:
                              type: number
                            y:
                              type: number
                            z:
                              type: number
                          required:
                          - x
                          - y
                          - z
                          - w
                          title: Quaternion
                          type: object
                        position:
                          properties:
                            x:
                              type: number
                            y:
                              type: number
                            z:
                              type: number
                          required:
                          - x
                          - y
                          - z
                          title: Point
                          type: object
                      required:
                      - position
                      - orientation
                      title: Pose
                      type: object
                    sample_id:
                      type: string
                    type:
                      type: string
                  required:
                  - id
                  - name
                  - sample_id
                  - children
                  - parent
                  - type
                  - category
                  - pose
                  - config
                  - data
                  title: Resource
                  type: object
                product_phase:
                  type: string
                product_vessel:
                  properties:
                    category:
                      type: string
                    children:
                      items:
                        type: string
                      type: array
                    config:
                      type: string
                    data:
                      type: string
                    id:
                      type: string
                    name:
                      type: string
                    parent:
                      type: string
                    pose:
                      properties:
                        orientation:
                          properties:
                            w:
                              type: number
                            x:
                              type: number
                            y:
                              type: number
                            z:
                              type: number
                          required:
                          - x
                          - y
                          - z
                          - w
                          title: Quaternion
                          type: object
                        position:
                          properties:
                            x:
                              type: number
                            y:
                              type: number
                            z:
                              type: number
                          required:
                          - x
                          - y
                          - z
                          title: Point
                          type: object
                      required:
                      - position
                      - orientation
                      title: Pose
                      type: object
                    sample_id:
                      type: string
                    type:
                      type: string
                  required:
                  - id
                  - name
                  - sample_id
                  - children
                  - parent
                  - type
                  - category
                  - pose
                  - config
                  - data
                  title: Resource
                  type: object
                purpose:
                  type: string
                repeats:
                  maximum: 2147483647
                  minimum: -2147483648
                  type: integer
                separation_vessel:
                  properties:
                    category:
                      type: string
                    children:
                      items:
                        type: string
                      type: array
                    config:
                      type: string
                    data:
                      type: string
                    id:
                      type: string
                    name:
                      type: string
                    parent:
                      type: string
                    pose:
                      properties:
                        orientation:
                          properties:
                            w:
                              type: number
                            x:
                              type: number
                            y:
                              type: number
                            z:
                              type: number
                          required:
                          - x
                          - y
                          - z
                          - w
                          title: Quaternion
                          type: object
                        position:
                          properties:
                            x:
                              type: number
                            y:
                              type: number
                            z:
                              type: number
                          required:
                          - x
                          - y
                          - z
                          title: Point
                          type: object
                      required:
                      - position
                      - orientation
                      title: Pose
                      type: object
                    sample_id:
                      type: string
                    type:
                      type: string
                  required:
                  - id
                  - name
                  - sample_id
                  - children
                  - parent
                  - type
                  - category
                  - pose
                  - config
                  - data
                  title: Resource
                  type: object
                settling_time:
                  type: number
                solvent:
                  type: string
                solvent_volume:
                  type: string
                stir_speed:
                  type: number
                stir_time:
                  type: number
                through:
                  type: string
                to_vessel:
                  properties:
                    category:
                      type: string
                    children:
                      items:
                        type: string
                      type: array
                    config:
                      type: string
                    data:
                      type: string
                    id:
                      type: string
                    name:
                      type: string
                    parent:
                      type: string
                    pose:
                      properties:
                        orientation:
                          properties:
                            w:
                              type: number
                            x:
                              type: number
                            y:
                              type: number
                            z:
                              type: number
                          required:
                          - x
                          - y
                          - z
                          - w
                          title: Quaternion
                          type: object
                        position:
                          properties:
                            x:
                              type: number
                            y:
                              type: number
                            z:
                              type: number
                          required:
                          - x
                          - y
                          - z
                          title: Point
                          type: object
                      required:
                      - position
                      - orientation
                      title: Pose
                      type: object
                    sample_id:
                      type: string
                    type:
                      type: string
                  required:
                  - id
                  - name
                  - sample_id
                  - children
                  - parent
                  - type
                  - category
                  - pose
                  - config
                  - data
                  title: Resource
                  type: object
                vessel:
                  properties:
                    category:
                      type: string
                    children:
                      items:
                        type: string
                      type: array
                    config:
                      type: string
                    data:
                      type: string
                    id:
                      type: string
                    name:
                      type: string
                    parent:
                      type: string
                    pose:
                      properties:
                        orientation:
                          properties:
                            w:
                              type: number
                            x:
                              type: number
                            y:
                              type: number
                            z:
                              type: number
                          required:
                          - x
                          - y
                          - z
                          - w
                          title: Quaternion
                          type: object
                        position:
                          properties:
                            x:
                              type: number
                            y:
                              type: number
                            z:
                              type: number
                          required:
                          - x
                          - y
                          - z
                          title: Point
                          type: object
                      required:
                      - position
                      - orientation
                      title: Pose
                      type: object
                    sample_id:
                      type: string
                    type:
                      type: string
                  required:
                  - id
                  - name
                  - sample_id
                  - children
                  - parent
                  - type
                  - category
                  - pose
                  - config
                  - data
                  title: Resource
                  type: object
                volume:
                  type: string
                waste_phase_to_vessel:
                  properties:
                    category:
                      type: string
                    children:
                      items:
                        type: string
                      type: array
                    config:
                      type: string
                    data:
                      type: string
                    id:
                      type: string
                    name:
                      type: string
                    parent:
                      type: string
                    pose:
                      properties:
                        orientation:
                          properties:
                            w:
                              type: number
                            x:
                              type: number
                            y:
                              type: number
                            z:
                              type: number
                          required:
                          - x
                          - y
                          - z
                          - w
                          title: Quaternion
                          type: object
                        position:
                          properties:
                            x:
                              type: number
                            y:
                              type: number
                            z:
                              type: number
                          required:
                          - x
                          - y
                          - z
                          title: Point
                          type: object
                      required:
                      - position
                      - orientation
                      title: Pose
                      type: object
                    sample_id:
                      type: string
                    type:
                      type: string
                  required:
                  - id
                  - name
                  - sample_id
                  - children
                  - parent
                  - type
                  - category
                  - pose
                  - config
                  - data
                  title: Resource
                  type: object
                waste_vessel:
                  properties:
                    category:
                      type: string
                    children:
                      items:
                        type: string
                      type: array
                    config:
                      type: string
                    data:
                      type: string
                    id:
                      type: string
                    name:
                      type: string
                    parent:
                      type: string
                    pose:
                      properties:
                        orientation:
                          properties:
                            w:
                              type: number
                            x:
                              type: number
                            y:
                              type: number
                            z:
                              type: number
                          required:
                          - x
                          - y
                          - z
                          - w
                          title: Quaternion
                          type: object
                        position:
                          properties:
                            x:
                              type: number
                            y:
                              type: number
                            z:
                              type: number
                          required:
                          - x
                          - y
                          - z
                          title: Point
                          type: object
                      required:
                      - position
                      - orientation
                      title: Pose
                      type: object
                    sample_id:
                      type: string
                    type:
                      type: string
                  required:
                  - id
                  - name
                  - sample_id
                  - children
                  - parent
                  - type
                  - category
                  - pose
                  - config
                  - data
                  title: Resource
                  type: object
              required:
              - vessel
              - purpose
              - product_phase
              - from_vessel
              - separation_vessel
              - to_vessel
              - waste_phase_to_vessel
              - product_vessel
              - waste_vessel
              - solvent
              - solvent_volume
              - volume
              - through
              - repeats
              - stir_time
              - stir_speed
              - settling_time
              title: Separate_Goal
              type: object
            result:
              properties:
                message:
                  type: string
                return_info:
                  type: string
                success:
                  type: boolean
              required:
              - success
              - message
              - return_info
              title: Separate_Result
              type: object
          required:
          - goal
          title: Separate
          type: object
        type: Separate
    module: unilabos.devices.virtual.virtual_separator:VirtualSeparator
    status_types:
      has_phases: bool
      message: str
      phase_separation: bool
      progress: float
      separator_state: str
      settling_time: float
      status: str
      stir_speed: float
      volume: float
    type: python
  config_info: []
  description: Virtual Separator for SeparateProtocol Testing
  handles:
  - data_key: from_vessel
    data_source: handle
    data_type: fluid
    description: 需要分离的混合液体输入口
    handler_key: separatorin
    io_type: target
    label: separator_in
    side: NORTH
  - data_key: bottom_outlet
    data_source: executor
    data_type: fluid
    description: 下相（重相）液体输出口
    handler_key: bottomphaseout
    io_type: source
    label: bottom_phase_out
    side: SOUTH
  - data_key: mechanical_port
    data_source: handle
    data_type: mechanical
    description: 用于连接搅拌器等机械设备的接口
    handler_key: bind
    io_type: target
    label: bind
    side: WEST
  icon: Separator.webp
  init_param_schema:
    config:
      properties:
        config:
          type: string
        device_id:
          type: string
      required: []
      type: object
    data:
      properties:
        has_phases:
          type: boolean
        message:
          type: string
        phase_separation:
          type: boolean
        progress:
          type: number
        separator_state:
          type: string
        settling_time:
          type: number
        status:
          type: string
        stir_speed:
          type: number
        volume:
          type: number
      required:
      - status
      - separator_state
      - volume
      - has_phases
      - phase_separation
      - stir_speed
      - settling_time
      - progress
      - message
      type: object
  version: 1.0.0
virtual_solenoid_valve:
  category:
  - virtual_device
  class:
    action_value_mappings:
      auto-cleanup:
        feedback: {}
        goal: {}
        goal_default: {}
        handles: []
        result: {}
        schema:
          description: cleanup的参数schema
          properties:
            feedback: {}
            goal:
              properties: {}
              required: []
              type: object
            result: {}
          required:
          - goal
          title: cleanup参数
          type: object
        type: UniLabJsonCommandAsync
      auto-initialize:
        feedback: {}
        goal: {}
        goal_default: {}
        handles: []
        result: {}
        schema:
          description: initialize的参数schema
          properties:
            feedback: {}
            goal:
              properties: {}
              required: []
              type: object
            result: {}
          required:
          - goal
          title: initialize参数
          type: object
        type: UniLabJsonCommandAsync
      auto-is_closed:
        feedback: {}
        goal: {}
        goal_default: {}
        handles: []
        result: {}
        schema:
          description: is_closed的参数schema
          properties:
            feedback: {}
            goal:
              properties: {}
              required: []
              type: object
            result: {}
          required:
          - goal
          title: is_closed参数
          type: object
        type: UniLabJsonCommand
      auto-reset:
        feedback: {}
        goal: {}
        goal_default: {}
        handles: []
        result: {}
        schema:
          description: reset的参数schema
          properties:
            feedback: {}
            goal:
              properties: {}
              required: []
              type: object
            result: {}
          required:
          - goal
          title: reset参数
          type: object
        type: UniLabJsonCommandAsync
      auto-toggle:
        feedback: {}
        goal: {}
        goal_default: {}
        handles: []
        result: {}
        schema:
          description: toggle的参数schema
          properties:
            feedback: {}
            goal:
              properties: {}
              required: []
              type: object
            result: {}
          required:
          - goal
          title: toggle参数
          type: object
        type: UniLabJsonCommand
      close:
        feedback: {}
        goal:
          command: CLOSED
        goal_default: {}
        handles: []
        result:
          success: success
        schema:
          description: ''
          properties:
            feedback:
              properties: {}
              required: []
              title: EmptyIn_Feedback
              type: object
            goal:
              properties: {}
              required: []
              title: EmptyIn_Goal
              type: object
            result:
              properties:
                return_info:
                  type: string
              required:
              - return_info
              title: EmptyIn_Result
              type: object
          required:
          - goal
          title: EmptyIn
          type: object
        type: EmptyIn
      open:
        feedback: {}
        goal: {}
        goal_default: {}
        handles: []
        result: {}
        schema:
          description: ''
          properties:
            feedback:
              properties: {}
              required: []
              title: EmptyIn_Feedback
              type: object
            goal:
              properties: {}
              required: []
              title: EmptyIn_Goal
              type: object
            result:
              properties:
                return_info:
                  type: string
              required:
              - return_info
              title: EmptyIn_Result
              type: object
          required:
          - goal
          title: EmptyIn
          type: object
        type: EmptyIn
      set_status:
        feedback: {}
        goal:
          string: string
        goal_default:
          string: ''
        handles: []
        result: {}
        schema:
          description: ''
          properties:
            feedback:
              properties: {}
              required: []
              title: StrSingleInput_Feedback
              type: object
            goal:
              properties:
                string:
                  type: string
              required:
              - string
              title: StrSingleInput_Goal
              type: object
            result:
              properties:
                return_info:
                  type: string
                success:
                  type: boolean
              required:
              - return_info
              - success
              title: StrSingleInput_Result
              type: object
          required:
          - goal
          title: StrSingleInput
          type: object
        type: StrSingleInput
      set_valve_position:
        feedback: {}
        goal:
          command: command
        goal_default:
          command: ''
        handles: []
        result:
          message: message
          success: success
          valve_position: valve_position
        schema:
          description: ''
          properties:
            feedback:
              properties:
                status:
                  type: string
              required:
              - status
              title: SendCmd_Feedback
              type: object
            goal:
              properties:
                command:
                  type: string
              required:
              - command
              title: SendCmd_Goal
              type: object
            result:
              properties:
                return_info:
                  type: string
                success:
                  type: boolean
              required:
              - return_info
              - success
              title: SendCmd_Result
              type: object
          required:
          - goal
          title: SendCmd
          type: object
        type: SendCmd
    module: unilabos.devices.virtual.virtual_solenoid_valve:VirtualSolenoidValve
    status_types:
      is_open: bool
      state: dict
      status: str
      valve_position: str
      valve_state: str
    type: python
  config_info: []
  description: Virtual Solenoid Valve for simple on/off flow control
  handles:
  - data_key: fluid_port_in
    data_source: handle
    data_type: fluid
    description: 电磁阀的进液口
    handler_key: in
    io_type: target
    label: in
    side: NORTH
  - data_key: fluid_port_out
    data_source: handle
    data_type: fluid
    description: 电磁阀的出液口
    handler_key: out
    io_type: source
    label: out
    side: SOUTH
  icon: ''
  init_param_schema:
    config:
      properties:
        config:
          type: object
        device_id:
          type: string
      required: []
      type: object
    data:
      properties:
        is_open:
          type: boolean
        state:
          type: object
        status:
          type: string
        valve_position:
          type: string
        valve_state:
          type: string
      required:
      - status
      - valve_state
      - is_open
      - valve_position
      - state
      type: object
  version: 1.0.0
virtual_solid_dispenser:
  category:
  - virtual_device
  class:
    action_value_mappings:
      add_solid:
        feedback:
          current_status: status
          progress: progress
        goal:
          equiv: equiv
          event: event
          mass: mass
          mol: mol
          purpose: purpose
          rate_spec: rate_spec
          ratio: ratio
          reagent: reagent
          vessel: vessel
        goal_default:
          amount: ''
          equiv: ''
          event: ''
          mass: ''
          mol: ''
          purpose: ''
          rate_spec: ''
          ratio: ''
          reagent: ''
          stir: false
          stir_speed: 0.0
          time: ''
          vessel:
            category: ''
            children: []
            config: ''
            data: ''
            id: ''
            name: ''
            parent: ''
            pose:
              orientation:
                w: 1.0
                x: 0.0
                y: 0.0
                z: 0.0
              position:
                x: 0.0
                y: 0.0
                z: 0.0
            sample_id: ''
            type: ''
          viscous: false
          volume: ''
        handles: []
        result:
          message: message
          return_info: return_info
          success: success
        schema:
          description: ''
          properties:
            feedback:
              properties:
                current_status:
                  type: string
                progress:
                  type: number
              required:
              - progress
              - current_status
              title: Add_Feedback
              type: object
            goal:
              properties:
                amount:
                  type: string
                equiv:
                  type: string
                event:
                  type: string
                mass:
                  type: string
                mol:
                  type: string
                purpose:
                  type: string
                rate_spec:
                  type: string
                ratio:
                  type: string
                reagent:
                  type: string
                stir:
                  type: boolean
                stir_speed:
                  type: number
                time:
                  type: string
                vessel:
                  properties:
                    category:
                      type: string
                    children:
                      items:
                        type: string
                      type: array
                    config:
                      type: string
                    data:
                      type: string
                    id:
                      type: string
                    name:
                      type: string
                    parent:
                      type: string
                    pose:
                      properties:
                        orientation:
                          properties:
                            w:
                              type: number
                            x:
                              type: number
                            y:
                              type: number
                            z:
                              type: number
                          required:
                          - x
                          - y
                          - z
                          - w
                          title: Quaternion
                          type: object
                        position:
                          properties:
                            x:
                              type: number
                            y:
                              type: number
                            z:
                              type: number
                          required:
                          - x
                          - y
                          - z
                          title: Point
                          type: object
                      required:
                      - position
                      - orientation
                      title: Pose
                      type: object
                    sample_id:
                      type: string
                    type:
                      type: string
                  required:
                  - id
                  - name
                  - sample_id
                  - children
                  - parent
                  - type
                  - category
                  - pose
                  - config
                  - data
                  title: Resource
                  type: object
                viscous:
                  type: boolean
                volume:
                  type: string
              required:
              - vessel
              - reagent
              - volume
              - mass
              - amount
              - time
              - stir
              - stir_speed
              - viscous
              - purpose
              - event
              - mol
              - rate_spec
              - equiv
              - ratio
              title: Add_Goal
              type: object
            result:
              properties:
                message:
                  type: string
                return_info:
                  type: string
                success:
                  type: boolean
              required:
              - success
              - message
              - return_info
              title: Add_Result
              type: object
          required:
          - goal
          title: Add
          type: object
        type: Add
      auto-cleanup:
        feedback: {}
        goal: {}
        goal_default: {}
        handles: []
        result: {}
        schema:
          description: cleanup的参数schema
          properties:
            feedback: {}
            goal:
              properties: {}
              required: []
              type: object
            result: {}
          required:
          - goal
          title: cleanup参数
          type: object
        type: UniLabJsonCommandAsync
      auto-find_solid_reagent_bottle:
        feedback: {}
        goal: {}
        goal_default:
          reagent_name: null
        handles: []
        result: {}
        schema:
          description: ''
          properties:
            feedback: {}
            goal:
              properties:
                reagent_name:
                  type: string
              required:
              - reagent_name
              type: object
            result: {}
          required:
          - goal
          title: find_solid_reagent_bottle参数
          type: object
        type: UniLabJsonCommand
      auto-initialize:
        feedback: {}
        goal: {}
        goal_default: {}
        handles: []
        result: {}
        schema:
          description: initialize的参数schema
          properties:
            feedback: {}
            goal:
              properties: {}
              required: []
              type: object
            result: {}
          required:
          - goal
          title: initialize参数
          type: object
        type: UniLabJsonCommandAsync
      auto-parse_mass_string:
        feedback: {}
        goal: {}
        goal_default:
          mass_str: null
        handles: []
        result: {}
        schema:
          description: ''
          properties:
            feedback: {}
            goal:
              properties:
                mass_str:
                  type: string
              required:
              - mass_str
              type: object
            result: {}
          required:
          - goal
          title: parse_mass_string参数
          type: object
        type: UniLabJsonCommand
      auto-parse_mol_string:
        feedback: {}
        goal: {}
        goal_default:
          mol_str: null
        handles: []
        result: {}
        schema:
          description: ''
          properties:
            feedback: {}
            goal:
              properties:
                mol_str:
                  type: string
              required:
              - mol_str
              type: object
            result: {}
          required:
          - goal
          title: parse_mol_string参数
          type: object
        type: UniLabJsonCommand
    module: unilabos.devices.virtual.virtual_solid_dispenser:VirtualSolidDispenser
    status_types:
      current_reagent: str
      device_info: dict
      dispensed_amount: float
      status: str
      total_operations: int
    type: python
  config_info: []
  description: Virtual Solid Dispenser for Add Protocol Testing - supports mass and
    molar additions
  handles:
  - data_key: solid_out
    data_source: executor
    data_type: resource
    description: 固体试剂输出口
    handler_key: SolidOut
    io_type: source
    label: SolidOut
    side: SOUTH
  - data_key: solid_in
    data_source: handle
    data_type: resource
    description: 固体试剂输入口（连接试剂瓶）
    handler_key: SolidIn
    io_type: target
    label: SolidIn
    side: NORTH
  icon: ''
  init_param_schema:
    config:
      properties:
        config:
          type: object
        device_id:
          type: string
      required: []
      type: object
    data:
      properties:
        current_reagent:
          type: string
        device_info:
          type: object
        dispensed_amount:
          type: number
        status:
          type: string
        total_operations:
          type: integer
      required:
      - status
      - current_reagent
      - dispensed_amount
      - total_operations
      - device_info
      type: object
  version: 1.0.0
virtual_stirrer:
  category:
  - virtual_device
  class:
    action_value_mappings:
      auto-cleanup:
        feedback: {}
        goal: {}
        goal_default: {}
        handles: []
        result: {}
        schema:
          description: cleanup的参数schema
          properties:
            feedback: {}
            goal:
              properties: {}
              required: []
              type: object
            result: {}
          required:
          - goal
          title: cleanup参数
          type: object
        type: UniLabJsonCommandAsync
      auto-initialize:
        feedback: {}
        goal: {}
        goal_default: {}
        handles: []
        result: {}
        schema:
          description: initialize的参数schema
          properties:
            feedback: {}
            goal:
              properties: {}
              required: []
              type: object
            result: {}
          required:
          - goal
          title: initialize参数
          type: object
        type: UniLabJsonCommandAsync
      start_stir:
        feedback:
          status: status
        goal:
          purpose: purpose
          stir_speed: stir_speed
          vessel: vessel
        goal_default:
          purpose: ''
          stir_speed: 0.0
          vessel:
            category: ''
            children: []
            config: ''
            data: ''
            id: ''
            name: ''
            parent: ''
            pose:
              orientation:
                w: 1.0
                x: 0.0
                y: 0.0
                z: 0.0
              position:
                x: 0.0
                y: 0.0
                z: 0.0
            sample_id: ''
            type: ''
        handles: []
        result:
          success: success
        schema:
          description: ''
          properties:
            feedback:
              properties:
                current_speed:
                  type: number
                current_status:
                  type: string
                progress:
                  type: number
              required:
              - progress
              - current_speed
              - current_status
              title: StartStir_Feedback
              type: object
            goal:
              properties:
                purpose:
                  type: string
                stir_speed:
                  type: number
                vessel:
                  properties:
                    category:
                      type: string
                    children:
                      items:
                        type: string
                      type: array
                    config:
                      type: string
                    data:
                      type: string
                    id:
                      type: string
                    name:
                      type: string
                    parent:
                      type: string
                    pose:
                      properties:
                        orientation:
                          properties:
                            w:
                              type: number
                            x:
                              type: number
                            y:
                              type: number
                            z:
                              type: number
                          required:
                          - x
                          - y
                          - z
                          - w
                          title: Quaternion
                          type: object
                        position:
                          properties:
                            x:
                              type: number
                            y:
                              type: number
                            z:
                              type: number
                          required:
                          - x
                          - y
                          - z
                          title: Point
                          type: object
                      required:
                      - position
                      - orientation
                      title: Pose
                      type: object
                    sample_id:
                      type: string
                    type:
                      type: string
                  required:
                  - id
                  - name
                  - sample_id
                  - children
                  - parent
                  - type
                  - category
                  - pose
                  - config
                  - data
                  title: Resource
                  type: object
              required:
              - vessel
              - stir_speed
              - purpose
              title: StartStir_Goal
              type: object
            result:
              properties:
                message:
                  type: string
                return_info:
                  type: string
                success:
                  type: boolean
              required:
              - success
              - message
              - return_info
              title: StartStir_Result
              type: object
          required:
          - goal
          title: StartStir
          type: object
        type: StartStir
      stir:
        feedback:
          status: status
        goal:
          settling_time: settling_time
          stir_speed: stir_speed
          stir_time: stir_time
        goal_default:
          event: ''
          settling_time: ''
          stir_speed: 0.0
          stir_time: 0.0
          time: ''
          time_spec: ''
          vessel:
            category: ''
            children: []
            config: ''
            data: ''
            id: ''
            name: ''
            parent: ''
            pose:
              orientation:
                w: 1.0
                x: 0.0
                y: 0.0
                z: 0.0
              position:
                x: 0.0
                y: 0.0
                z: 0.0
            sample_id: ''
            type: ''
        handles: []
        result:
          success: success
        schema:
          description: ''
          properties:
            feedback:
              properties:
                status:
                  type: string
              required:
              - status
              title: Stir_Feedback
              type: object
            goal:
              properties:
                event:
                  type: string
                settling_time:
                  type: string
                stir_speed:
                  type: number
                stir_time:
                  type: number
                time:
                  type: string
                time_spec:
                  type: string
                vessel:
                  properties:
                    category:
                      type: string
                    children:
                      items:
                        type: string
                      type: array
                    config:
                      type: string
                    data:
                      type: string
                    id:
                      type: string
                    name:
                      type: string
                    parent:
                      type: string
                    pose:
                      properties:
                        orientation:
                          properties:
                            w:
                              type: number
                            x:
                              type: number
                            y:
                              type: number
                            z:
                              type: number
                          required:
                          - x
                          - y
                          - z
                          - w
                          title: Quaternion
                          type: object
                        position:
                          properties:
                            x:
                              type: number
                            y:
                              type: number
                            z:
                              type: number
                          required:
                          - x
                          - y
                          - z
                          title: Point
                          type: object
                      required:
                      - position
                      - orientation
                      title: Pose
                      type: object
                    sample_id:
                      type: string
                    type:
                      type: string
                  required:
                  - id
                  - name
                  - sample_id
                  - children
                  - parent
                  - type
                  - category
                  - pose
                  - config
                  - data
                  title: Resource
                  type: object
              required:
              - vessel
              - time
              - event
              - time_spec
              - stir_time
              - stir_speed
              - settling_time
              title: Stir_Goal
              type: object
            result:
              properties:
                message:
                  type: string
                return_info:
                  type: string
                success:
                  type: boolean
              required:
              - success
              - message
              - return_info
              title: Stir_Result
              type: object
          required:
          - goal
          title: Stir
          type: object
        type: Stir
      stop_stir:
        feedback:
          status: status
        goal:
          vessel: vessel
        goal_default:
          vessel:
            category: ''
            children: []
            config: ''
            data: ''
            id: ''
            name: ''
            parent: ''
            pose:
              orientation:
                w: 1.0
                x: 0.0
                y: 0.0
                z: 0.0
              position:
                x: 0.0
                y: 0.0
                z: 0.0
            sample_id: ''
            type: ''
        handles: []
        result:
          success: success
        schema:
          description: ''
          properties:
            feedback:
              properties:
                current_status:
                  type: string
                progress:
                  type: number
              required:
              - progress
              - current_status
              title: StopStir_Feedback
              type: object
            goal:
              properties:
                vessel:
                  properties:
                    category:
                      type: string
                    children:
                      items:
                        type: string
                      type: array
                    config:
                      type: string
                    data:
                      type: string
                    id:
                      type: string
                    name:
                      type: string
                    parent:
                      type: string
                    pose:
                      properties:
                        orientation:
                          properties:
                            w:
                              type: number
                            x:
                              type: number
                            y:
                              type: number
                            z:
                              type: number
                          required:
                          - x
                          - y
                          - z
                          - w
                          title: Quaternion
                          type: object
                        position:
                          properties:
                            x:
                              type: number
                            y:
                              type: number
                            z:
                              type: number
                          required:
                          - x
                          - y
                          - z
                          title: Point
                          type: object
                      required:
                      - position
                      - orientation
                      title: Pose
                      type: object
                    sample_id:
                      type: string
                    type:
                      type: string
                  required:
                  - id
                  - name
                  - sample_id
                  - children
                  - parent
                  - type
                  - category
                  - pose
                  - config
                  - data
                  title: Resource
                  type: object
              required:
              - vessel
              title: StopStir_Goal
              type: object
            result:
              properties:
                message:
                  type: string
                return_info:
                  type: string
                success:
                  type: boolean
              required:
              - success
              - message
              - return_info
              title: StopStir_Result
              type: object
          required:
          - goal
          title: StopStir
          type: object
        type: StopStir
    module: unilabos.devices.virtual.virtual_stirrer:VirtualStirrer
    status_types:
      current_speed: float
      current_vessel: str
      device_info: dict
      is_stirring: bool
      max_speed: float
      min_speed: float
      operation_mode: str
      remaining_time: float
      status: str
    type: python
  config_info: []
  description: Virtual Stirrer for StirProtocol Testing
  handles:
  - data_key: vessel
    data_source: handle
    data_type: mechanical
    description: 搅拌器的机械连接口
    handler_key: stirrer
    io_type: source
    label: stirrer
    side: NORTH
  icon: Stirrer.webp
  init_param_schema:
    config:
      properties:
        config:
          type: object
        device_id:
          type: string
      required: []
      type: object
    data:
      properties:
        current_speed:
          type: number
        current_vessel:
          type: string
        device_info:
          type: object
        is_stirring:
          type: boolean
        max_speed:
          type: number
        min_speed:
          type: number
        operation_mode:
          type: string
        remaining_time:
          type: number
        status:
          type: string
      required:
      - status
      - operation_mode
      - current_vessel
      - current_speed
      - is_stirring
      - remaining_time
      - max_speed
      - min_speed
      - device_info
      type: object
  version: 1.0.0
virtual_transfer_pump:
  category:
  - virtual_device
  class:
    action_value_mappings:
      auto-aspirate:
        feedback: {}
        goal: {}
        goal_default:
          velocity: null
          volume: null
        handles: []
        result: {}
        schema:
          description: aspirate的参数schema
          properties:
            feedback: {}
            goal:
              properties:
                velocity:
                  type: number
                volume:
                  type: number
              required:
              - volume
              type: object
            result: {}
          required:
          - goal
          title: aspirate参数
          type: object
        type: UniLabJsonCommandAsync
      auto-cleanup:
        feedback: {}
        goal: {}
        goal_default: {}
        handles: []
        result: {}
        schema:
          description: cleanup的参数schema
          properties:
            feedback: {}
            goal:
              properties: {}
              required: []
              type: object
            result: {}
          required:
          - goal
          title: cleanup参数
          type: object
        type: UniLabJsonCommandAsync
      auto-dispense:
        feedback: {}
        goal: {}
        goal_default:
          velocity: null
          volume: null
        handles: []
        result: {}
        schema:
          description: dispense的参数schema
          properties:
            feedback: {}
            goal:
              properties:
                velocity:
                  type: number
                volume:
                  type: number
              required:
              - volume
              type: object
            result: {}
          required:
          - goal
          title: dispense参数
          type: object
        type: UniLabJsonCommandAsync
      auto-empty_syringe:
        feedback: {}
        goal: {}
        goal_default:
          velocity: null
        handles: []
        result: {}
        schema:
          description: empty_syringe的参数schema
          properties:
            feedback: {}
            goal:
              properties:
                velocity:
                  type: number
              required: []
              type: object
            result: {}
          required:
          - goal
          title: empty_syringe参数
          type: object
        type: UniLabJsonCommandAsync
      auto-fill_syringe:
        feedback: {}
        goal: {}
        goal_default:
          velocity: null
        handles: []
        result: {}
        schema:
          description: fill_syringe的参数schema
          properties:
            feedback: {}
            goal:
              properties:
                velocity:
                  type: number
              required: []
              type: object
            result: {}
          required:
          - goal
          title: fill_syringe参数
          type: object
        type: UniLabJsonCommandAsync
      auto-initialize:
        feedback: {}
        goal: {}
        goal_default: {}
        handles: []
        result: {}
        schema:
          description: initialize的参数schema
          properties:
            feedback: {}
            goal:
              properties: {}
              required: []
              type: object
            result: {}
          required:
          - goal
          title: initialize参数
          type: object
        type: UniLabJsonCommandAsync
      auto-is_empty:
        feedback: {}
        goal: {}
        goal_default: {}
        handles: []
        result: {}
        schema:
          description: is_empty的参数schema
          properties:
            feedback: {}
            goal:
              properties: {}
              required: []
              type: object
            result: {}
          required:
          - goal
          title: is_empty参数
          type: object
        type: UniLabJsonCommand
      auto-is_full:
        feedback: {}
        goal: {}
        goal_default: {}
        handles: []
        result: {}
        schema:
          description: is_full的参数schema
          properties:
            feedback: {}
            goal:
              properties: {}
              required: []
              type: object
            result: {}
          required:
          - goal
          title: is_full参数
          type: object
        type: UniLabJsonCommand
      auto-pull_plunger:
        feedback: {}
        goal: {}
        goal_default:
          velocity: null
          volume: null
        handles: []
        result: {}
        schema:
          description: pull_plunger的参数schema
          properties:
            feedback: {}
            goal:
              properties:
                velocity:
                  type: number
                volume:
                  type: number
              required:
              - volume
              type: object
            result: {}
          required:
          - goal
          title: pull_plunger参数
          type: object
        type: UniLabJsonCommandAsync
      auto-push_plunger:
        feedback: {}
        goal: {}
        goal_default:
          velocity: null
          volume: null
        handles: []
        result: {}
        schema:
          description: push_plunger的参数schema
          properties:
            feedback: {}
            goal:
              properties:
                velocity:
                  type: number
                volume:
                  type: number
              required:
              - volume
              type: object
            result: {}
          required:
          - goal
          title: push_plunger参数
          type: object
        type: UniLabJsonCommandAsync
      auto-set_max_velocity:
        feedback: {}
        goal: {}
        goal_default:
          velocity: null
        handles: []
        result: {}
        schema:
          description: set_max_velocity的参数schema
          properties:
            feedback: {}
            goal:
              properties:
                velocity:
                  type: number
              required:
              - velocity
              type: object
            result: {}
          required:
          - goal
          title: set_max_velocity参数
          type: object
        type: UniLabJsonCommand
      auto-stop_operation:
        feedback: {}
        goal: {}
        goal_default: {}
        handles: []
        result: {}
        schema:
          description: stop_operation的参数schema
          properties:
            feedback: {}
            goal:
              properties: {}
              required: []
              type: object
            result: {}
          required:
          - goal
          title: stop_operation参数
          type: object
        type: UniLabJsonCommandAsync
      set_position:
        feedback:
          current_position: current_position
          progress: progress
          status: status
        goal:
          max_velocity: max_velocity
          position: position
        goal_default:
          max_velocity: 0.0
          position: 0.0
        handles: []
        result:
          message: message
          success: success
        schema:
          description: ''
          properties:
            feedback:
              properties:
                current_position:
                  type: number
                progress:
                  type: number
                status:
                  type: string
              required:
              - status
              - current_position
              - progress
              title: SetPumpPosition_Feedback
              type: object
            goal:
              properties:
                max_velocity:
                  type: number
                position:
                  type: number
              required:
              - position
              - max_velocity
              title: SetPumpPosition_Goal
              type: object
            result:
              properties:
                message:
                  type: string
                return_info:
                  type: string
                success:
                  type: boolean
              required:
              - return_info
              - success
              - message
              title: SetPumpPosition_Result
              type: object
          required:
          - goal
          title: SetPumpPosition
          type: object
        type: SetPumpPosition
      transfer:
        feedback:
          current_status: current_status
          progress: progress
          transferred_volume: transferred_volume
        goal:
          amount: amount
          from_vessel: from_vessel
          rinsing_repeats: rinsing_repeats
          rinsing_solvent: rinsing_solvent
          rinsing_volume: rinsing_volume
          solid: solid
          time: time
          to_vessel: to_vessel
          viscous: viscous
          volume: volume
        goal_default:
          amount: ''
          from_vessel: ''
          rinsing_repeats: 0
          rinsing_solvent: ''
          rinsing_volume: 0.0
          solid: false
          time: 0.0
          to_vessel: ''
          viscous: false
          volume: 0.0
        handles: []
        result:
          message: message
          success: success
        schema:
          description: ''
          properties:
            feedback:
              properties:
                current_status:
                  type: string
                progress:
                  type: number
                transferred_volume:
                  type: number
              required:
              - progress
              - transferred_volume
              - current_status
              title: Transfer_Feedback
              type: object
            goal:
              properties:
                amount:
                  type: string
                from_vessel:
                  type: string
                rinsing_repeats:
                  maximum: 2147483647
                  minimum: -2147483648
                  type: integer
                rinsing_solvent:
                  type: string
                rinsing_volume:
                  type: number
                solid:
                  type: boolean
                time:
                  type: number
                to_vessel:
                  type: string
                viscous:
                  type: boolean
                volume:
                  type: number
              required:
              - from_vessel
              - to_vessel
              - volume
              - amount
              - time
              - viscous
              - rinsing_solvent
              - rinsing_volume
              - rinsing_repeats
              - solid
              title: Transfer_Goal
              type: object
            result:
              properties:
                message:
                  type: string
                return_info:
                  type: string
                success:
                  type: boolean
              required:
              - success
              - message
              - return_info
              title: Transfer_Result
              type: object
          required:
          - goal
          title: Transfer
          type: object
        type: Transfer
    module: unilabos.devices.virtual.virtual_transferpump:VirtualTransferPump
    status_types:
      current_volume: float
      max_velocity: float
      position: float
      pump_info: dict
      remaining_capacity: float
      status: str
      transfer_rate: float
    type: python
  config_info: []
  description: Virtual Transfer Pump for TransferProtocol Testing (Syringe-style)
  handles:
  - data_key: fluid_port
    data_source: handle
    data_type: fluid
    description: 注射器式转移泵的连接口
    handler_key: transferpump
    io_type: source
    label: transferpump
    side: SOUTH
  icon: Pump.webp
  init_param_schema:
    config:
      properties:
        config:
          type: object
        device_id:
          type: string
      required: []
      type: object
    data:
      properties:
        current_volume:
          type: number
        max_velocity:
          type: number
        position:
          type: number
        pump_info:
          type: object
        remaining_capacity:
          type: number
        status:
          type: string
        transfer_rate:
          type: number
      required:
      - status
      - position
      - current_volume
      - max_velocity
      - transfer_rate
      - remaining_capacity
      - pump_info
      type: object
  version: 1.0.0
virtual_vacuum_pump:
  category:
  - virtual_device
  class:
    action_value_mappings:
      auto-cleanup:
        feedback: {}
        goal: {}
        goal_default: {}
        handles: []
        result: {}
        schema:
          description: cleanup的参数schema
          properties:
            feedback: {}
            goal:
              properties: {}
              required: []
              type: object
            result: {}
          required:
          - goal
          title: cleanup参数
          type: object
        type: UniLabJsonCommandAsync
      auto-initialize:
        feedback: {}
        goal: {}
        goal_default: {}
        handles: []
        result: {}
        schema:
          description: initialize的参数schema
          properties:
            feedback: {}
            goal:
              properties: {}
              required: []
              type: object
            result: {}
          required:
          - goal
          title: initialize参数
          type: object
        type: UniLabJsonCommandAsync
      auto-is_closed:
        feedback: {}
        goal: {}
        goal_default: {}
        handles: []
        result: {}
        schema:
          description: is_closed的参数schema
          properties:
            feedback: {}
            goal:
              properties: {}
              required: []
              type: object
            result: {}
          required:
          - goal
          title: is_closed参数
          type: object
        type: UniLabJsonCommand
      auto-is_open:
        feedback: {}
        goal: {}
        goal_default: {}
        handles: []
        result: {}
        schema:
          description: is_open的参数schema
          properties:
            feedback: {}
            goal:
              properties: {}
              required: []
              type: object
            result: {}
          required:
          - goal
          title: is_open参数
          type: object
        type: UniLabJsonCommand
      close:
        feedback: {}
        goal: {}
        goal_default: {}
        handles: []
        result: {}
        schema:
          description: ''
          properties:
            feedback:
              properties: {}
              required: []
              title: EmptyIn_Feedback
              type: object
            goal:
              properties: {}
              required: []
              title: EmptyIn_Goal
              type: object
            result:
              properties:
                return_info:
                  type: string
              required:
              - return_info
              title: EmptyIn_Result
              type: object
          required:
          - goal
          title: EmptyIn
          type: object
        type: EmptyIn
      open:
        feedback: {}
        goal: {}
        goal_default: {}
        handles: []
        result: {}
        schema:
          description: ''
          properties:
            feedback:
              properties: {}
              required: []
              title: EmptyIn_Feedback
              type: object
            goal:
              properties: {}
              required: []
              title: EmptyIn_Goal
              type: object
            result:
              properties:
                return_info:
                  type: string
              required:
              - return_info
              title: EmptyIn_Result
              type: object
          required:
          - goal
          title: EmptyIn
          type: object
        type: EmptyIn
      set_status:
        feedback: {}
        goal:
          string: string
        goal_default:
          string: ''
        handles: []
        result: {}
        schema:
          description: ''
          properties:
            feedback:
              properties: {}
              required: []
              title: StrSingleInput_Feedback
              type: object
            goal:
              properties:
                string:
                  type: string
              required:
              - string
              title: StrSingleInput_Goal
              type: object
            result:
              properties:
                return_info:
                  type: string
                success:
                  type: boolean
              required:
              - return_info
              - success
              title: StrSingleInput_Result
              type: object
          required:
          - goal
          title: StrSingleInput
          type: object
        type: StrSingleInput
    module: unilabos.devices.virtual.virtual_vacuum_pump:VirtualVacuumPump
    status_types:
      status: str
    type: python
  config_info: []
  description: Virtual vacuum pump
  handles:
  - data_key: fluid_in
    data_source: handle
    data_type: fluid
    description: 真空泵进气口
    handler_key: vacuumpump
    io_type: source
    label: vacuumpump
    side: SOUTH
  icon: Vacuum.webp
  init_param_schema:
    config:
      properties:
        config:
          type: string
        device_id:
          type: string
      required: []
      type: object
    data:
      properties:
        status:
          type: string
      required:
      - status
      type: object
  version: 1.0.0
