Merge branch 'dev' into device_visualization

This commit is contained in:
zhangshixiang
2025-05-07 04:05:12 +08:00
3 changed files with 11 additions and 0 deletions

View File

@@ -29,6 +29,8 @@ def job_add(req: JobAddReq) -> JobData:
req.data['action'] = action_name req.data['action'] = action_name
if action_name == "execute_command_from_outer": if action_name == "execute_command_from_outer":
action_kwargs = {"command": json.dumps(action_kwargs)} action_kwargs = {"command": json.dumps(action_kwargs)}
elif "command" in action_kwargs:
action_kwargs = action_kwargs["command"]
print(f"job_add:{req.device_id} {action_name} {action_kwargs}") print(f"job_add:{req.device_id} {action_name} {action_kwargs}")
HostNode.get_instance().send_goal(req.device_id, action_name=action_name, action_kwargs=action_kwargs, goal_uuid=req.job_id) HostNode.get_instance().send_goal(req.device_id, action_name=action_name, action_kwargs=action_kwargs, goal_uuid=req.job_id)
return JobData(jobId=req.job_id) return JobData(jobId=req.job_id)

View File

@@ -55,6 +55,12 @@ class MQTTClient:
logger.debug("Payload:", json.dumps(payload_json, indent=2, ensure_ascii=False)) logger.debug("Payload:", json.dumps(payload_json, indent=2, ensure_ascii=False))
if msg.topic == f"labs/{MQConfig.lab_id}/job/start/": if msg.topic == f"labs/{MQConfig.lab_id}/job/start/":
logger.debug("job_add", type(payload_json), payload_json) logger.debug("job_add", type(payload_json), payload_json)
if "data" not in payload_json:
payload_json["data"] = {}
if "action" in payload_json:
payload_json["data"]["action"] = payload_json.pop("action")
if "action_kwargs" in payload_json:
payload_json["data"]["action_kwargs"] = payload_json.pop("action_kwargs")
job_req = JobAddReq.model_validate(payload_json) job_req = JobAddReq.model_validate(payload_json)
data = job_add(job_req) data = job_add(job_req)
return return

View File

@@ -1,3 +1,4 @@
import io
import json import json
import os import os
import sys import sys
@@ -143,6 +144,7 @@ class Registry:
+ f"total: {len(files)}" + f"total: {len(files)}"
) )
current_device_number = len(self.device_type_registry) + 1 current_device_number = len(self.device_type_registry) + 1
from unilabos.app.web.utils.action_utils import get_yaml_from_goal_type
for i, file in enumerate(files): for i, file in enumerate(files):
data = yaml.safe_load(open(file, encoding="utf-8")) data = yaml.safe_load(open(file, encoding="utf-8"))
if data: if data:
@@ -167,6 +169,7 @@ class Registry:
action_config["type"] = self._replace_type_with_class( action_config["type"] = self._replace_type_with_class(
action_config["type"], device_id, f"动作 {action_name}" action_config["type"], device_id, f"动作 {action_name}"
) )
action_config["goal_default"] = yaml.safe_load(io.StringIO(get_yaml_from_goal_type(action_config["type"].Goal)))
action_config["schema"] = ros_action_to_json_schema(action_config["type"]) action_config["schema"] = ros_action_to_json_schema(action_config["type"])
self.device_type_registry.update(data) self.device_type_registry.update(data)