''' 处理mqtt发送的消息 ''' import queue import json from enum import Enum import numpy mqtt_send_que = queue.Queue() # 发送队列 import common.sys_comm as sys_comm from common.sys_comm import LOGDBG, LOGINFO, LOGWARN, LOGERR from common.sys_comm import MODEL_E, POSE_CLASS_E, POSE_E from common.sys_comm import g_sys_conf, g_sys_conf_mtx from mqtt.mqtt_topics import TOPICS # 消息类型 class MSG_TYPE(Enum): MSG_DEV_STATUS = 0 # 设备状态变更 MSG_DEV_RAW_POINTS = 1 # 实时点云 MSG_REALTIME_TARGET = 2 # 实时目标位置 MSG_EVENT_FALL = 3 # 跌倒事件 MSG_EVENT_EXIST = 4 # 存在事件 def get_target_point(point_cloud:list): return numpy.mean(point_cloud, axis=0).tolist() # 创建消息相关 START # 准备将消息通过 MQTT 发送 def send_msg(topic:str, format_json:dict, qos:int=0): try: parts = topic.split('/') model = parts[1] if model != "dev": with g_sys_conf_mtx: format_json["sp_id"] = g_sys_conf["sp_id"] content:str = json.dumps(format_json) mqtt_msg = { "topic": topic, "msg": content, "qos": qos } mqtt_send_que.put(mqtt_msg) except Exception as e: LOGERR(f"send_msg error: {e}") # 告警事件 def alarm_event( dev_id: str, dev_name: str, uuid: str, plan_uuid: str, event_type: str, info: dict, table: str): format_json = dict() format_json["dev_id"] = dev_id format_json["dev_name"] = dev_name format_json["uuid"] = uuid format_json["plan_uuid"] =plan_uuid format_json["event_type"] = event_type format_json["info"] = info format_json["table"] = table send_msg(TOPICS.las_alarm_event, format_json, 2) # 创建消息相关 END