【问题标题】:ThingsBoard IoT Gateway - Timestamp mapping timeseries in release 1.4.0ThingsBoard IoT Gateway - 1.4.0 版中的时间戳映射时间序列
【发布时间】:2018-03-16 09:44:26
【问题描述】:

我刚刚将我的 ThingsBoard 物联网网关升级到 1.4.0 版,我从存储库中看到,现在可以将已发布的遥测数据与客户端时间戳进行映射。据我了解,此功能之前只能通过直接发布到 ThingsBoard 嵌入式 MQTT 代理来实现,而不是通过网关。 从存储库中我发现以前的映射类(rep. branch 1.2)是following

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

虽然新版本(rep. branch 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 代码的代码 sn-p,它显示了我的 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 物联网网关映射文件 (mqtt-config.json) 中的一个 sn-p,这里配置了所有想要的映射:

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

我在此过程中是否犯了一些错误,或者仍然无法将数据与客户端时间戳进行映射?

【问题讨论】:

    标签: python json mqtt iot thingsboard


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-27
      • 2012-01-21
      • 2011-10-01
      • 1970-01-01
      相关资源
      最近更新 更多