Showing
3 changed files
with
16 additions
and
7 deletions
... | ... | @@ -44,12 +44,8 @@ public class EntityDataMsgConstructor { |
44 | 44 | case ATTRIBUTES_UPDATED: |
45 | 45 | try { |
46 | 46 | JsonObject data = entityData.getAsJsonObject(); |
47 | - if (data.has("scope") && data.has("kv")) { | |
48 | - builder.setPostAttributesMsg(JsonConverter.convertToAttributesProto(data.getAsJsonObject("kv"))); | |
49 | - builder.setPostAttributeScope(data.getAsJsonPrimitive("scope").getAsString()); | |
50 | - } else { | |
51 | - builder.setPostAttributesMsg(JsonConverter.convertToAttributesProto(data)); | |
52 | - } | |
47 | + builder.setPostAttributesMsg(JsonConverter.convertToAttributesProto(data.getAsJsonObject("kv"))); | |
48 | + builder.setPostAttributeScope(data.getAsJsonPrimitive("scope").getAsString()); | |
53 | 49 | } catch (Exception e) { |
54 | 50 | log.warn("Can't convert to attributes proto, entityData [{}]", entityData, e); |
55 | 51 | } | ... | ... |
... | ... | @@ -46,7 +46,9 @@ import org.thingsboard.server.common.msg.TbMsg; |
46 | 46 | import org.thingsboard.server.common.msg.session.SessionMsgType; |
47 | 47 | |
48 | 48 | import javax.annotation.Nullable; |
49 | +import java.util.HashMap; | |
49 | 50 | import java.util.List; |
51 | +import java.util.Map; | |
50 | 52 | import java.util.UUID; |
51 | 53 | |
52 | 54 | import static org.thingsboard.rule.engine.api.TbRelationTypes.SUCCESS; |
... | ... | @@ -137,7 +139,17 @@ public class TbMsgPushToEdgeNode implements TbNode { |
137 | 139 | if (edgeEventTypeByEntityType == null) { |
138 | 140 | return null; |
139 | 141 | } |
140 | - return buildEdgeEvent(ctx.getTenantId(), getActionTypeByMsgType(msg.getType()), msg.getOriginator().getId(), edgeEventTypeByEntityType, json.readTree(msg.getData())); | |
142 | + JsonNode entityBody = null; | |
143 | + JsonNode data = json.readTree(msg.getData()); | |
144 | + if (SessionMsgType.POST_ATTRIBUTES_REQUEST.name().equals(msg.getType())) { | |
145 | + Map<String, Object> entityData = new HashMap<>(); | |
146 | + entityData.put("kv", data); | |
147 | + entityData.put("scope", msg.getMetaData().getData().get("scope")); | |
148 | + entityBody = json.valueToTree(entityData); | |
149 | + } else { | |
150 | + entityBody = data; | |
151 | + } | |
152 | + return buildEdgeEvent(ctx.getTenantId(), getActionTypeByMsgType(msg.getType()), msg.getOriginator().getId(), edgeEventTypeByEntityType, entityBody); | |
141 | 153 | } |
142 | 154 | } |
143 | 155 | ... | ... |
... | ... | @@ -64,6 +64,7 @@ public class TbMsgAttributesNode implements TbNode { |
64 | 64 | } |
65 | 65 | String src = msg.getData(); |
66 | 66 | Set<AttributeKvEntry> attributes = JsonConverter.convertToAttributes(new JsonParser().parse(src)); |
67 | + msg.getMetaData().putValue("scope", config.getScope()); | |
67 | 68 | ctx.getTelemetryService().saveAndNotify(ctx.getTenantId(), msg.getOriginator(), config.getScope(), new ArrayList<>(attributes), new TelemetryNodeCallback(ctx, msg)); |
68 | 69 | } |
69 | 70 | ... | ... |