首页 文章

ThingsBoard IoT Gateway - 版本1.4.0中的时间戳映射时间序列

提问于
浏览
0

我刚刚将我的ThingsBoard IoT网关升级到版本1.4.0,我从存储库中看到,现在可以使用客户端时间戳映射已发布的遥测 . 据我所知,此功能之前只能直接发布到ThingsBoard嵌入式MQTT代理,而不能通过网关发布 . 从存储库中我发现前一个映射类(代表分支1.2)是following

public class KVMapping {
    private String key;
    private DataTypeMapping type;
    private String value;
}

虽然新版本(代表分支1.4)具有以下class

public class KVMapping {
    private String key;
    private DataTypeMapping type;
    private String value;
    private String ts;
    private String tsFormat;
}

根据我的理解,时间戳功能(和格式化样式)已添加到消息映射中 . 我的问题是我无法将我发布的消息中的时间戳映射到ThingsBoard . 平台仍然接收正确的 keyvalue ,但是将数据映射到服务器端时间戳 .

这是我用来将数据包发布到外部MQTT代理的python代码的代码片段,它显示了我的json数据包的结构:

timeStamp = "1488273476000"
data = {
    "about": "Devices",
    "properties": [
        {
            "about": "Device1",
            "iotStateObservation": [
                {
                    "phenomenonTime": timeStamp,
                    "value": "1"
                }
            ]
        },
        {
            "about": "Device2",
            "iotStateObservation": [
                {
                    "phenomenonTime": timeStamp,
                    "value": "174468"
                }
            ]
        },
        {
            "about": "Device3",
            "iotStateObservation": [
                {
                    "phenomenonTime": timeStamp,
                    "value": "12"
                }
            ]
        }
    ]
}

这是来自我的ThingsBoard IoT网关映射文件(mqtt-config.json)的片段,这里配置了所有想要的映射:

{
    "topicFilter": "sensors",
    "converter": {
        "type": "json",
        "filterExpression": "$.properties[*]",
        "deviceNameJsonExpression": "${$.about}",
        "timeseries": [
            {
                "type": "double",
                "ts": "${$.iotStateObservation[0].phenomenonTime}",
                "key": "${$.about}",
                "value": "${$.iotStateObservation[0].value}"
            }
        ]
    }
}

Is there some mistake I'm committing in this procedure, or simply it is still not possible to map the data with client side timestamp yet?

1 回答

  • 0

    好吧,所以在对thingboard网关代码进行更好的分析后,我发现由于某种原因,仍然无法使用MQTT映射时间序列的客户端时间戳 . 使用HTTP可能可以实现此功能,但未对此进行测试 . 因此,为了添加此功能,我分叉了存储库并稍微更改了MQTT映射例程以添加此功能 . 如果有人对此感兴趣,你可以在我的repo上找到修改后的代码 .

相关问题