diff --git a/unilabos/devices/workstation/bioyond_studio/bioyond_cell/bioyond_cell_workstation.py b/unilabos/devices/workstation/bioyond_studio/bioyond_cell/bioyond_cell_workstation.py index f49eae94..4160815b 100644 --- a/unilabos/devices/workstation/bioyond_studio/bioyond_cell/bioyond_cell_workstation.py +++ b/unilabos/devices/workstation/bioyond_studio/bioyond_cell/bioyond_cell_workstation.py @@ -256,7 +256,7 @@ class BioyondCellWorkstation(BioyondWorkstation): def auto_feeding4to3( self, # ★ 修改点:默认模板路径 - xlsx_path: Optional[str] = "/Users/calvincao/Desktop/work/uni-lab-all/Uni-Lab-OS/unilabos/devices/workstation/bioyond_studio/bioyond_cell/material_template.xlsx", + xlsx_path: Optional[str] = "/Users/sml/work/Unilab/Uni-Lab-OS/unilabos/devices/workstation/bioyond_studio/bioyond_cell/material_template.xlsx", # ---------------- WH4 - 加样头面 (Z=1, 12个点位) ---------------- WH4_x1_y1_z1_1_materialName: str = "", WH4_x1_y1_z1_1_quantity: float = 0.0, WH4_x2_y1_z1_2_materialName: str = "", WH4_x2_y1_z1_2_quantity: float = 0.0, @@ -323,7 +323,6 @@ class BioyondCellWorkstation(BioyondWorkstation): "posX": int(row[2]), "posY": int(row[3]), "posZ": int(row[4]), "materialName": str(row[5]).strip(), "quantity": float(row[6]) if pd.notna(row[6]) else 0.0, - "temperature": 0, }) # 四号手套箱原液瓶面 for _, row in df.iloc[14:23, 2:9].iterrows(): @@ -335,7 +334,6 @@ class BioyondCellWorkstation(BioyondWorkstation): "quantity": float(row[6]) if pd.notna(row[6]) else 0.0, "materialType": str(row[7]).strip() if pd.notna(row[7]) else "", "targetWH": str(row[8]).strip() if pd.notna(row[8]) else "", - "temperature": 0, }) # 三号手套箱人工堆栈 for _, row in df.iloc[25:40, 2:7].iterrows(): @@ -345,12 +343,11 @@ class BioyondCellWorkstation(BioyondWorkstation): "posX": int(row[2]), "posY": int(row[3]), "posZ": int(row[4]), "materialType": str(row[5]).strip() if pd.notna(row[5]) else "", "materialId": str(row[6]).strip() if pd.notna(row[6]) else "", - "quantity": 1, - "temperature": 0, + "quantity": 1 }) else: logger.warning(f"未找到 Excel 文件 {xlsx_path},自动切换到手动参数模式。") - # TODO: 温度下面手动模式没改,上面的改了 + # ---------- 模式 2: 手动填写 ---------- if not items: params = locals() @@ -476,7 +473,7 @@ class BioyondCellWorkstation(BioyondWorkstation): - totalMass 自动计算为所有物料质量之和 - createTime 缺失或为空时自动填充为当前日期(YYYY/M/D) """ - default_path = Path("/Users/calvincao/Desktop/work/uni-lab-all/Uni-Lab-OS/unilabos/devices/workstation/bioyond_studio/bioyond_cell/2025092701.xlsx") + default_path = Path("/Users/sml/work/Unilab/Uni-Lab-OS/unilabos/devices/workstation/bioyond_studio/bioyond_cell/2025092701.xlsx") path = Path(xlsx_path) if xlsx_path else default_path print(f"[create_orders] 使用 Excel 路径: {path}") if path != default_path: @@ -1163,23 +1160,20 @@ if __name__ == "__main__": lab_registry.setup() deck = BIOYOND_YB_Deck(setup=True) ws = BioyondCellWorkstation(deck=deck) - # ws.update_push_ip() #直接修改奔耀端的报送ip地址 - # ws.create_sample(name="配液瓶", board_type="配液瓶(小)板", bottle_type="配液瓶(小)", location_code="E01") - # ws.create_sample(name="分液瓶", board_type="5ml分液瓶板", bottle_type="5ml分液瓶", location_code="D01") - - # # logger.info(ws.scheduler_stop()) + # ws.create_sample(name="test", board_type="配液瓶(小)板", bottle_type="配液瓶(小)", location_code="B01") + # logger.info(ws.scheduler_stop()) # logger.info(ws.scheduler_start()) - # logger.info(ws.auto_feeding4to3()) #搬运物料到3号箱 - # 使用正斜杠或 Path 对象来指定文件路径 - # excel_path = Path("/Users/calvincao/Desktop/work/uni-lab-all/Uni-Lab-OS/unilabos/devices/workstation/bioyond_studio/bioyond_cell/2025092701.xlsx") + # 继续后续流程 + logger.info(ws.auto_feeding4to3()) #搬运物料到3号箱 + # # # 使用正斜杠或 Path 对象来指定文件路径 + # excel_path = Path("unilabos\\devices\\workstation\\bioyond_studio\\bioyond_cell\\2025092701.xlsx") # logger.info(ws.create_orders(excel_path)) # logger.info(ws.transfer_3_to_2_to_1()) - # logger.info(ws.transfer_1_to_2()) - # 1. location code - # 2. 实验文件 - # 3. material template file + # logger.info(ws.transfer_1_to_2()) + # logger.info(ws.scheduler_start()) + while True: time.sleep(1) diff --git a/unilabos/registry/devices/bioyond_cell.yaml b/unilabos/registry/devices/bioyond_cell.yaml index c6ad6691..bcfdfff9 100644 --- a/unilabos/registry/devices/bioyond_cell.yaml +++ b/unilabos/registry/devices/bioyond_cell.yaml @@ -4,7 +4,6 @@ bioyond_cell: class: action_value_mappings: auto-auto_batch_outbound_from_xlsx: - display_name: 批量导入上料 feedback: {} goal: {} goal_default: @@ -138,7 +137,7 @@ bioyond_cell: WH4_x5_y1_z1_5_quantity: 0.0 WH4_x5_y2_z1_10_materialName: '' WH4_x5_y2_z1_10_quantity: 0.0 - xlsx_path: C:/ML/GitHub/Uni-Lab-OS/unilabos/devices/workstation/bioyond_studio/bioyond_cell/material_template.xlsx + xlsx_path: /Users/sml/work/Unilab/Uni-Lab-OS/unilabos/devices/workstation/bioyond_studio/bioyond_cell/material_template.xlsx handles: {} placeholder_keys: {} result: {} @@ -464,7 +463,7 @@ bioyond_cell: default: 0.0 type: number xlsx_path: - default: C:/ML/GitHub/Uni-Lab-OS/unilabos/devices/workstation/bioyond_studio/bioyond_cell/material_template.xlsx + default: /Users/sml/work/Unilab/Uni-Lab-OS/unilabos/devices/workstation/bioyond_studio/bioyond_cell/material_template.xlsx type: string required: [] type: object @@ -600,6 +599,7 @@ bioyond_cell: bottle_type: null location_code: null name: null + warehouse_name: 手动堆栈 handles: {} placeholder_keys: {} result: {} @@ -617,6 +617,9 @@ bioyond_cell: type: string name: type: string + warehouse_name: + default: 手动堆栈 + type: string required: - name - board_type @@ -785,6 +788,39 @@ bioyond_cell: title: report_material_change参数 type: object type: UniLabJsonCommand + auto-resource_tree_transfer: + feedback: {} + goal: {} + goal_default: + old_parent: null + parent_resource: null + plr_resource: null + handles: {} + placeholder_keys: {} + result: {} + schema: + description: '' + properties: + feedback: {} + goal: + properties: + old_parent: + type: object + parent_resource: + type: object + plr_resource: + type: object + required: + - old_parent + - plr_resource + - parent_resource + type: object + result: {} + required: + - goal + title: resource_tree_transfer参数 + type: object + type: UniLabJsonCommand auto-scheduler_continue: feedback: {} goal: {} @@ -1072,7 +1108,8 @@ bioyond_cell: type: object type: UniLabJsonCommand module: unilabos.devices.workstation.bioyond_studio.bioyond_cell.bioyond_cell_workstation:BioyondCellWorkstation - status_types: {} + status_types: + device_id: String type: python config_info: [] description: '' @@ -1090,8 +1127,11 @@ bioyond_cell: required: [] type: object data: - properties: {} - required: [] + properties: + device_id: + type: string + required: + - device_id type: object registry_type: device version: 1.0.0 diff --git a/unilabos/registry/devices/coin_cell_workstation.yaml b/unilabos/registry/devices/coin_cell_workstation.yaml index be2bcaaa..4a39afa3 100644 --- a/unilabos/registry/devices/coin_cell_workstation.yaml +++ b/unilabos/registry/devices/coin_cell_workstation.yaml @@ -79,7 +79,7 @@ coincellassemblyworkstation_device: elec_num: null elec_use_num: null elec_vol: 50 - file_path: C:\Users\67484\Desktop + file_path: /Users/sml/work handles: {} placeholder_keys: {} result: {} @@ -103,7 +103,7 @@ coincellassemblyworkstation_device: default: 50 type: integer file_path: - default: C:\Users\67484\Desktop + default: /Users/sml/work type: string required: - elec_num @@ -332,7 +332,7 @@ coincellassemblyworkstation_device: feedback: {} goal: {} goal_default: - file_path: D:\coin_cell_data + file_path: /Users/sml/work handles: {} placeholder_keys: {} result: {} @@ -343,7 +343,7 @@ coincellassemblyworkstation_device: goal: properties: file_path: - default: D:\coin_cell_data + default: /Users/sml/work type: string required: [] type: object @@ -507,13 +507,15 @@ coincellassemblyworkstation_device: config: properties: address: - default: 172.21.32.111 + default: 172.16.28.102 type: string + config: + type: object debug_mode: default: false type: boolean deck: - type: object + type: string port: default: '502' type: string diff --git a/unilabos/registry/devices/liquid_handler.yaml b/unilabos/registry/devices/liquid_handler.yaml index 99c92333..bfe98e89 100644 --- a/unilabos/registry/devices/liquid_handler.yaml +++ b/unilabos/registry/devices/liquid_handler.yaml @@ -654,6 +654,31 @@ liquid_handler: title: iter_tips参数 type: object type: UniLabJsonCommand + auto-post_init: + feedback: {} + goal: {} + goal_default: + ros_node: null + handles: {} + placeholder_keys: {} + result: {} + schema: + description: '' + properties: + feedback: {} + goal: + properties: + ros_node: + type: string + required: + - ros_node + type: object + result: {} + required: + - goal + title: post_init参数 + type: object + type: UniLabJsonCommand auto-set_group: feedback: {} goal: {} @@ -6170,6 +6195,31 @@ liquid_handler.prcxi: title: move_to参数 type: object type: UniLabJsonCommandAsync + auto-post_init: + feedback: {} + goal: {} + goal_default: + ros_node: null + handles: {} + placeholder_keys: {} + result: {} + schema: + description: '' + properties: + feedback: {} + goal: + properties: + ros_node: + type: object + required: + - ros_node + type: object + result: {} + required: + - goal + title: post_init参数 + type: object + type: UniLabJsonCommand auto-run_protocol: feedback: {} goal: {} diff --git a/unilabos/registry/devices/virtual_device.yaml b/unilabos/registry/devices/virtual_device.yaml index 18575821..77ac5336 100644 --- a/unilabos/registry/devices/virtual_device.yaml +++ b/unilabos/registry/devices/virtual_device.yaml @@ -45,6 +45,31 @@ virtual_centrifuge: title: initialize参数 type: object type: UniLabJsonCommandAsync + auto-post_init: + feedback: {} + goal: {} + goal_default: + ros_node: null + handles: {} + placeholder_keys: {} + result: {} + schema: + description: '' + properties: + feedback: {} + goal: + properties: + ros_node: + type: object + required: + - ros_node + type: object + result: {} + required: + - goal + title: post_init参数 + type: object + type: UniLabJsonCommand centrifuge: feedback: current_speed: current_speed @@ -335,6 +360,31 @@ virtual_column: title: initialize参数 type: object type: UniLabJsonCommandAsync + auto-post_init: + feedback: {} + goal: {} + goal_default: + ros_node: null + handles: {} + placeholder_keys: {} + result: {} + schema: + description: '' + properties: + feedback: {} + goal: + properties: + ros_node: + type: object + required: + - ros_node + type: object + result: {} + required: + - goal + title: post_init参数 + type: object + type: UniLabJsonCommand run_column: feedback: current_status: current_status @@ -732,6 +782,31 @@ virtual_filter: title: initialize参数 type: object type: UniLabJsonCommandAsync + auto-post_init: + feedback: {} + goal: {} + goal_default: + ros_node: null + handles: {} + placeholder_keys: {} + result: {} + schema: + description: '' + properties: + feedback: {} + goal: + properties: + ros_node: + type: object + required: + - ros_node + type: object + result: {} + required: + - goal + title: post_init参数 + type: object + type: UniLabJsonCommand filter: feedback: current_status: current_status @@ -1358,6 +1433,31 @@ virtual_heatchill: title: initialize参数 type: object type: UniLabJsonCommandAsync + auto-post_init: + feedback: {} + goal: {} + goal_default: + ros_node: null + handles: {} + placeholder_keys: {} + result: {} + schema: + description: '' + properties: + feedback: {} + goal: + properties: + ros_node: + type: object + required: + - ros_node + type: object + result: {} + required: + - goal + title: post_init参数 + type: object + type: UniLabJsonCommand heat_chill: feedback: status: status @@ -2358,6 +2458,31 @@ virtual_rotavap: title: initialize参数 type: object type: UniLabJsonCommandAsync + auto-post_init: + feedback: {} + goal: {} + goal_default: + ros_node: null + handles: {} + placeholder_keys: {} + result: {} + schema: + description: '' + properties: + feedback: {} + goal: + properties: + ros_node: + type: object + required: + - ros_node + type: object + result: {} + required: + - goal + title: post_init参数 + type: object + type: UniLabJsonCommand evaporate: feedback: current_device: current_device @@ -2690,6 +2815,31 @@ virtual_separator: title: initialize参数 type: object type: UniLabJsonCommandAsync + auto-post_init: + feedback: {} + goal: {} + goal_default: + ros_node: null + handles: {} + placeholder_keys: {} + result: {} + schema: + description: '' + properties: + feedback: {} + goal: + properties: + ros_node: + type: object + required: + - ros_node + type: object + result: {} + required: + - goal + title: post_init参数 + type: object + type: UniLabJsonCommand separate: feedback: current_status: status @@ -3600,6 +3750,31 @@ virtual_solenoid_valve: title: is_closed参数 type: object type: UniLabJsonCommand + auto-post_init: + feedback: {} + goal: {} + goal_default: + ros_node: null + handles: {} + placeholder_keys: {} + result: {} + schema: + description: '' + properties: + feedback: {} + goal: + properties: + ros_node: + type: object + required: + - ros_node + type: object + result: {} + required: + - goal + title: post_init参数 + type: object + type: UniLabJsonCommand auto-reset: feedback: {} goal: {} @@ -4177,6 +4352,31 @@ virtual_solid_dispenser: title: parse_mol_string参数 type: object type: UniLabJsonCommand + auto-post_init: + feedback: {} + goal: {} + goal_default: + ros_node: null + handles: {} + placeholder_keys: {} + result: {} + schema: + description: '' + properties: + feedback: {} + goal: + properties: + ros_node: + type: object + required: + - ros_node + type: object + result: {} + required: + - goal + title: post_init参数 + type: object + type: UniLabJsonCommand module: unilabos.devices.virtual.virtual_solid_dispenser:VirtualSolidDispenser status_types: current_reagent: str @@ -4278,6 +4478,31 @@ virtual_stirrer: title: initialize参数 type: object type: UniLabJsonCommandAsync + auto-post_init: + feedback: {} + goal: {} + goal_default: + ros_node: null + handles: {} + placeholder_keys: {} + result: {} + schema: + description: '' + properties: + feedback: {} + goal: + properties: + ros_node: + type: object + required: + - ros_node + type: object + result: {} + required: + - goal + title: post_init参数 + type: object + type: UniLabJsonCommand start_stir: feedback: status: status @@ -4995,6 +5220,31 @@ virtual_transfer_pump: title: is_full参数 type: object type: UniLabJsonCommand + auto-post_init: + feedback: {} + goal: {} + goal_default: + ros_node: null + handles: {} + placeholder_keys: {} + result: {} + schema: + description: '' + properties: + feedback: {} + goal: + properties: + ros_node: + type: object + required: + - ros_node + type: object + result: {} + required: + - goal + title: post_init参数 + type: object + type: UniLabJsonCommand auto-pull_plunger: feedback: {} goal: {} diff --git a/unilabos/registry/resources/bioyond/YB_bottle.yaml b/unilabos/registry/resources/bioyond/YB_bottle.yaml index 87a335b6..f8e17261 100644 --- a/unilabos/registry/resources/bioyond/YB_bottle.yaml +++ b/unilabos/registry/resources/bioyond/YB_bottle.yaml @@ -1,16 +1,3 @@ -YB_qiang_tou: - category: - - yb3 - - YB_bottle - class: - module: unilabos.resources.bioyond.YB_bottles:YB_qiang_tou - type: pylabrobot - description: YB_qiang_tou - handles: [] - icon: '' - init_param_schema: {} - registry_type: resource - version: 1.0.0 YB_20ml_fenyeping: category: - yb3 @@ -37,6 +24,19 @@ YB_5ml_fenyeping: init_param_schema: {} registry_type: resource version: 1.0.0 +YB_jia_yang_tou_da: + category: + - yb3 + - YB_bottle + class: + module: unilabos.resources.bioyond.YB_bottles:YB_jia_yang_tou_da + type: pylabrobot + description: YB_jia_yang_tou_da + handles: [] + icon: '' + init_param_schema: {} + registry_type: resource + version: 1.0.0 YB_pei_ye_da_Bottle: category: - yb3 @@ -63,14 +63,14 @@ YB_pei_ye_xiao_Bottle: init_param_schema: {} registry_type: resource version: 1.0.0 -YB_jia_yang_tou_da: +YB_qiang_tou: category: - yb3 - YB_bottle class: - module: unilabos.resources.bioyond.YB_bottles:YB_jia_yang_tou_da + module: unilabos.resources.bioyond.YB_bottles:YB_qiang_tou type: pylabrobot - description: YB_jia_yang_tou_da + description: YB_qiang_tou handles: [] icon: '' init_param_schema: {} @@ -80,6 +80,7 @@ YB_ye_Bottle: category: - yb3 - YB_bottle_carriers + - YB_bottle class: module: unilabos.resources.bioyond.YB_bottles:YB_ye_Bottle type: pylabrobot @@ -88,4 +89,4 @@ YB_ye_Bottle: icon: '' init_param_schema: {} registry_type: resource - version: 1.0.0 \ No newline at end of file + version: 1.0.0 diff --git a/unilabos/registry/resources/bioyond/YB_bottle_carriers.yaml b/unilabos/registry/resources/bioyond/YB_bottle_carriers.yaml index 2c0c6f0b..4698a266 100644 --- a/unilabos/registry/resources/bioyond/YB_bottle_carriers.yaml +++ b/unilabos/registry/resources/bioyond/YB_bottle_carriers.yaml @@ -11,71 +11,6 @@ YB_100ml_yeti: init_param_schema: {} registry_type: resource version: 1.0.0 -# YB_1BottleCarrier: -# category: -# - yb3 -# - YB_bottle_carriers -# class: -# module: unilabos.resources.bioyond.YB_bottle_carriers:YB_1BottleCarrier -# type: pylabrobot -# description: YB_1BottleCarrier -# handles: [] -# icon: '' -# init_param_schema: {} -# registry_type: resource -# version: 1.0.0 -YB_gaonianye: - category: - - yb3 - - YB_bottle_carriers - class: - module: unilabos.resources.bioyond.YB_bottle_carriers:YB_gaonianye - type: pylabrobot - description: YB_gaonianye - handles: [] - icon: '' - init_param_schema: {} - registry_type: resource - version: 1.0.0 -YB_peiyepingdaban: - category: - - yb3 - - YB_bottle_carriers - class: - module: unilabos.resources.bioyond.YB_bottle_carriers:YB_peiyepingdaban - type: pylabrobot - description: YB_peiyepingdaban - handles: [] - icon: '' - init_param_schema: {} - registry_type: resource - version: 1.0.0 -YB_6StockCarrier: - category: - - yb3 - - YB_bottle_carriers - class: - module: unilabos.resources.bioyond.YB_bottle_carriers:YB_6StockCarrier - type: pylabrobot - description: YB_6StockCarrier - handles: [] - icon: '' - init_param_schema: {} - registry_type: resource - version: 1.0.0 -YB_6VialCarrier: - category: - - yb3 - - YB_bottle_carriers - class: - module: unilabos.resources.bioyond.YB_bottle_carriers:YB_6VialCarrier - type: pylabrobot - description: YB_6VialCarrier - handles: [] - icon: '' - init_param_schema: {} - registry_type: resource - version: 1.0.0 YB_20ml_fenyepingban: category: - yb3 @@ -102,40 +37,27 @@ YB_5ml_fenyepingban: init_param_schema: {} registry_type: resource version: 1.0.0 -YB_peiyepingxiaoban: +YB_6StockCarrier: category: - yb3 - YB_bottle_carriers class: - module: unilabos.resources.bioyond.YB_bottle_carriers:YB_peiyepingxiaoban + module: unilabos.resources.bioyond.YB_bottle_carriers:YB_6StockCarrier type: pylabrobot - description: YB_peiyepingxiaoban + description: YB_6StockCarrier handles: [] icon: '' init_param_schema: {} registry_type: resource version: 1.0.0 -YB_shi_pei_qi_kuai: +YB_6VialCarrier: category: - yb3 - YB_bottle_carriers class: - module: unilabos.resources.bioyond.YB_bottle_carriers:YB_shi_pei_qi_kuai + module: unilabos.resources.bioyond.YB_bottle_carriers:YB_6VialCarrier type: pylabrobot - description: YB_shi_pei_qi_kuai - handles: [] - icon: '' - init_param_schema: {} - registry_type: resource - version: 1.0.0 -YB_qiang_tou_he: - category: - - yb3 - - YB_bottle_carriers - class: - module: unilabos.resources.bioyond.YB_bottle_carriers:YB_qiang_tou_he - type: pylabrobot - description: YB_qiang_tou_he + description: YB_6VialCarrier handles: [] icon: '' init_param_schema: {} @@ -154,19 +76,19 @@ YB_gao_nian_ye_Bottle: init_param_schema: {} registry_type: resource version: 1.0.0 -# YB_jia_yang_tou_da: -# category: -# - yb3 -# - YB_bottle_carriers -# class: -# module: unilabos.resources.bioyond.YB_bottles:YB_jia_yang_tou_da -# type: pylabrobot -# description: YB_jia_yang_tou_da -# handles: [] -# icon: '' -# init_param_schema: {} -# registry_type: resource -# version: 1.0.0 +YB_gaonianye: + category: + - yb3 + - YB_bottle_carriers + class: + module: unilabos.resources.bioyond.YB_bottle_carriers:YB_gaonianye + type: pylabrobot + description: YB_gaonianye + handles: [] + icon: '' + init_param_schema: {} + registry_type: resource + version: 1.0.0 YB_jia_yang_tou_da_Carrier: category: - yb3 @@ -180,14 +102,53 @@ YB_jia_yang_tou_da_Carrier: init_param_schema: {} registry_type: resource version: 1.0.0 -YB_ye_100ml_Bottle: +YB_peiyepingdaban: category: - yb3 - YB_bottle_carriers class: - module: unilabos.resources.bioyond.YB_bottles:YB_ye_100ml_Bottle + module: unilabos.resources.bioyond.YB_bottle_carriers:YB_peiyepingdaban type: pylabrobot - description: YB_ye_100ml_Bottle + description: YB_peiyepingdaban + handles: [] + icon: '' + init_param_schema: {} + registry_type: resource + version: 1.0.0 +YB_peiyepingxiaoban: + category: + - yb3 + - YB_bottle_carriers + class: + module: unilabos.resources.bioyond.YB_bottle_carriers:YB_peiyepingxiaoban + type: pylabrobot + description: YB_peiyepingxiaoban + handles: [] + icon: '' + init_param_schema: {} + registry_type: resource + version: 1.0.0 +YB_qiang_tou_he: + category: + - yb3 + - YB_bottle_carriers + class: + module: unilabos.resources.bioyond.YB_bottle_carriers:YB_qiang_tou_he + type: pylabrobot + description: YB_qiang_tou_he + handles: [] + icon: '' + init_param_schema: {} + registry_type: resource + version: 1.0.0 +YB_shi_pei_qi_kuai: + category: + - yb3 + - YB_bottle_carriers + class: + module: unilabos.resources.bioyond.YB_bottle_carriers:YB_shi_pei_qi_kuai + type: pylabrobot + description: YB_shi_pei_qi_kuai handles: [] icon: '' init_param_schema: {} @@ -206,3 +167,16 @@ YB_ye: init_param_schema: {} registry_type: resource version: 1.0.0 +YB_ye_100ml_Bottle: + category: + - yb3 + - YB_bottle_carriers + class: + module: unilabos.resources.bioyond.YB_bottles:YB_ye_100ml_Bottle + type: pylabrobot + description: YB_ye_100ml_Bottle + handles: [] + icon: '' + init_param_schema: {} + registry_type: resource + version: 1.0.0