Search in sources :

Example 16 with TbMsg

use of org.thingsboard.server.common.msg.TbMsg in project thingsboard by thingsboard.

the class TbNodeUtilsTest method testSimpleReplacement.

@Test
public void testSimpleReplacement() {
    String pattern = "ABC ${metadata_key} $[data_key]";
    TbMsgMetaData md = new TbMsgMetaData();
    md.putValue("metadata_key", "metadata_value");
    ObjectNode node = JacksonUtil.newObjectNode();
    node.put("data_key", "data_value");
    TbMsg msg = TbMsg.newMsg("CUSTOM", TenantId.SYS_TENANT_ID, md, JacksonUtil.toString(node));
    String result = TbNodeUtils.processPattern(pattern, msg);
    Assert.assertEquals("ABC metadata_value data_value", result);
}
Also used : ObjectNode(com.fasterxml.jackson.databind.node.ObjectNode) TbMsgMetaData(org.thingsboard.server.common.msg.TbMsgMetaData) TbMsg(org.thingsboard.server.common.msg.TbMsg) Test(org.junit.Test)

Example 17 with TbMsg

use of org.thingsboard.server.common.msg.TbMsg in project thingsboard by thingsboard.

the class TbNodeUtilsTest method testComplexObjectReplacement.

@Test
public void testComplexObjectReplacement() {
    String pattern = "ABC ${key} $[key1.key2.key3]";
    TbMsgMetaData md = new TbMsgMetaData();
    md.putValue("key", "metadata_value");
    ObjectNode key2Node = JacksonUtil.newObjectNode();
    key2Node.put("key3", "value3");
    ObjectNode key1Node = JacksonUtil.newObjectNode();
    key1Node.set("key2", key2Node);
    ObjectNode node = JacksonUtil.newObjectNode();
    node.set("key1", key1Node);
    TbMsg msg = TbMsg.newMsg("CUSTOM", TenantId.SYS_TENANT_ID, md, JacksonUtil.toString(node));
    String result = TbNodeUtils.processPattern(pattern, msg);
    Assert.assertEquals("ABC metadata_value value3", result);
}
Also used : ObjectNode(com.fasterxml.jackson.databind.node.ObjectNode) TbMsgMetaData(org.thingsboard.server.common.msg.TbMsgMetaData) TbMsg(org.thingsboard.server.common.msg.TbMsg) Test(org.junit.Test)

Example 18 with TbMsg

use of org.thingsboard.server.common.msg.TbMsg in project thingsboard by thingsboard.

the class TbNodeUtilsTest method testNoReplacement.

@Test
public void testNoReplacement() {
    String pattern = "ABC ${metadata_key} $[data_key]";
    TbMsgMetaData md = new TbMsgMetaData();
    md.putValue("key", "metadata_value");
    ObjectNode node = JacksonUtil.newObjectNode();
    node.put("key", "data_value");
    TbMsg msg = TbMsg.newMsg("CUSTOM", TenantId.SYS_TENANT_ID, md, JacksonUtil.toString(node));
    String result = TbNodeUtils.processPattern(pattern, msg);
    Assert.assertEquals(pattern, result);
}
Also used : ObjectNode(com.fasterxml.jackson.databind.node.ObjectNode) TbMsgMetaData(org.thingsboard.server.common.msg.TbMsgMetaData) TbMsg(org.thingsboard.server.common.msg.TbMsg) Test(org.junit.Test)

Example 19 with TbMsg

use of org.thingsboard.server.common.msg.TbMsg in project thingsboard by thingsboard.

the class TbPubSubNode method publishMessage.

private void publishMessage(TbContext ctx, TbMsg msg) {
    ByteString data = ByteString.copyFromUtf8(msg.getData());
    PubsubMessage.Builder pubsubMessageBuilder = PubsubMessage.newBuilder();
    pubsubMessageBuilder.setData(data);
    this.config.getMessageAttributes().forEach((k, v) -> {
        String name = TbNodeUtils.processPattern(k, msg);
        String val = TbNodeUtils.processPattern(v, msg);
        pubsubMessageBuilder.putAttributes(name, val);
    });
    ApiFuture<String> messageIdFuture = this.pubSubClient.publish(pubsubMessageBuilder.build());
    ApiFutures.addCallback(messageIdFuture, new ApiFutureCallback<String>() {

        public void onSuccess(String messageId) {
            TbMsg next = processPublishResult(ctx, msg, messageId);
            ctx.tellSuccess(next);
        }

        public void onFailure(Throwable t) {
            TbMsg next = processException(ctx, msg, t);
            ctx.tellFailure(next, t);
        }
    }, ctx.getExternalCallExecutor());
}
Also used : ByteString(com.google.protobuf.ByteString) ByteString(com.google.protobuf.ByteString) PubsubMessage(com.google.pubsub.v1.PubsubMessage) TbMsg(org.thingsboard.server.common.msg.TbMsg)

Example 20 with TbMsg

use of org.thingsboard.server.common.msg.TbMsg in project thingsboard by thingsboard.

the class TbMsgCountNode method onMsg.

@Override
public void onMsg(TbContext ctx, TbMsg msg) {
    if (msg.getType().equals(TB_MSG_COUNT_NODE_MSG) && msg.getId().equals(nextTickId)) {
        JsonObject telemetryJson = new JsonObject();
        telemetryJson.addProperty(this.telemetryPrefix + "_" + ctx.getServiceId(), messagesProcessed.longValue());
        messagesProcessed = new AtomicLong(0);
        TbMsgMetaData metaData = new TbMsgMetaData();
        metaData.putValue("delta", Long.toString(System.currentTimeMillis() - lastScheduledTs + delay));
        TbMsg tbMsg = TbMsg.newMsg(msg.getQueueName(), SessionMsgType.POST_TELEMETRY_REQUEST.name(), ctx.getTenantId(), msg.getCustomerId(), metaData, gson.toJson(telemetryJson));
        ctx.enqueueForTellNext(tbMsg, SUCCESS);
        scheduleTickMsg(ctx, tbMsg);
    } else {
        messagesProcessed.incrementAndGet();
        ctx.ack(msg);
    }
}
Also used : AtomicLong(java.util.concurrent.atomic.AtomicLong) JsonObject(com.google.gson.JsonObject) TbMsgMetaData(org.thingsboard.server.common.msg.TbMsgMetaData) TbMsg(org.thingsboard.server.common.msg.TbMsg)

Aggregations

TbMsg (org.thingsboard.server.common.msg.TbMsg)88 TbMsgMetaData (org.thingsboard.server.common.msg.TbMsgMetaData)57 Test (org.junit.Test)46 ObjectNode (com.fasterxml.jackson.databind.node.ObjectNode)29 List (java.util.List)19 DeviceProfile (org.thingsboard.server.common.data.DeviceProfile)18 RuleChainId (org.thingsboard.server.common.data.id.RuleChainId)17 DeviceProfileData (org.thingsboard.server.common.data.device.profile.DeviceProfileData)16 EntityId (org.thingsboard.server.common.data.id.EntityId)16 AttributeKvEntry (org.thingsboard.server.common.data.kv.AttributeKvEntry)16 Device (org.thingsboard.server.common.data.Device)15 DeviceProfileAlarm (org.thingsboard.server.common.data.device.profile.DeviceProfileAlarm)15 JsonNode (com.fasterxml.jackson.databind.JsonNode)14 AlarmCondition (org.thingsboard.server.common.data.device.profile.AlarmCondition)14 AlarmConditionFilter (org.thingsboard.server.common.data.device.profile.AlarmConditionFilter)14 AlarmConditionFilterKey (org.thingsboard.server.common.data.device.profile.AlarmConditionFilterKey)14 AlarmRule (org.thingsboard.server.common.data.device.profile.AlarmRule)14 NumericFilterPredicate (org.thingsboard.server.common.data.query.NumericFilterPredicate)14 RuleNodeId (org.thingsboard.server.common.data.id.RuleNodeId)13 DynamicValue (org.thingsboard.server.common.data.query.DynamicValue)13