首页 > 解决方案 > 网关 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}"
      }
    ]
  }

标签: dockermqttgatewaythingsboard

解决方案


推荐阅读