mirror of
https://github.com/dptech-corp/Uni-Lab-OS.git
synced 2026-02-05 14:05:12 +00:00
默认不进行注册表报送,通过命令unilabos-register或者增加启动参数
This commit is contained in:
@@ -73,6 +73,11 @@ def parse_args():
|
|||||||
action="store_true",
|
action="store_true",
|
||||||
help="Slave模式下跳过等待host服务",
|
help="Slave模式下跳过等待host服务",
|
||||||
)
|
)
|
||||||
|
parser.add_argument(
|
||||||
|
"--upload_registry",
|
||||||
|
action="store_true",
|
||||||
|
help="启动unilab时同时报送注册表信息",
|
||||||
|
)
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
"--config",
|
"--config",
|
||||||
type=str,
|
type=str,
|
||||||
@@ -117,6 +122,7 @@ def main():
|
|||||||
# 设置BasicConfig参数
|
# 设置BasicConfig参数
|
||||||
BasicConfig.is_host_mode = not args_dict.get("without_host", False)
|
BasicConfig.is_host_mode = not args_dict.get("without_host", False)
|
||||||
BasicConfig.slave_no_host = args_dict.get("slave_no_host", False)
|
BasicConfig.slave_no_host = args_dict.get("slave_no_host", False)
|
||||||
|
BasicConfig.upload_registry = args_dict.get("upload_registry", False)
|
||||||
machine_name = os.popen("hostname").read().strip()
|
machine_name = os.popen("hostname").read().strip()
|
||||||
machine_name = "".join([c if c.isalnum() or c == "_" else "_" for c in machine_name])
|
machine_name = "".join([c if c.isalnum() or c == "_" else "_" for c in machine_name])
|
||||||
BasicConfig.machine_name = machine_name
|
BasicConfig.machine_name = machine_name
|
||||||
|
|||||||
@@ -172,13 +172,14 @@ class MQTTClient:
|
|||||||
jobdata = {"job_id": job_id, "data": feedback_data, "status": status, "return_info": return_info}
|
jobdata = {"job_id": job_id, "data": feedback_data, "status": status, "return_info": return_info}
|
||||||
self.client.publish(f"labs/{MQConfig.lab_id}/job/list/", json.dumps(jobdata), qos=2)
|
self.client.publish(f"labs/{MQConfig.lab_id}/job/list/", json.dumps(jobdata), qos=2)
|
||||||
|
|
||||||
def publish_registry(self, device_id: str, device_info: dict):
|
def publish_registry(self, device_id: str, device_info: dict, print_debug: bool = True):
|
||||||
if self.mqtt_disable:
|
if self.mqtt_disable:
|
||||||
return
|
return
|
||||||
address = f"labs/{MQConfig.lab_id}/registry/"
|
address = f"labs/{MQConfig.lab_id}/registry/"
|
||||||
registry_data = json.dumps({device_id: device_info}, ensure_ascii=False, cls=TypeEncoder)
|
registry_data = json.dumps({device_id: device_info}, ensure_ascii=False, cls=TypeEncoder)
|
||||||
self.client.publish(address, registry_data, qos=2)
|
self.client.publish(address, registry_data, qos=2)
|
||||||
logger.debug(f"Registry data published: address: {address}, {registry_data}")
|
if print_debug:
|
||||||
|
logger.debug(f"Registry data published: address: {address}, {registry_data}")
|
||||||
|
|
||||||
def publish_actions(self, action_id: str, action_info: dict):
|
def publish_actions(self, action_id: str, action_info: dict):
|
||||||
if self.mqtt_disable:
|
if self.mqtt_disable:
|
||||||
|
|||||||
@@ -15,15 +15,15 @@ def register_devices_and_resources(mqtt_client, lab_registry):
|
|||||||
|
|
||||||
# 注册设备信息
|
# 注册设备信息
|
||||||
for device_info in lab_registry.obtain_registry_device_info():
|
for device_info in lab_registry.obtain_registry_device_info():
|
||||||
mqtt_client.publish_registry(device_info["id"], device_info)
|
mqtt_client.publish_registry(device_info["id"], device_info, False)
|
||||||
logger.debug(f"[UniLab Register] 注册设备: {device_info['id']}")
|
logger.debug(f"[UniLab Register] 注册设备: {device_info['id']}")
|
||||||
|
|
||||||
# 注册资源信息
|
# 注册资源信息
|
||||||
for resource_info in lab_registry.obtain_registry_resource_info():
|
for resource_info in lab_registry.obtain_registry_resource_info():
|
||||||
mqtt_client.publish_registry(resource_info["id"], resource_info)
|
mqtt_client.publish_registry(resource_info["id"], resource_info, False)
|
||||||
logger.debug(f"[UniLab Register] 注册资源: {resource_info['id']}")
|
logger.debug(f"[UniLab Register] 注册资源: {resource_info['id']}")
|
||||||
|
|
||||||
time.sleep(20)
|
time.sleep(10)
|
||||||
|
|
||||||
logger.info("[UniLab Register] 设备和资源注册完成.")
|
logger.info("[UniLab Register] 设备和资源注册完成.")
|
||||||
|
|
||||||
@@ -53,6 +53,10 @@ def main():
|
|||||||
load_config_from_file(args.config)
|
load_config_from_file(args.config)
|
||||||
|
|
||||||
from unilabos.app.mq import mqtt_client
|
from unilabos.app.mq import mqtt_client
|
||||||
|
|
||||||
|
# 连接mqtt
|
||||||
|
mqtt_client.start()
|
||||||
|
|
||||||
from unilabos.registry.registry import lab_registry
|
from unilabos.registry.registry import lab_registry
|
||||||
|
|
||||||
# 注册设备和资源
|
# 注册设备和资源
|
||||||
|
|||||||
@@ -10,8 +10,9 @@ from unilabos.utils import logger
|
|||||||
class BasicConfig:
|
class BasicConfig:
|
||||||
ENV = "pro" # 'test'
|
ENV = "pro" # 'test'
|
||||||
config_path = ""
|
config_path = ""
|
||||||
is_host_mode = True # 从registry.py移动过来
|
is_host_mode = True
|
||||||
slave_no_host = False # 是否跳过rclient.wait_for_service()
|
slave_no_host = False # 是否跳过rclient.wait_for_service()
|
||||||
|
upload_registry = False
|
||||||
machine_name = "undefined"
|
machine_name = "undefined"
|
||||||
vis_2d_enable = False
|
vis_2d_enable = False
|
||||||
|
|
||||||
|
|||||||
@@ -22,6 +22,7 @@ from unilabos_msgs.srv import (
|
|||||||
) # type: ignore
|
) # type: ignore
|
||||||
from unique_identifier_msgs.msg import UUID
|
from unique_identifier_msgs.msg import UUID
|
||||||
|
|
||||||
|
from unilabos.config.config import BasicConfig
|
||||||
from unilabos.registry.registry import lab_registry
|
from unilabos.registry.registry import lab_registry
|
||||||
from unilabos.resources.graphio import initialize_resource
|
from unilabos.resources.graphio import initialize_resource
|
||||||
from unilabos.resources.registry import add_schema
|
from unilabos.resources.registry import add_schema
|
||||||
@@ -146,13 +147,15 @@ class HostNode(BaseROS2DeviceNode):
|
|||||||
|
|
||||||
self.device_status = {} # 用来存储设备状态
|
self.device_status = {} # 用来存储设备状态
|
||||||
self.device_status_timestamps = {} # 用来存储设备状态最后更新时间
|
self.device_status_timestamps = {} # 用来存储设备状态最后更新时间
|
||||||
|
if BasicConfig.upload_registry:
|
||||||
|
from unilabos.app.mq import mqtt_client
|
||||||
|
|
||||||
# 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 device_info in lab_registry.obtain_registry_device_info():
|
for resource_info in lab_registry.obtain_registry_resource_info():
|
||||||
# mqtt_client.publish_registry(device_info["id"], device_info)
|
mqtt_client.publish_registry(resource_info["id"], resource_info)
|
||||||
# for resource_info in lab_registry.obtain_registry_resource_info():
|
else:
|
||||||
# mqtt_client.publish_registry(resource_info["id"], resource_info)
|
self.lab_logger().warning("本次启动注册表不报送云端,如果您需要联网调试,请使用unilab-register命令进行单独报送")
|
||||||
time.sleep(1) # 等待MQTT连接稳定
|
time.sleep(1) # 等待MQTT连接稳定
|
||||||
# 首次发现网络中的设备
|
# 首次发现网络中的设备
|
||||||
self._discover_devices()
|
self._discover_devices()
|
||||||
|
|||||||
Reference in New Issue
Block a user