From 47d40cf9d201dc38efedb0e8a2e2c29105e8d45f Mon Sep 17 00:00:00 2001 From: chenyouting <514333061@qq.com> Date: Fri, 6 Mar 2026 17:58:39 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E4=BB=A3=E7=A0=817?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bjq/BjqActiveReportingDeviceDataRule.java | 24 +++--- .../global/mqtt/rule/bjq/BjqBootLogoRule.java | 62 +++++++------- .../rule/bjq/BjqLaserModeSettingsRule.java | 18 ++-- .../mqtt/rule/bjq/BjqLightBrightnessRule.java | 18 ++-- .../mqtt/rule/bjq/BjqLocationDataRule.java | 40 ++++----- .../global/mqtt/rule/bjq/BjqModeRule.java | 78 +++++++++--------- .../mqtt/rule/bjq/BjqSendMessageRule.java | 82 +++++++++---------- 7 files changed, 161 insertions(+), 161 deletions(-) diff --git a/fys-admin/src/main/java/com/fuyuanshen/global/mqtt/rule/bjq/BjqActiveReportingDeviceDataRule.java b/fys-admin/src/main/java/com/fuyuanshen/global/mqtt/rule/bjq/BjqActiveReportingDeviceDataRule.java index 36dcff6d..50fd65a0 100644 --- a/fys-admin/src/main/java/com/fuyuanshen/global/mqtt/rule/bjq/BjqActiveReportingDeviceDataRule.java +++ b/fys-admin/src/main/java/com/fuyuanshen/global/mqtt/rule/bjq/BjqActiveReportingDeviceDataRule.java @@ -38,18 +38,18 @@ public class BjqActiveReportingDeviceDataRule implements MqttMessageRule { @Override public void execute(MqttRuleContext context) { try { -// Object[] convertArr = context.getConvertArr(); -// // Latitude, longitude -// //主灯档位,激光灯档位,电量百分比,充电状态,电池剩余续航时间 -// String mainLightMode = convertArr[1].toString(); -// String laserLightMode = convertArr[2].toString(); -// String batteryPercentage = convertArr[3].toString(); -// String chargeState = convertArr[4].toString(); -// String batteryRemainingTime = convertArr[5].toString(); -// -// // 发送设备状态和位置信息到Redis -// asyncSendDeviceDataToRedisWithFuture(context.getDeviceImei(), mainLightMode, laserLightMode, -// batteryPercentage, chargeState, batteryRemainingTime); + Object[] convertArr = context.getConvertArr(); + // Latitude, longitude + //主灯档位,激光灯档位,电量百分比,充电状态,电池剩余续航时间 + String mainLightMode = convertArr[1].toString(); + String laserLightMode = convertArr[2].toString(); + String batteryPercentage = convertArr[3].toString(); + String chargeState = convertArr[4].toString(); + String batteryRemainingTime = convertArr[5].toString(); + + // 发送设备状态和位置信息到Redis + asyncSendDeviceDataToRedisWithFuture(context.getDeviceImei(), mainLightMode, laserLightMode, + batteryPercentage, chargeState, batteryRemainingTime); } catch (Exception e) { log.error("处理上报数据命令时出错", e); } diff --git a/fys-admin/src/main/java/com/fuyuanshen/global/mqtt/rule/bjq/BjqBootLogoRule.java b/fys-admin/src/main/java/com/fuyuanshen/global/mqtt/rule/bjq/BjqBootLogoRule.java index 7ea08ff1..651f03a6 100644 --- a/fys-admin/src/main/java/com/fuyuanshen/global/mqtt/rule/bjq/BjqBootLogoRule.java +++ b/fys-admin/src/main/java/com/fuyuanshen/global/mqtt/rule/bjq/BjqBootLogoRule.java @@ -44,37 +44,37 @@ public class BjqBootLogoRule implements MqttMessageRule { public void execute(MqttRuleContext context) { String functionAccess = FUNCTION_ACCESS_KEY + context.getDeviceImei(); try { -// Byte val2 = (Byte) context.getConvertArr()[1]; -// if (val2 == 100) { -// RedisUtils.setCacheObject(functionAccess, FunctionAccessStatus.OK.getCode(), Duration.ofSeconds(20)); -// return; -// } -// -// String data = RedisUtils.getCacheObject(GLOBAL_REDIS_KEY+ DEVICE_KEY_PREFIX + context.getDeviceImei() +DEVICE_BOOT_LOGO_KEY_PREFIX); -// if (StringUtils.isEmpty(data)) { -// return; -// } -// -// byte[] arr = ImageToCArrayConverter.convertStringToByteArray(data); -// byte[] specificChunk = ImageToCArrayConverter.getChunk(arr, (val2 - 1), 512); -// log.info("第{}块数据大小: {} 字节", val2, specificChunk.length); -// -// ArrayList intData = new ArrayList<>(); -// intData.add(3); -// intData.add((int) val2); -// ImageToCArrayConverter.buildArr(convertHexToDecimal(specificChunk), intData); -// intData.add(0); -// intData.add(0); -// intData.add(0); -// intData.add(0); -// -// Map map = new HashMap<>(); -// map.put("instruct", intData); -// -// mqttGateway.sendMsgToMqtt(MqttConstants.GLOBAL_PUB_KEY + context.getDeviceImei(), 1, JsonUtils.toJsonString(map)); -// log.info("发送开机LOGO点阵数据到设备消息=>topic:{},payload:{}", -// MqttConstants.GLOBAL_PUB_KEY + context.getDeviceImei(), -// JsonUtils.toJsonString(map)); + Byte val2 = (Byte) context.getConvertArr()[1]; + if (val2 == 100) { + RedisUtils.setCacheObject(functionAccess, FunctionAccessStatus.OK.getCode(), Duration.ofSeconds(20)); + return; + } + + String data = RedisUtils.getCacheObject(GLOBAL_REDIS_KEY+ DEVICE_KEY_PREFIX + context.getDeviceImei() +DEVICE_BOOT_LOGO_KEY_PREFIX); + if (StringUtils.isEmpty(data)) { + return; + } + + byte[] arr = ImageToCArrayConverter.convertStringToByteArray(data); + byte[] specificChunk = ImageToCArrayConverter.getChunk(arr, (val2 - 1), 512); + log.info("第{}块数据大小: {} 字节", val2, specificChunk.length); + + ArrayList intData = new ArrayList<>(); + intData.add(3); + intData.add((int) val2); + ImageToCArrayConverter.buildArr(convertHexToDecimal(specificChunk), intData); + intData.add(0); + intData.add(0); + intData.add(0); + intData.add(0); + + Map map = new HashMap<>(); + map.put("instruct", intData); + + mqttGateway.sendMsgToMqtt(MqttConstants.GLOBAL_PUB_KEY + context.getDeviceImei(), 1, JsonUtils.toJsonString(map)); + log.info("发送开机LOGO点阵数据到设备消息=>topic:{},payload:{}", + MqttConstants.GLOBAL_PUB_KEY + context.getDeviceImei(), + JsonUtils.toJsonString(map)); } catch (Exception e) { log.error("处理开机LOGO时出错", e); diff --git a/fys-admin/src/main/java/com/fuyuanshen/global/mqtt/rule/bjq/BjqLaserModeSettingsRule.java b/fys-admin/src/main/java/com/fuyuanshen/global/mqtt/rule/bjq/BjqLaserModeSettingsRule.java index f849a5d8..74018004 100644 --- a/fys-admin/src/main/java/com/fuyuanshen/global/mqtt/rule/bjq/BjqLaserModeSettingsRule.java +++ b/fys-admin/src/main/java/com/fuyuanshen/global/mqtt/rule/bjq/BjqLaserModeSettingsRule.java @@ -34,15 +34,15 @@ public class BjqLaserModeSettingsRule implements MqttMessageRule { public void execute(MqttRuleContext context) { String functionAccess = FUNCTION_ACCESS_KEY + context.getDeviceImei(); try { -// Object[] convertArr = context.getConvertArr(); -// -// String mode = convertArr[1].toString(); -// if(StringUtils.isNotBlank(mode)){ -// // 发送设备状态和位置信息到Redis -// syncSendDeviceDataToRedisWithFuture(context.getDeviceImei(),mode); -// } -// -// RedisUtils.setCacheObject(functionAccess, FunctionAccessStatus.OK.getCode(), Duration.ofSeconds(30)); + Object[] convertArr = context.getConvertArr(); + + String mode = convertArr[1].toString(); + if(StringUtils.isNotBlank(mode)){ + // 发送设备状态和位置信息到Redis + syncSendDeviceDataToRedisWithFuture(context.getDeviceImei(),mode); + } + + RedisUtils.setCacheObject(functionAccess, FunctionAccessStatus.OK.getCode(), Duration.ofSeconds(30)); } catch (Exception e) { log.error("处理激光模式命令时出错", e); RedisUtils.setCacheObject(functionAccess, FunctionAccessStatus.FAILED.getCode(), Duration.ofSeconds(30)); diff --git a/fys-admin/src/main/java/com/fuyuanshen/global/mqtt/rule/bjq/BjqLightBrightnessRule.java b/fys-admin/src/main/java/com/fuyuanshen/global/mqtt/rule/bjq/BjqLightBrightnessRule.java index 722ab603..0fc6dd8e 100644 --- a/fys-admin/src/main/java/com/fuyuanshen/global/mqtt/rule/bjq/BjqLightBrightnessRule.java +++ b/fys-admin/src/main/java/com/fuyuanshen/global/mqtt/rule/bjq/BjqLightBrightnessRule.java @@ -34,15 +34,15 @@ public class BjqLightBrightnessRule implements MqttMessageRule { public void execute(MqttRuleContext context) { String functionAccess = FUNCTION_ACCESS_KEY + context.getDeviceImei(); try { -// Object[] convertArr = context.getConvertArr(); -// -// String convertValue = convertArr[1].toString(); -// // 将设备状态信息存储到Redis中 -// String deviceRedisKey = GlobalConstants.GLOBAL_REDIS_KEY+DeviceRedisKeyConstants.DEVICE_KEY_PREFIX + context.getDeviceImei() + DEVICE_LIGHT_BRIGHTNESS_KEY_PREFIX; -// -// // 存储到Redis -// RedisUtils.setCacheObject(deviceRedisKey, convertValue); -// RedisUtils.setCacheObject(functionAccess, FunctionAccessStatus.OK.getCode(), Duration.ofSeconds(20)); + Object[] convertArr = context.getConvertArr(); + + String convertValue = convertArr[1].toString(); + // 将设备状态信息存储到Redis中 + String deviceRedisKey = GlobalConstants.GLOBAL_REDIS_KEY+DeviceRedisKeyConstants.DEVICE_KEY_PREFIX + context.getDeviceImei() + DEVICE_LIGHT_BRIGHTNESS_KEY_PREFIX; + + // 存储到Redis + RedisUtils.setCacheObject(deviceRedisKey, convertValue); + RedisUtils.setCacheObject(functionAccess, FunctionAccessStatus.OK.getCode(), Duration.ofSeconds(20)); } catch (Exception e) { log.error("处理灯光亮度命令时出错", e); RedisUtils.setCacheObject(functionAccess, FunctionAccessStatus.FAILED.getCode(), Duration.ofSeconds(20)); diff --git a/fys-admin/src/main/java/com/fuyuanshen/global/mqtt/rule/bjq/BjqLocationDataRule.java b/fys-admin/src/main/java/com/fuyuanshen/global/mqtt/rule/bjq/BjqLocationDataRule.java index 539e08d1..e4377e42 100644 --- a/fys-admin/src/main/java/com/fuyuanshen/global/mqtt/rule/bjq/BjqLocationDataRule.java +++ b/fys-admin/src/main/java/com/fuyuanshen/global/mqtt/rule/bjq/BjqLocationDataRule.java @@ -52,26 +52,26 @@ public class BjqLocationDataRule implements MqttMessageRule { public void execute(MqttRuleContext context) { String functionAccess = FUNCTION_ACCESS_KEY + context.getDeviceImei(); try { -// Object[] convertArr = context.getConvertArr(); -// // Latitude, longitude -// String latitude = convertArr[1].toString(); -// String longitude = convertArr[2].toString(); -// // 判断 latitude 和 longitude 是否都为 0 -// if ("0".equals(latitude) && "0".equals(longitude)) { -// log.info("位置信息为0,不存储到Redis: device={}, lat={}, lon={}", context.getDeviceImei(), latitude, longitude); -// return; -// } -// // 异步发送经纬度到Redis -// asyncSendLocationToRedisWithFuture(context.getDeviceImei(), latitude, longitude); -// // 异步保存数据 -// asyncSaveLocationToMySQLWithFuture(context.getDeviceImei(), latitude, longitude); -// -// Map map = buildLocationDataMap(latitude, longitude); -// mqttGateway.sendMsgToMqtt(MqttConstants.GLOBAL_PUB_KEY + context.getDeviceImei(), 1, JsonUtils.toJsonString(map)); -// log.info("发送定位数据到设备=>topic:{},payload:{}", -// MqttConstants.GLOBAL_PUB_KEY + context.getDeviceImei(), -// JsonUtils.toJsonString(map)); -// RedisUtils.setCacheObject(functionAccess, FunctionAccessStatus.OK.getCode(), Duration.ofSeconds(20)); + Object[] convertArr = context.getConvertArr(); + // Latitude, longitude + String latitude = convertArr[1].toString(); + String longitude = convertArr[2].toString(); + // 判断 latitude 和 longitude 是否都为 0 + if ("0".equals(latitude) && "0".equals(longitude)) { + log.info("位置信息为0,不存储到Redis: device={}, lat={}, lon={}", context.getDeviceImei(), latitude, longitude); + return; + } + // 异步发送经纬度到Redis + asyncSendLocationToRedisWithFuture(context.getDeviceImei(), latitude, longitude); + // 异步保存数据 + asyncSaveLocationToMySQLWithFuture(context.getDeviceImei(), latitude, longitude); + + Map map = buildLocationDataMap(latitude, longitude); + mqttGateway.sendMsgToMqtt(MqttConstants.GLOBAL_PUB_KEY + context.getDeviceImei(), 1, JsonUtils.toJsonString(map)); + log.info("发送定位数据到设备=>topic:{},payload:{}", + MqttConstants.GLOBAL_PUB_KEY + context.getDeviceImei(), + JsonUtils.toJsonString(map)); + RedisUtils.setCacheObject(functionAccess, FunctionAccessStatus.OK.getCode(), Duration.ofSeconds(20)); } catch (Exception e) { log.error("处理定位数据命令时出错", e); RedisUtils.setCacheObject(functionAccess, FunctionAccessStatus.FAILED.getCode(), Duration.ofSeconds(20)); diff --git a/fys-admin/src/main/java/com/fuyuanshen/global/mqtt/rule/bjq/BjqModeRule.java b/fys-admin/src/main/java/com/fuyuanshen/global/mqtt/rule/bjq/BjqModeRule.java index ef667606..c288f58d 100644 --- a/fys-admin/src/main/java/com/fuyuanshen/global/mqtt/rule/bjq/BjqModeRule.java +++ b/fys-admin/src/main/java/com/fuyuanshen/global/mqtt/rule/bjq/BjqModeRule.java @@ -52,45 +52,45 @@ public class BjqModeRule implements MqttMessageRule { try { log.info("处理灯光模式命令"); log.info("MQTT消息负载字典:{}", context.getPayloadDict()); -// Object[] convertArr = context.getConvertArr(); -// -// String mainLightMode = convertArr[1].toString(); -// String batteryRemainingTime = convertArr[2].toString(); -// if (StringUtils.isNotBlank(mainLightMode)) { -// log.info("设备离线mainLightMode:{}", mainLightMode); -// if ("0".equals(mainLightMode)) { -// -// // 设备离线 -// String deviceOnlineStatusRedisKey = GlobalConstants.GLOBAL_REDIS_KEY + DEVICE_KEY_PREFIX + context.getDeviceImei() + DeviceRedisKeyConstants.DEVICE_ONLINE_STATUS_KEY_PREFIX; -// RedisUtils.setCacheObject(deviceOnlineStatusRedisKey, "0"); -// -// String sendMessageIng = GLOBAL_REDIS_KEY + DEVICE_KEY_PREFIX + context.getDeviceImei() + ":messageSending"; -// String messageSendingValue = RedisUtils.getCacheObject(sendMessageIng); -// if ("1".equals(messageSendingValue)) { -// // 设置为故障状态 -// RedisUtils.setCacheObject(deviceOnlineStatusRedisKey, "2"); -// UpdateWrapper updateWrapper = new UpdateWrapper<>(); -// updateWrapper.eq("device_imei", context.getDeviceImei()); -// updateWrapper.set("online_status", 2); -// deviceService.update(updateWrapper); -// RedisUtils.deleteObject(sendMessageIng); -// -// // 解除告警 -// String deviceRedisKey = GlobalConstants.GLOBAL_REDIS_KEY + DeviceRedisKeyConstants.DEVICE_KEY_PREFIX + context.getDeviceImei() + DEVICE_ALARM_KEY_PREFIX; -// if (RedisUtils.getCacheObject(deviceRedisKey) != null) { -// RedisUtils.deleteObject(deviceRedisKey); -// } -// cancelAlarm(context.getDeviceImei()); -// } -// } -// // 发送设备状态和位置信息到Redis -// syncSendDeviceDataToRedisWithFuture(context.getDeviceImei(), mainLightMode); -// String deviceRedisKey = GlobalConstants.GLOBAL_REDIS_KEY + DeviceRedisKeyConstants.DEVICE_KEY_PREFIX + context.getDeviceImei() + DEVICE_LIGHT_BRIGHTNESS_KEY_PREFIX; -// -// // 存储到Redis -// RedisUtils.setCacheObject(deviceRedisKey, batteryRemainingTime); -// } -// RedisUtils.setCacheObject(functionAccess, FunctionAccessStatus.OK.getCode(), Duration.ofSeconds(20)); + Object[] convertArr = context.getConvertArr(); + + String mainLightMode = convertArr[1].toString(); + String batteryRemainingTime = convertArr[2].toString(); + if (StringUtils.isNotBlank(mainLightMode)) { + log.info("设备离线mainLightMode:{}", mainLightMode); + if ("0".equals(mainLightMode)) { + + // 设备离线 + String deviceOnlineStatusRedisKey = GlobalConstants.GLOBAL_REDIS_KEY + DEVICE_KEY_PREFIX + context.getDeviceImei() + DeviceRedisKeyConstants.DEVICE_ONLINE_STATUS_KEY_PREFIX; + RedisUtils.setCacheObject(deviceOnlineStatusRedisKey, "0"); + + String sendMessageIng = GLOBAL_REDIS_KEY + DEVICE_KEY_PREFIX + context.getDeviceImei() + ":messageSending"; + String messageSendingValue = RedisUtils.getCacheObject(sendMessageIng); + if ("1".equals(messageSendingValue)) { + // 设置为故障状态 + RedisUtils.setCacheObject(deviceOnlineStatusRedisKey, "2"); + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("device_imei", context.getDeviceImei()); + updateWrapper.set("online_status", 2); + deviceService.update(updateWrapper); + RedisUtils.deleteObject(sendMessageIng); + + // 解除告警 + String deviceRedisKey = GlobalConstants.GLOBAL_REDIS_KEY + DeviceRedisKeyConstants.DEVICE_KEY_PREFIX + context.getDeviceImei() + DEVICE_ALARM_KEY_PREFIX; + if (RedisUtils.getCacheObject(deviceRedisKey) != null) { + RedisUtils.deleteObject(deviceRedisKey); + } + cancelAlarm(context.getDeviceImei()); + } + } + // 发送设备状态和位置信息到Redis + syncSendDeviceDataToRedisWithFuture(context.getDeviceImei(), mainLightMode); + String deviceRedisKey = GlobalConstants.GLOBAL_REDIS_KEY + DeviceRedisKeyConstants.DEVICE_KEY_PREFIX + context.getDeviceImei() + DEVICE_LIGHT_BRIGHTNESS_KEY_PREFIX; + + // 存储到Redis + RedisUtils.setCacheObject(deviceRedisKey, batteryRemainingTime); + } + RedisUtils.setCacheObject(functionAccess, FunctionAccessStatus.OK.getCode(), Duration.ofSeconds(20)); } catch (Exception e) { log.error("处理灯光模式命令时出错", e); RedisUtils.setCacheObject(functionAccess, FunctionAccessStatus.FAILED.getCode(), Duration.ofSeconds(20)); diff --git a/fys-admin/src/main/java/com/fuyuanshen/global/mqtt/rule/bjq/BjqSendMessageRule.java b/fys-admin/src/main/java/com/fuyuanshen/global/mqtt/rule/bjq/BjqSendMessageRule.java index 50e75fe0..028cb3f9 100644 --- a/fys-admin/src/main/java/com/fuyuanshen/global/mqtt/rule/bjq/BjqSendMessageRule.java +++ b/fys-admin/src/main/java/com/fuyuanshen/global/mqtt/rule/bjq/BjqSendMessageRule.java @@ -45,47 +45,47 @@ public class BjqSendMessageRule implements MqttMessageRule { try { // Byte val2 = (Byte) context.getConvertArr()[1]; -// String val2Str = context.getConvertArr()[1].toString(); -// int val2 = Integer.parseInt(val2Str); -// System.out.println("收到设备信息命令:"+val2); -// if (val2 == 100) { -// RedisUtils.setCacheObject(functionAccess, FunctionAccessStatus.OK.getCode(), Duration.ofSeconds(20)); -// return; -// } -// -// if(val2==200){ -// String sendMessageIng = GLOBAL_REDIS_KEY+ DEVICE_KEY_PREFIX + context.getDeviceImei() + ":messageSending"; -// RedisUtils.deleteObject(sendMessageIng); -// return; -// } -// -// -// String data = RedisUtils.getCacheObject(GLOBAL_REDIS_KEY+ DEVICE_KEY_PREFIX + context.getDeviceImei() + ":app_send_message_data"); -// if (StringUtils.isEmpty(data)) { -// return; -// } -// -// byte[] arr = ImageToCArrayConverter.convertStringToByteArray(data); -// byte[] specificChunk = ImageToCArrayConverter.getChunk(arr, (val2 - 1), 512); -// log.info("第{}块数据大小: {} 字节", val2, specificChunk.length); -//// System.out.println("第" + val2 + "块数据: " + Arrays.toString(specificChunk)); -// -// ArrayList intData = new ArrayList<>(); -// intData.add(6); -// intData.add(val2); -// ImageToCArrayConverter.buildArr(convertHexToDecimal(specificChunk), intData); -// intData.add(0); -// intData.add(0); -// intData.add(0); -// intData.add(0); -// -// Map map = new HashMap<>(); -// map.put("instruct", intData); -// -// mqttGateway.sendMsgToMqtt(MqttConstants.GLOBAL_PUB_KEY + context.getDeviceImei(), 1, JsonUtils.toJsonString(map)); -// log.info("发送设备信息数据到设备消息=>topic:{},payload:{}", -// MqttConstants.GLOBAL_PUB_KEY + context.getDeviceImei(), -// JsonUtils.toJsonString(map)); + String val2Str = context.getConvertArr()[1].toString(); + int val2 = Integer.parseInt(val2Str); + System.out.println("收到设备信息命令:"+val2); + if (val2 == 100) { + RedisUtils.setCacheObject(functionAccess, FunctionAccessStatus.OK.getCode(), Duration.ofSeconds(20)); + return; + } + + if(val2==200){ + String sendMessageIng = GLOBAL_REDIS_KEY+ DEVICE_KEY_PREFIX + context.getDeviceImei() + ":messageSending"; + RedisUtils.deleteObject(sendMessageIng); + return; + } + + + String data = RedisUtils.getCacheObject(GLOBAL_REDIS_KEY+ DEVICE_KEY_PREFIX + context.getDeviceImei() + ":app_send_message_data"); + if (StringUtils.isEmpty(data)) { + return; + } + + byte[] arr = ImageToCArrayConverter.convertStringToByteArray(data); + byte[] specificChunk = ImageToCArrayConverter.getChunk(arr, (val2 - 1), 512); + log.info("第{}块数据大小: {} 字节", val2, specificChunk.length); +// System.out.println("第" + val2 + "块数据: " + Arrays.toString(specificChunk)); + + ArrayList intData = new ArrayList<>(); + intData.add(6); + intData.add(val2); + ImageToCArrayConverter.buildArr(convertHexToDecimal(specificChunk), intData); + intData.add(0); + intData.add(0); + intData.add(0); + intData.add(0); + + Map map = new HashMap<>(); + map.put("instruct", intData); + + mqttGateway.sendMsgToMqtt(MqttConstants.GLOBAL_PUB_KEY + context.getDeviceImei(), 1, JsonUtils.toJsonString(map)); + log.info("发送设备信息数据到设备消息=>topic:{},payload:{}", + MqttConstants.GLOBAL_PUB_KEY + context.getDeviceImei(), + JsonUtils.toJsonString(map)); } catch (Exception e) { log.error("处理发送设备信息时出错", e);