diff --git a/common/transport/mqtt/src/main/java/org/thingsboard/server/transport/mqtt/session/SparkplugNodeSessionHandler.java b/common/transport/mqtt/src/main/java/org/thingsboard/server/transport/mqtt/session/SparkplugNodeSessionHandler.java index 73d9f1f19f..830d4b462d 100644 --- a/common/transport/mqtt/src/main/java/org/thingsboard/server/transport/mqtt/session/SparkplugNodeSessionHandler.java +++ b/common/transport/mqtt/src/main/java/org/thingsboard/server/transport/mqtt/session/SparkplugNodeSessionHandler.java @@ -115,9 +115,13 @@ public class SparkplugNodeSessionHandler extends AbstractGatewaySessionHandler { log.error("Failed add Metrics. MessageType *BIRTH.", e); } } - List attributesMsgList = convertToPostAttributes(sparkplugBProto, deviceName); - onDeviceAttributesProto(contextListenableFuture, msgId, attributesMsgList, deviceName); - List postTelemetryMsgList = convertToPostTelemetry(sparkplugBProto, topic.getType().name()); + Set attributesMetricNames = ((MqttDeviceProfileTransportConfiguration) deviceSessionCtx + .getDeviceProfile().getProfileData().getTransportConfiguration()).getSparkPlugAttributesMetricNames(); + if (attributesMetricNames != null) { + List attributesMsgList = convertToPostAttributes(sparkplugBProto, attributesMetricNames, deviceName); + onDeviceAttributesProto(contextListenableFuture, msgId, attributesMsgList, deviceName); + } + List postTelemetryMsgList = convertToPostTelemetry(sparkplugBProto, attributesMetricNames, topic.getType().name()); onDeviceTelemetryProto(contextListenableFuture, msgId, postTelemetryMsgList, deviceName); } @@ -216,13 +220,11 @@ public class SparkplugNodeSessionHandler extends AbstractGatewaySessionHandler { } } - private List convertToPostTelemetry(SparkplugBProto.Payload sparkplugBProto, String topicTypeName) throws AdaptorException { + private List convertToPostTelemetry(SparkplugBProto.Payload sparkplugBProto, Set attributesMetricNames, String topicTypeName) throws AdaptorException { try { List msgs = new ArrayList<>(); - Set attributesMetricNames = ((MqttDeviceProfileTransportConfiguration) deviceSessionCtx - .getDeviceProfile().getProfileData().getTransportConfiguration()).getSparkPlugAttributesMetricNames(); for (SparkplugBProto.Payload.Metric protoMetric : sparkplugBProto.getMetricsList()) { - if (!attributesMetricNames.contains(protoMetric.getName())) { + if (attributesMetricNames == null || !attributesMetricNames.contains(protoMetric.getName())) { long ts = protoMetric.getTimestamp(); String key = "bdSeq".equals(protoMetric.getName()) ? topicTypeName + " " + protoMetric.getName() : protoMetric.getName(); @@ -247,11 +249,11 @@ public class SparkplugNodeSessionHandler extends AbstractGatewaySessionHandler { } } - private List convertToPostAttributes(SparkplugBProto.Payload sparkplugBProto, String deviceName) throws AdaptorException { + private List convertToPostAttributes(SparkplugBProto.Payload sparkplugBProto, + Set attributesMetricNames, + String deviceName) throws AdaptorException { try { List msgs = new ArrayList<>(); - Set attributesMetricNames = ((MqttDeviceProfileTransportConfiguration) deviceSessionCtx - .getDeviceProfile().getProfileData().getTransportConfiguration()).getSparkPlugAttributesMetricNames(); for (SparkplugBProto.Payload.Metric protoMetric : sparkplugBProto.getMetricsList()) { if (attributesMetricNames.contains(protoMetric.getName())) { TransportApiProtos.AttributesMsg.Builder deviceAttributesMsgBuilder = TransportApiProtos.AttributesMsg.newBuilder();