docker - 网关 ThingsBoard 配置到 HiveMQ MQTT 代理
问题描述
我需要一些帮助才能在 ThingsBoard Gateway 与 MQTT 代理 HiveMQ Cloud 之间建立成功连接。我已经按照文档( https://thingsboard.io/docs/iot-gateway/install/docker-installation/)中的“使用 Docker 安装 ThingsBoard IoT 网关”部分成功配置并运行了网关。但是,ThingsBoard 无法识别 HiveMQ Cloud,这是我用来从设备发布 MQTT 消息的 MQTT 代理。我已按照以下( https://thingsboard.io/docs/iot-gateway/config/mqtt/ )将代理信息填充到 docker 容器中存在的 MQTT.json 文件中。有人在这种情况下有经验,请告诉我应该怎么做才能在这些平台之间建立正确的连接。谢谢!
我的 HiveMQ 云集群:
我的 MQTT.json 文件:
{
"broker": {
"name":"cde4d6ad15b0446b874d454412e61396",
"host":"cde4d6ad15b0446b874d454412e61396.s1.eu.hivemq.cloud",
"port":8883,
"clientId": "Hivemq_broker",
"security": {
"type": "basic",
"username": "my_username",
"password": "my_password"
}
},
"mapping": [
{
"topicFilter": "/sensor/data",
"converter": {
"type": "json",
"deviceNameJsonExpression": "${serialNumber}",
"deviceTypeJsonExpression": "${sensorType}",
"timeout": 60000,
"attributes": [
{
"type": "string",
"key": "model",
"value": "${sensorModel}"
},
{
"type": "string",
"key": "${sensorModel}",
"value": "on"
}
],
"timeseries": [
{
"type": "double",
"key": "temperature",
"value": "${temp}"
},
{
"type": "double",
"key": "humidity",
"value": "${hum}"
}
]
}
},
{
"topicFilter": "/sensor/+/data",
"converter": {
"type": "json",
"deviceNameTopicExpression": "(?<=sensor\/)(.*?)(?=\/data)",
"deviceTypeTopicExpression": "Thermometer",
"timeout": 60000,
"attributes": [
{
"type": "string",
"key": "model",
"value": "${sensorModel}"
}
],
"timeseries": [
{
"type": "double",
"key": "temperature",
"value": "${temp}"
},
{
"type": "double",
"key": "humidity",
"value": "${hum}"
}
]
}
},
{
"topicFilter": "/custom/sensors/+",
"converter": {
"type": "custom",
"extension": "CustomMqttUplinkConverter",
"extension-config": {
"temperatureBytes" : 2,
"humidityBytes" : 2,
"batteryLevelBytes" : 1
}
}
}
],
"connectRequests": [
{
"topicFilter": "sensor/connect",
"deviceNameJsonExpression": "${SerialNumber}"
},
{
"topicFilter": "sensor/+/connect",
"deviceNameTopicExpression": "(?<=sensor\/)(.*?)(?=\/connect)"
}
],
"disconnectRequests": [
{
"topicFilter": "sensor/disconnect",
"deviceNameJsonExpression": "${SerialNumber}"
},
{
"topicFilter": "sensor/+/disconnect",
"deviceNameTopicExpression": "(?<=sensor\/)(.*?)(?=\/disconnect)"
}
],
"attributeUpdates": [
{
"deviceNameFilter": "SmartMeter.*",
"attributeFilter": "uploadFrequency",
"topicExpression": "sensor/${deviceName}/${attributeKey}",
"valueExpression": "{\"${attributeKey}\":\"${attributeValue}\"}"
}
],
"serverSideRpc": [
{
"deviceNameFilter": ".*",
"methodFilter": "echo",
"requestTopicExpression": "sensor/${deviceName}/request/${methodName}/${requestId}",
"responseTopicExpression": "sensor/${deviceName}/response/${methodName}/${requestId}",
"responseTimeout": 10000,
"valueExpression": "${params}"
},
{
"deviceNameFilter": ".*",
"methodFilter": "no-reply",
"requestTopicExpression": "sensor/${deviceName}/request/${methodName}/${requestId}",
"valueExpression": "${params}"
}
]
}
解决方案
推荐阅读
- node.js - 在为全局 const 变量赋值时使用 Async / await
- .net - 启动配置文件初始化程序:无法解析 launchSettings.json 文件
- python - 在目录中搜索最佳第二匹配产品
- boost - 在 Red Hat OS 上安装 boost 时出现“没有这样的文件或目录”错误
- flutter - Dart Flutter中将文档添加到Firestore后如何直接获取文档ID
- git - 并行多阶段项目的 Git 工作流
- c - 为什么没有打印输出?
- scala - Scala中的布尔到字节
- css - CSS Grid 包含 2 个固定的侧边栏。主要内容位置不正确
- ios - 使用选择器参数从 swift 到 objc 的 performSelector 不起作用