update
This commit is contained in:
@@ -0,0 +1,29 @@
|
||||
package com.maibu.core.business;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.maibu.core.domain.OrgNoUserDO;
|
||||
import com.maibu.core.enums.ErrorSource;
|
||||
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
//记录配置告警是否需要自动生成工单
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@TableName(value = "iot_alarm_order_config", autoResultMap = true)
|
||||
public class AlarmOrderConfig extends OrgNoUserDO {
|
||||
private static final long serialVersionUID = 1L;
|
||||
@TableId(type = IdType.AUTO)
|
||||
private Long id;
|
||||
|
||||
private String ErrorCode;
|
||||
|
||||
private ErrorSource sourceType;
|
||||
|
||||
private boolean autoGenerateOrder = false;
|
||||
|
||||
private Long modelId; // 工单模型
|
||||
|
||||
}
|
||||
@@ -3,6 +3,7 @@ package com.maibu.core.business;
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.maibu.core.domain.OrgBaseDO;
|
||||
import com.maibu.core.enums.CompareEnum;
|
||||
import com.maibu.core.enums.ErrorLevel;
|
||||
import com.maibu.core.enums.ErrorSource;
|
||||
@@ -10,8 +11,8 @@ import lombok.Data;
|
||||
|
||||
|
||||
@Data
|
||||
@TableName("error_identification")
|
||||
public class ErrorIdentificationStandard {
|
||||
@TableName("iot_error_identification")
|
||||
public class ErrorIdentificationStandard extends OrgBaseDO {
|
||||
@TableId(type = IdType.AUTO)
|
||||
private Long id;
|
||||
private String field;
|
||||
|
||||
@@ -1,23 +1,26 @@
|
||||
package com.maibu.core.business;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import com.maibu.core.domain.TenantBaseDO;
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.maibu.core.domain.OrgNoUserDO;
|
||||
import com.maibu.core.enums.ErrorLevel;
|
||||
import com.maibu.core.enums.ErrorSource;
|
||||
import com.maibu.core.enums.OrderType;
|
||||
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@TableName("iot_work_order")
|
||||
@ApiModel("工单记录")
|
||||
public class IOTWorkOrder extends TenantBaseDO {
|
||||
public class IOTWorkOrder extends OrgNoUserDO {
|
||||
|
||||
@ApiModelProperty("主键 ID")
|
||||
@TableId(type = IdType.AUTO)
|
||||
@@ -32,10 +35,8 @@ public class IOTWorkOrder extends TenantBaseDO {
|
||||
@ApiModelProperty("工单来源:1-AI 诊断 2-无人机巡检 3-清洗优化 4-视频监控 5-装备控制 6-人工创建 7-告警关联")
|
||||
private Integer sourceType;
|
||||
|
||||
@ApiModelProperty("工单类型:1-巡检 2-检修 3-清洗 4-维修 5-运维")
|
||||
private Integer orderType;
|
||||
private OrderType orderType;
|
||||
|
||||
@ApiModelProperty("优先级:1-高 2-中 3-低")
|
||||
private ErrorLevel priorityLevel;
|
||||
|
||||
@ApiModelProperty("关联设备 ID")
|
||||
@@ -45,17 +46,11 @@ public class IOTWorkOrder extends TenantBaseDO {
|
||||
private String deviceName;
|
||||
|
||||
@ApiModelProperty("设备类型")
|
||||
private ErrorSource deviceType;
|
||||
|
||||
@ApiModelProperty("关联场站 ID")
|
||||
private Long siteId;
|
||||
private ErrorSource deviceType;
|
||||
|
||||
@ApiModelProperty("关联场站名称")
|
||||
private String siteName;
|
||||
|
||||
@ApiModelProperty("关联组织 ID")
|
||||
private Long orgId;
|
||||
|
||||
@ApiModelProperty("负责人 ID")
|
||||
private Long assigneeId;
|
||||
|
||||
@@ -109,4 +104,8 @@ public class IOTWorkOrder extends TenantBaseDO {
|
||||
|
||||
@ApiModelProperty("处理备注")
|
||||
private String handleRemark;
|
||||
|
||||
private Long modelId;
|
||||
|
||||
private Long taskId;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,40 @@
|
||||
package com.maibu.core.business;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.maibu.core.domain.OrgNoUserDO;
|
||||
import com.maibu.core.enums.ErrorLevel;
|
||||
import com.maibu.core.enums.OrderType;
|
||||
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
//自动生成工单配置的模型
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@TableName(value = "iot_order_model", autoResultMap = true)
|
||||
public class OrderModel extends OrgNoUserDO {
|
||||
private static final long serialVersionUID = 1L;
|
||||
@TableId(type = IdType.AUTO)
|
||||
private Long id;
|
||||
|
||||
private String orderName; // 工单名称 这个需要拼上时间
|
||||
|
||||
private OrderType orderType;
|
||||
|
||||
private ErrorLevel errorLevel;
|
||||
|
||||
private boolean autoGenerateTask = false; // 是否自动生成任务
|
||||
|
||||
private String deviceId; // 设备Id
|
||||
|
||||
private Long routeId; // 路径规划Id
|
||||
|
||||
private String waylineId; // 航线ID
|
||||
|
||||
private Integer rthAltitude; // 返航高度
|
||||
|
||||
private String rthMode; // 返航模式 optimal 智能高度 preset 设定高度
|
||||
|
||||
}
|
||||
@@ -107,4 +107,8 @@ public class Alarm extends TenantBaseDO {
|
||||
@ApiModelProperty("是否邮件通知:0-否 1-是")
|
||||
@Excel(name = "邮件通知", readConverterExp = "0=否,1=是")
|
||||
private Integer notifyEmail;
|
||||
|
||||
private Long siteId;
|
||||
|
||||
private Long orgId;
|
||||
}
|
||||
|
||||
@@ -40,4 +40,9 @@ public class AlarmMessage {
|
||||
|
||||
/** 状态 */
|
||||
private String status;
|
||||
|
||||
private Long siteId;
|
||||
|
||||
private Long orgId;
|
||||
|
||||
}
|
||||
|
||||
@@ -55,6 +55,9 @@ public class NettyDevice extends Connector {
|
||||
// todo 注册的时候更新 siteId
|
||||
private Device device;
|
||||
|
||||
//todo 假如设置一个当前控制的token
|
||||
private String currentControlToken;
|
||||
|
||||
@JsonIgnore
|
||||
private DevicePlanTaskMapper devicePlanTaskMapper = SpringUtils.getBean(DevicePlanTaskMapper.class);
|
||||
|
||||
|
||||
@@ -5,6 +5,9 @@ import java.time.LocalDateTime;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import com.maibu.core.domain.BaseEntity;
|
||||
import com.maibu.core.enums.ErrorLevel;
|
||||
import com.maibu.core.enums.ErrorSource;
|
||||
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
@@ -12,25 +15,14 @@ import lombok.Data;
|
||||
|
||||
@Data
|
||||
@ApiModel("告警查询参数")
|
||||
public class AlarmQueryDTO {
|
||||
public class AlarmQueryDTO extends BaseEntity {
|
||||
|
||||
@ApiModelProperty("页码")
|
||||
private Integer pageNum = 1;
|
||||
@ApiModelProperty("告警编号")
|
||||
private String alarmNo;
|
||||
|
||||
@ApiModelProperty("每页条数")
|
||||
private Integer pageSize = 10;
|
||||
private ErrorSource deviceType;
|
||||
|
||||
@ApiModelProperty("告警级别:1-严重 2-重要 3-一般 4-提示")
|
||||
private Integer alarmLevel;
|
||||
|
||||
@ApiModelProperty("告警类型")
|
||||
private Integer alarmType;
|
||||
|
||||
@ApiModelProperty("设备类型")
|
||||
private Integer deviceType;
|
||||
|
||||
@ApiModelProperty("处理状态:1-待处理 2-处理中 3-已关闭 4-已忽略")
|
||||
private Integer handleStatus;
|
||||
private ErrorLevel alarmLevel;
|
||||
|
||||
@ApiModelProperty("开始时间")
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@@ -42,9 +34,6 @@ public class AlarmQueryDTO {
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
|
||||
private LocalDateTime endTime;
|
||||
|
||||
@ApiModelProperty("搜索关键词(告警编号/内容)")
|
||||
private String keyword;
|
||||
|
||||
@ApiModelProperty("设备ID")
|
||||
private String deviceId;
|
||||
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
package com.maibu.core.business.dto;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
|
||||
@Data
|
||||
public class DeviceTaskCommandDTO {
|
||||
|
||||
private String deviceId;
|
||||
|
||||
private Long routeId; // 线路id
|
||||
|
||||
private LocalDateTime startTime; //开始时间 时分秒
|
||||
|
||||
private Long orgId;
|
||||
|
||||
private Long siteId;
|
||||
|
||||
private Long taskId;
|
||||
|
||||
}
|
||||
@@ -6,6 +6,10 @@ import lombok.Data;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
import javax.lang.model.type.ErrorType;
|
||||
|
||||
import com.maibu.core.enums.OrderType;
|
||||
|
||||
@Data
|
||||
@ApiModel("工单查询参数")
|
||||
public class WorkOrderQueryDTO {
|
||||
@@ -20,10 +24,10 @@ public class WorkOrderQueryDTO {
|
||||
private Integer sourceType;
|
||||
|
||||
@ApiModelProperty("工单类型")
|
||||
private Integer orderType;
|
||||
private OrderType orderType;
|
||||
|
||||
@ApiModelProperty("优先级")
|
||||
private Integer priorityLevel;
|
||||
private ErrorType priorityLevel;
|
||||
|
||||
@ApiModelProperty("负责人 ID")
|
||||
private Long assigneeId;
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
package com.maibu.core.business.dto;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.List;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class WorkOrderStartDTO {
|
||||
|
||||
private List<Long> ids;
|
||||
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
private LocalDateTime startTime;
|
||||
|
||||
private String deviceId;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
package com.maibu.core.business.dto.uav;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class FlightTaskCreateDTO {
|
||||
private String name;
|
||||
private String sn;
|
||||
private String wayline_uuid;
|
||||
private String time_zone;
|
||||
private Integer rth_altitude;
|
||||
private String rth_mode;
|
||||
private String wayline_precision_type;
|
||||
private String resumable_status;
|
||||
private String task_type;
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
package com.maibu.core.business.inter.mower;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
import org.springframework.context.ApplicationContext;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import com.maibu.core.business.dto.DeviceTaskCommandDTO;
|
||||
|
||||
@Component
|
||||
public class MowerCommandDispather {
|
||||
|
||||
@Resource
|
||||
private ApplicationContext applicationContext;
|
||||
|
||||
public void dispathDeviceTask(DeviceTaskCommandDTO dto) {
|
||||
Map<String, MowerCommandInter> beanMap = applicationContext.getBeansOfType(MowerCommandInter.class);
|
||||
// 遍历
|
||||
beanMap.values().forEach(x -> {
|
||||
x.createDeviceTask(dto);
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
package com.maibu.core.business.inter.mower;
|
||||
|
||||
import com.maibu.core.business.dto.DeviceTaskCommandDTO;
|
||||
|
||||
public interface MowerCommandInter {
|
||||
|
||||
void createDeviceTask(DeviceTaskCommandDTO dto);
|
||||
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
package com.maibu.core.business.inter.uav;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
import org.springframework.context.ApplicationContext;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import com.maibu.core.business.dto.uav.FlightTaskCreateDTO;
|
||||
|
||||
@Component
|
||||
public class UAVCommandDispather {
|
||||
|
||||
@Resource
|
||||
private ApplicationContext applicationContext;
|
||||
|
||||
public void dispathFightTask(FlightTaskCreateDTO dto) {
|
||||
Map<String, UAVCommandInter> beanMap = applicationContext.getBeansOfType(UAVCommandInter.class);
|
||||
// 遍历
|
||||
beanMap.values().forEach(x -> {
|
||||
x.createFlightTask(dto);
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
package com.maibu.core.business.inter.uav;
|
||||
|
||||
import com.maibu.core.business.dto.uav.FlightTaskCreateDTO;
|
||||
|
||||
public interface UAVCommandInter {
|
||||
|
||||
void createFlightTask(FlightTaskCreateDTO dto);
|
||||
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
package com.maibu.core.domain;
|
||||
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
/**
|
||||
* 拓展多租户的 BaseDO 基类
|
||||
*
|
||||
* @author fastbee
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
public abstract class OrgNoUserDO extends BaseDO {
|
||||
|
||||
/**
|
||||
* 多租户编号
|
||||
*/
|
||||
private Long orgId;
|
||||
|
||||
private Long siteId;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
package com.maibu.core.enums;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
|
||||
@Getter
|
||||
@AllArgsConstructor
|
||||
public enum OrderType {
|
||||
MOWER_ERROR("MOWER_ERROR", "割草机故障", 1),
|
||||
|
||||
UAV_ERROR("UAV_ERROR", "无人机故障", 2),
|
||||
|
||||
INSPECTION_TASK("INSPECTION_TASK", "巡检", 2),
|
||||
|
||||
COMPONENT_DEFECT("COMPONENT_DEFECT", "光伏组件故障", 3),
|
||||
|
||||
CLEAN_TASK("CLEAN_TASK", "清洗任务", 2),
|
||||
|
||||
MAINTAIN_TASK("MAINTAIN_TASK", "维护任务", 3),
|
||||
|
||||
REPAIR_TASK("REPAIR_TASK", "维修任务", 3),
|
||||
|
||||
OTHER("OTHER", "其他", 3);
|
||||
|
||||
/** 订单类型值(存储在数据库中) */
|
||||
private final String value;
|
||||
|
||||
/** 订单类型名称(用于前端显示) */
|
||||
private final String name;
|
||||
|
||||
// 主体 1-割草机 2 -无人机 3 -其他
|
||||
private final Integer type;
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
package com.maibu.mapper;
|
||||
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
import com.maibu.core.business.AlarmOrderConfig;
|
||||
import com.maibu.mybatis.mapper.BaseMapperX;
|
||||
|
||||
/**
|
||||
* 设备历史状态
|
||||
*/
|
||||
@Repository
|
||||
public interface AlarmOrderConfigMapper extends BaseMapperX<AlarmOrderConfig> {
|
||||
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
package com.maibu.mapper;
|
||||
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
import com.maibu.core.business.OrderModel;
|
||||
import com.maibu.mybatis.mapper.BaseMapperX;
|
||||
|
||||
/**
|
||||
* 设备历史状态
|
||||
*/
|
||||
@Repository
|
||||
public interface OrderModelMapper extends BaseMapperX<OrderModel> {
|
||||
|
||||
}
|
||||
@@ -10,12 +10,14 @@ import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
|
||||
import com.maibu.core.business.AlarmOrderConfig;
|
||||
import com.maibu.core.business.Device;
|
||||
import com.maibu.core.business.DevicePlan;
|
||||
import com.maibu.core.business.DevicePlanTask;
|
||||
import com.maibu.core.business.DeviceRunParam;
|
||||
import com.maibu.core.business.ErrorIdentificationStandard;
|
||||
import com.maibu.core.business.IoTCommonDevice;
|
||||
import com.maibu.core.business.OrderModel;
|
||||
import com.maibu.core.domain.entity.SysSite;
|
||||
import com.maibu.core.enums.ErrorSource;
|
||||
|
||||
@@ -27,12 +29,16 @@ import lombok.extern.slf4j.Slf4j;
|
||||
@Slf4j
|
||||
public class SiteMemory {
|
||||
|
||||
public Map<ErrorSource, List<ErrorIdentificationStandard>> standards = null;
|
||||
public ConcurrentHashMap<ErrorSource, List<ErrorIdentificationStandard>> standards = null;
|
||||
|
||||
public Long siteId;
|
||||
|
||||
public SysSite sysSite;
|
||||
|
||||
public static final ConcurrentHashMap<Long, OrderModel> ordrModelMap = new ConcurrentHashMap<>();
|
||||
|
||||
public static final ConcurrentHashMap<String, AlarmOrderConfig> orderConfigMap = new ConcurrentHashMap<>();
|
||||
|
||||
public static final ConcurrentHashMap<String, DeviceRunParam> deviceRunParamMap = new ConcurrentHashMap<>();
|
||||
|
||||
private static final ConcurrentHashMap<String, Device> deviceMap = new ConcurrentHashMap<>();
|
||||
@@ -73,6 +79,68 @@ public class SiteMemory {
|
||||
}
|
||||
}
|
||||
|
||||
public void saveErrorIdentificationStandard(ErrorIdentificationStandard errorIdentificationStandard) {
|
||||
if (standards == null) {
|
||||
standards = new ConcurrentHashMap<>();
|
||||
}
|
||||
List<ErrorIdentificationStandard> list = standards.get(errorIdentificationStandard.getErrorSource());
|
||||
if (CollectionUtils.isEmpty(list)) {
|
||||
list = new ArrayList<>();
|
||||
}
|
||||
list.add(errorIdentificationStandard);
|
||||
standards.put(errorIdentificationStandard.getErrorSource(), list);
|
||||
}
|
||||
|
||||
public List<ErrorIdentificationStandard> getErrorIdentificationStandard(ErrorSource errorSource) {
|
||||
if (errorSource != null && standards != null) {
|
||||
return standards.get(errorSource);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public void removeErrorIdentificationStandard(ErrorIdentificationStandard errorIdentificationStandard) {
|
||||
if (errorIdentificationStandard != null && standards != null) {
|
||||
List<ErrorIdentificationStandard> list = standards.get(errorIdentificationStandard.getErrorSource());
|
||||
if (!CollectionUtils.isEmpty(list)) {
|
||||
list.removeIf(x -> x.getId().equals(errorIdentificationStandard.getId()));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void saveOrderModel(OrderModel orderModel) {
|
||||
ordrModelMap.put(orderModel.getId(), orderModel);
|
||||
}
|
||||
|
||||
public OrderModel getOrderModel(Long id) {
|
||||
if (id != null) {
|
||||
return ordrModelMap.get(id);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public void removeOrderModel(Long id) {
|
||||
if (id != null) {
|
||||
ordrModelMap.remove(id);
|
||||
}
|
||||
}
|
||||
|
||||
public void saveAlarmOrderConfig(AlarmOrderConfig alarmOrderConfig) {
|
||||
orderConfigMap.put(alarmOrderConfig.getErrorCode(), alarmOrderConfig);
|
||||
}
|
||||
|
||||
public AlarmOrderConfig getAlarmOrderConfig(String errorCode) {
|
||||
if (!StringUtils.isEmpty(errorCode)) {
|
||||
return orderConfigMap.get(errorCode);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public void removeAlarmOrderConfig(String errorCode) {
|
||||
if (!StringUtils.isEmpty(errorCode)) {
|
||||
orderConfigMap.remove(errorCode);
|
||||
}
|
||||
}
|
||||
|
||||
public void addDevicePlan(DevicePlan devicePlan) {
|
||||
if (devicePlan != null && !StringUtils.isEmpty(devicePlan.getDeviceId())) {
|
||||
String deviceId = devicePlan.getDeviceId();
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
package com.maibu.mqtt;
|
||||
|
||||
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.eclipse.paho.client.mqttv3.*;
|
||||
import org.eclipse.paho.client.mqttv3.persist.MemoryPersistence;
|
||||
@@ -83,11 +82,14 @@ public class MqttClientUtil {
|
||||
int qos)
|
||||
throws MqttException {
|
||||
|
||||
MqttMessage message =
|
||||
new MqttMessage(payload.getBytes());
|
||||
MqttMessage message = new MqttMessage(payload.getBytes());
|
||||
|
||||
message.setQos(qos);
|
||||
|
||||
if (!client.isConnected()) {
|
||||
log.warn("MQTT未连接");
|
||||
return;
|
||||
}
|
||||
client.publish(topic, message);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user