在IoT网关物联网中发布多个数据

时间:2017-08-10 05:18:48

标签: cassandra thingsboard

我刚刚开始使用Thingsboard,我遇到了这个,https://thingsboard.io/docs/iot-gateway/getting-started/。我已经实现了它,但我遇到的问题是

1.我只能传输一个键值对。如何传输多个键值传感器数据?

2.如果还有其他方法可以访问Cassandra数据库,以便我可以将所有我的数据检索到Thingsboard。

请帮忙。感谢你。

2 个答案:

答案 0 :(得分:0)

例如,湿度,温度,气体。

在这种情况下,您使用一个访问令牌/单个mqtt会话并以单个json发送数据,如下所示

{"humidity":42.2, "temperature":23.3, "gas":45}

如果您有多个传感器连接到单个设备,请像这样发送

{"sensorA.humidity":42.2, "sensorB.temperature":23.3, "sensorC.gas":45}

可用主题是静态的,并在此处列出: https://thingsboard.io/docs/reference/mqtt-api/#telemetry-upload-api

答案 1 :(得分:0)

您要问的是两个截然不同的问题。

1)您可以通过正确映射网关传入消息来一次传输更多键/值对。我想您正在使用MQTT协议。在 /etc/tb-gateway/conf/mqtt-config.json 中指定了此协议的默认映射。此文件指定在发送到ThingsBoard的服务器实例之前,如何将来自代理的传入MQTT消息转换为ThingsBoard键值格式。 要映射传感器的多个读数,您可以执行以下操作:

{
  "brokers": [
    {
      "host": "localhost",
      "port": 1883,
      "ssl": false,
      "retryInterval": 5000,
      "credentials": {
        "type": "anonymous"
      },
      "mapping": [
        {
          "topicFilter": "WeatherSensors",
          "converter": {
            "type": "json",
            "filterExpression": "",
            "deviceNameJsonExpression": "${$.WeatherStationName}",
            "timeout": 120000,
            "timeseries": [
              {
                "type": "double",
                "key": "temperature",
                "value": "${$.temperature}"
              },
              {
                "type": "double",
                "key": "humidity",
                "value": "${$.humidity}"
              }
            ]
          }
        }
      ]
    }
  ]
}

这样,如果您向主题{"WeatherStationName":"test", "temperature":25, "humidity":40}发送类似WeatherSensors的消息,则将在ThingsBoard服务器中名为“ test”的设备中看到两个键值对。

2)访问内部ThingsBoard服务器中存储的数据的最佳方法是通过REST API,这样,无论采用何种技术,您都可以使用同一段代码查询任何ThingsBoard实例。用于数据库(Cassandra,PostgreSQL等)。您可以在此repo中找到Python示例。 另一种方法是对数据库使用特定的查询语言,例如PostgreSQL的SQL或Cassandra的CQL。