在 IoT 网关 Thingsboard 中发布多个数据
Posting multiple data in IoT gateway Thingsboard
我刚刚开始使用 Thingsboard,我遇到了这个,https://thingsboard.io/docs/iot-gateway/getting-started/。我已经实施了,但我面临的问题是,
1.I只能传输一对Key-value。如何传输多个键值传感器数据?
2.Also 如果有任何其他方法可以访问 Cassandra 数据库,以便我可以将所有我的数据检索到 Thingsboard。
请帮忙。谢谢。
例如,湿度、温度、气体。
在这种情况下,您使用一次访问 token/single 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) 通过正确映射网关传入消息,您可以一次传输更多 key-value 对。我想您正在使用 MQTT 协议。此协议的默认映射在 /etc/tb-gateway/conf/mqtt-config.json 中指定。此文件指定如何在发送到 ThingsBoard 的服务器实例之前将来自代理的传入 MQTT 消息转换为 ThingsBoard key-value 格式。
要映射来自传感器的多个读数,您可以执行以下操作:
{
"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}"
}
]
}
}
]
}
]
}
这样,如果您向主题 WeatherSensors
发送类似 {"WeatherStationName":"test", "temperature":25, "humidity":40}
的消息,您将在名为 [=28= 的设备中的 ThingsBoard 服务器中看到两个 key-value 对].
2) 访问存储在内部 ThingsBoard 服务器 中的数据的最佳方式是通过 REST API, so that you can query any ThingsBoard instance with the same piece of code regardless of the technology used for the database (Cassandra, PostgreSQL, etc.). You can find a Python example in this repo。
另一种方法是为数据库使用特定的查询语言,例如 SQL 用于 PostgreSQL 或 CQL 用于 Cassandra。
我刚刚开始使用 Thingsboard,我遇到了这个,https://thingsboard.io/docs/iot-gateway/getting-started/。我已经实施了,但我面临的问题是,
1.I只能传输一对Key-value。如何传输多个键值传感器数据?
2.Also 如果有任何其他方法可以访问 Cassandra 数据库,以便我可以将所有我的数据检索到 Thingsboard。
请帮忙。谢谢。
例如,湿度、温度、气体。
在这种情况下,您使用一次访问 token/single 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) 通过正确映射网关传入消息,您可以一次传输更多 key-value 对。我想您正在使用 MQTT 协议。此协议的默认映射在 /etc/tb-gateway/conf/mqtt-config.json 中指定。此文件指定如何在发送到 ThingsBoard 的服务器实例之前将来自代理的传入 MQTT 消息转换为 ThingsBoard key-value 格式。 要映射来自传感器的多个读数,您可以执行以下操作:
{
"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}"
}
]
}
}
]
}
]
}
这样,如果您向主题 WeatherSensors
发送类似 {"WeatherStationName":"test", "temperature":25, "humidity":40}
的消息,您将在名为 [=28= 的设备中的 ThingsBoard 服务器中看到两个 key-value 对].
2) 访问存储在内部 ThingsBoard 服务器 中的数据的最佳方式是通过 REST API, so that you can query any ThingsBoard instance with the same piece of code regardless of the technology used for the database (Cassandra, PostgreSQL, etc.). You can find a Python example in this repo。 另一种方法是为数据库使用特定的查询语言,例如 SQL 用于 PostgreSQL 或 CQL 用于 Cassandra。