From 4a427bde619f0e5f04b212c431aa444e2bc034e9 Mon Sep 17 00:00:00 2001 From: wznln <18435084+Xuwznln@users.noreply.github.com> Date: Fri, 18 Apr 2025 15:16:00 +0800 Subject: [PATCH 1/2] fix: missing yaml during installation --- MANIFEST.in | 1 + setup.py | 16 +++------------- 2 files changed, 4 insertions(+), 13 deletions(-) create mode 100644 MANIFEST.in diff --git a/MANIFEST.in b/MANIFEST.in new file mode 100644 index 00000000..df3ec4b8 --- /dev/null +++ b/MANIFEST.in @@ -0,0 +1 @@ +recursive-include unilabos/registry *.yaml diff --git a/setup.py b/setup.py index b13ea887..5e29ee8b 100644 --- a/setup.py +++ b/setup.py @@ -1,6 +1,4 @@ from setuptools import setup, find_packages -from glob import glob -import os package_name = 'unilabos' @@ -8,21 +6,13 @@ setup( name=package_name, version='0.8.0', packages=find_packages(), - # data_files=[ - # ('share/ament_index/resource_index/packages', - # ['resource/' + package_name]), - # ('share/' + package_name, ['package.xml']), - # # (os.path.join('share', package_name, 'launch'), glob('launch/*.launch.py')), - # # (os.path.join('share', package_name, 'urdf'), glob('urdf/*')), - # # (os.path.join('share', package_name, 'meshes'), glob('meshes/*')), - # # (os.path.join('share', package_name, 'config'), glob('config/*')) - # ], + include_package_data=True, install_requires=['setuptools'], zip_safe=True, maintainer='Junhan Chang', maintainer_email='changjh@pku.edu.cn', - description='TODO: Package description', - license='TODO: License declaration', + description='', + license='GPL v3', tests_require=['pytest'], entry_points={ 'console_scripts': [ From 22a02bdb06948b1ff770e93c79823b2e3ab14845 Mon Sep 17 00:00:00 2001 From: Harvey Que <103566763+Mile-Away@users.noreply.github.com> Date: Sat, 19 Apr 2025 04:10:42 +0800 Subject: [PATCH 2/2] Update README and MQTTClient for installation instructions and code improvements (#10) --- README.md | 4 ++++ unilabos/app/mq.py | 20 ++++++++++++-------- 2 files changed, 16 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 315ba61b..4658432a 100644 --- a/README.md +++ b/README.md @@ -53,6 +53,10 @@ mamba activate unilab # 或更新现有环境 conda env update --file unilabos-[YOUR_OS].yml -n 环境名 + +# 现阶段,需要安装 `unilabos_msgs` 包 +# 可以前往 Release 页面下载系统对应的包进行安装 +conda install ros-humble-unilabos-msgs-0.8.0-xxxxx.tar.bz2 ``` 其中 `[YOUR_OS]` 可以是 `win64`, `linux-64`, `osx-64`, 或 `osx-arm64`。 diff --git a/unilabos/app/mq.py b/unilabos/app/mq.py index a8bd08a1..8ed35f95 100644 --- a/unilabos/app/mq.py +++ b/unilabos/app/mq.py @@ -3,17 +3,21 @@ import time import uuid import paho.mqtt.client as mqtt -import ssl, base64, hmac +import ssl +import base64 +import hmac from hashlib import sha1 import tempfile import os from unilabos.config.config import MQConfig from unilabos.app.controler import devices, job_add -from unilabos.app.model import JobAddReq, JobAddResp +from unilabos.app.model import JobAddReq from unilabos.utils import logger from unilabos.utils.type_check import TypeEncoder +from paho.mqtt.enums import CallbackAPIVersion + class MQTTClient: mqtt_disable = True @@ -21,7 +25,7 @@ class MQTTClient: def __init__(self): self.mqtt_disable = not MQConfig.lab_id self.client_id = f"{MQConfig.group_id}@@@{MQConfig.lab_id}{uuid.uuid4()}" - self.client = mqtt.Client(mqtt.CallbackAPIVersion.VERSION2, client_id=self.client_id, protocol=mqtt.MQTTv5) + self.client = mqtt.Client(CallbackAPIVersion.VERSION2, client_id=self.client_id, protocol=mqtt.MQTTv5) self._setup_callbacks() def _setup_callbacks(self): @@ -41,7 +45,7 @@ class MQTTClient: logger.error("[MQTT] on_connect ErrorHostNotInit") return - def _on_message(self, client, userdata, msg): + def _on_message(self, client, userdata, msg) -> None: logger.info("[MQTT] on_message<<<< " + msg.topic + " " + str(msg.payload)) try: payload_str = msg.payload.decode("utf-8") @@ -52,7 +56,7 @@ class MQTTClient: logger.debug("job_add", type(payload_json), payload_json) job_req = JobAddReq.model_validate(payload_json) data = job_add(job_req) - return JobAddResp(data=data) + return except json.JSONDecodeError as e: logger.error(f"[MQTT] JSON 解析错误: {e}") @@ -87,7 +91,7 @@ class MQTTClient: for temp_file in temp_files: try: os.unlink(temp_file) - except: + except Exception as e: pass def start(self): @@ -151,12 +155,12 @@ class MQTTClient: return jobdata = {"job_id": job_id, "data": feedback_data, "status": status} 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): if self.mqtt_disable: return 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) logger.debug(f"Registry data published: address: {address}, {registry_data}")