diff --git a/setup.py b/setup.py index 3f71dff..080f1e1 100644 --- a/setup.py +++ b/setup.py @@ -17,6 +17,7 @@ setup( entry_points={ 'console_scripts': [ "unilab = unilabos.app.main:main", + "unilab-register = unilabos.app.register:main" ], }, ) diff --git a/unilabos/app/main.py b/unilabos/app/main.py index 918ef59..471df4b 100644 --- a/unilabos/app/main.py +++ b/unilabos/app/main.py @@ -22,6 +22,21 @@ from unilabos.config.config import load_config, BasicConfig, _update_config_from from unilabos.utils.banner_print import print_status, print_unilab_banner +def load_config_from_file(config_path): + if config_path is None: + config_path = os.environ.get("UNILABOS.BASICCONFIG.CONFIG_PATH", None) + if config_path: + if not os.path.exists(config_path): + print_status(f"配置文件 {config_path} 不存在", "error") + elif not config_path.endswith(".py"): + print_status(f"配置文件 {config_path} 不是Python文件,必须以.py结尾", "error") + else: + load_config(config_path) + else: + print_status(f"启动 UniLab-OS时,配置文件参数未正确传入 --config '{config_path}' 尝试本地配置...", "warning") + load_config(config_path) + + def parse_args(): """解析命令行参数""" parser = argparse.ArgumentParser(description="Start Uni-Lab Edge server.") @@ -97,18 +112,7 @@ def main(): # 加载配置文件,优先加载config,然后从env读取 config_path = args_dict.get("config") - if config_path is None: - config_path = os.environ.get("UNILABOS.BASICCONFIG.CONFIG_PATH", None) - if config_path: - if not os.path.exists(config_path): - print_status(f"配置文件 {config_path} 不存在", "error") - elif not config_path.endswith(".py"): - print_status(f"配置文件 {config_path} 不是Python文件,必须以.py结尾", "error") - else: - load_config(config_path) - else: - print_status(f"启动 UniLab-OS时,配置文件参数未正确传入 --config '{config_path}' 尝试本地配置...", "warning") - load_config(config_path) + load_config_from_file(config_path) # 设置BasicConfig参数 BasicConfig.is_host_mode = not args_dict.get("without_host", False) diff --git a/unilabos/registry/devices/virtual_device.yaml b/unilabos/registry/devices/virtual_device.yaml index af00af1..ea244ec 100644 --- a/unilabos/registry/devices/virtual_device.yaml +++ b/unilabos/registry/devices/virtual_device.yaml @@ -211,6 +211,7 @@ virtual_multiway_valve: - handler_key: transferpump label: transferpump data_type: fluid + side: NORTH io_type: target data_source: handle data_key: fluid_in diff --git a/unilabos/ros/nodes/presets/host_node.py b/unilabos/ros/nodes/presets/host_node.py index ceba584..e8bd909 100644 --- a/unilabos/ros/nodes/presets/host_node.py +++ b/unilabos/ros/nodes/presets/host_node.py @@ -147,12 +147,12 @@ class HostNode(BaseROS2DeviceNode): self.device_status = {} # 用来存储设备状态 self.device_status_timestamps = {} # 用来存储设备状态最后更新时间 - from unilabos.app.mq import mqtt_client - - for device_info in lab_registry.obtain_registry_device_info(): - mqtt_client.publish_registry(device_info["id"], device_info) - for resource_info in lab_registry.obtain_registry_resource_info(): - mqtt_client.publish_registry(resource_info["id"], resource_info) + # from unilabos.app.mq import mqtt_client + # + # for device_info in lab_registry.obtain_registry_device_info(): + # mqtt_client.publish_registry(device_info["id"], device_info) + # for resource_info in lab_registry.obtain_registry_resource_info(): + # mqtt_client.publish_registry(resource_info["id"], resource_info) time.sleep(1) # 等待MQTT连接稳定 # 首次发现网络中的设备 self._discover_devices()