超详细,手把手带你源码启动 Thingsboard-Gateway + MQTT 接入设备

超详细,手把手带你源码启动 Thingsboard-Gateway + MQTT 接入设备

前置条件

  • thingsboard,我这里选择的是本地源码启动
  • postgresql,这里采用的是个人服务器部署的公共服务
  • EMQX,这里同样采用服务器部署的公共服务
  • MQTTX 客户端
  • Mysql【可选】,主要作用为 mqtt broker 客户端认证使用
  • thingsboard 控制台配置网关设备
    • 设备—> 添加设备—>设为网关
    • 复制对应访问令牌 accessToken ,下文配置需要

下载源码

git clone https://github.com/thingsboard/thingsboard-gateway.git

这里采用的是 release 最新版:3.5.1

相关配置项修改

  • config 包下 tb_gateway.json 配置项修改
    在这里插入图片描述

  • 修改内容

    在这里插入图片描述

    • thingsboard 服务地址,这里由于是本地源码启动,所以 host 为 localhost,port 为 默认端口 1883【需注意】

    • accessToken 需要在thingsboard 控制台进行配置

    • connectors 添加 mqtt 连接,也可根据其他协议进行添加

        "connectors": [{
            "type": "mqtt",
            "name": "MQTT Broker Connector",
            "configuration": "mqtt.json"
          }
          ]
      
  • config 包下 mqtt.json 配置项修改

    在这里插入图片描述

  • 修改内容

    • host
    • port,这里如果是本地启动,则需注意与 thingsboard 端口配置冲突
    • username 【可选】
    • password【可选】

启动

  • 通过 tb_gateway.py 启动

启动完成后,tb 控制台会显示对应设备

流程测试

  • 通过 MQTTX 客户端模拟设备发送数据到 broker,主题与配置文件中某一个对应主题一致即可
    在这里插入图片描述

  • 这里可以看到有两个客户端,一个是 mqttx,另一个就是我们的网关

在这里插入图片描述

  • 通过 tb 控制台可以看到我们的设备显示,然后可以通过属性及最新遥测数据进行处理,属性和配置文件中对应字段一致即可,可自定义

    在这里插入图片描述

总结

  • 实际场景中,可能应用更多的是硬网关通过各种协议收集设备数据,并进行数据格式和协议转换发送到其他平台
  • 可以在硬网关上使用这个软网关
### ThingsBoard GatewayMQTT集成配置指南 #### 配置文件概述 为了实现ThingsBoard GatewayMQTT协议之间的无缝连接,需编辑`tb_gateway.yaml`配置文件。此文件位于安装目录下的`config`文件夹内。 ```yaml mqtt: host: "broker.hivemq.com" port: 1883 qos: 1 client_id: "thingsboard-gateway" username: "" password: "" keepalive: 60 clean_session: true ``` 上述代码展示了如何设置基本的MQTT客户端参数[^3]。 #### 设备连接属性设定 针对每一个通过网关接入平台的设备而言,在同一份YAML文档里还需指定其对应的MQTT主题以及消息格式: ```yaml devices: - name: "Temperature Sensor" telemetry_topic: "v1/devices/me/telemetry" attributes_topic: "v1/devices/me/attributes" commands_topics: - topic: "v1/devices/me/rpc/request/+" method: "RPC_METHOD_NAME" ``` 这里定义了一个名为“Temperature Sensor”的虚拟传感器,并指定了上传遥测数据的主题路径和接收命令请求的方式。 #### 自定义转换器应用实例 当接收到的消息体不是JSON结构化对象而是二进制流或其他特殊编码形式的数据包时,则可通过编写Python脚本来解析这些原始字节数组并将其转化为标准API调用所需的键值对集合。下面给出了一段简单的例子来说明这一过程: ```python def BYTE_TO_JSON(bytes_data): json_result = {} # 假设前两个字节代表温度读数(摄氏度),后面四个字节表示湿度百分比 temp_celsius = int.from_bytes(bytes_data[:2], byteorder='big', signed=False)/10.0 humidity_percent = struct.unpack('>f', bytes_data[-4:])[0] json_result["temperature"] = round(temp_celsius, 1) json_result["humidity"] = round(humidity_percent, 2) return json.dumps(json_result) ``` 该函数接受一个字节数组作为输入参数,经过处理后返回包含环境监测指标在内的合法JSON字符串。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值