我刚刚开始使用 Thingsboard,我遇到了这个,https: //thingsboard.io/docs/iot-gateway/getting-started/ 。我已经实现了它,但我面临的问题是,
1.我只能传输一个键值对。如何传输多个键值传感器数据?
2.此外,如果有任何其他方式可以访问 Cassandra 数据库,以便我可以将所有我的数据检索到 Thingsboard。
请帮忙。感谢您。
我刚刚开始使用 Thingsboard,我遇到了这个,https: //thingsboard.io/docs/iot-gateway/getting-started/ 。我已经实现了它,但我面临的问题是,
1.我只能传输一个键值对。如何传输多个键值传感器数据?
2.此外,如果有任何其他方式可以访问 Cassandra 数据库,以便我可以将所有我的数据检索到 Thingsboard。
请帮忙。感谢您。
你在问两个非常不同的事情。
1)通过正确映射网关传入消息,您可以一次传输更多键值对。我想您正在使用 MQTT 协议。此协议的默认映射在/etc/tb-gateway/conf/mqtt-config.json中指定。此文件指定如何将来自代理的传入 MQTT 消息转换为 ThingsBoard 键值格式,然后再发送到 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。
例如,湿度、温度、气体。
在这种情况下,您使用一个访问令牌/单个 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