Thingsboard gateway 3.4 接入TCP协议单设备【改多设备】

客户端模拟器下载

http://free.cmsoft.cn/download/cmsoft/assistant/netassist5.0.3.zip

配置Thingsboard gateway

修改thingsboard.json

打开socket协议

"connectors": [
    {
        "name": "Socket Connector",
        "type": "socket",
        "configuration": "socket.json"
    }
  ]

修改socket.json

配置连接地址、端口以及客户端地址、参数等信息

{
  "name": "TCP Connector Example",
  "type": "TCP",
  "address": "192.168.0.133",
  "port": 50000,
  "bufferSize": 1024,
  "devices": [
    {
      "address": "192.168.0.74:59736",
      "deviceName": "TCP Device Example",
      "deviceType": "default",
      "encoding": "utf-8",
      "telemetry": [
        {
          "key": "temp",
          "byteFrom": 0,
          "byteTo": 1
        },
        {
          "key": "hum",
          "byteFrom": 1,
          "byteTo": 2
        }
      ],
      "attributes": [
        {
          "key": "name",
          "byteFrom": 2,
          "byteTo": 4
        },
        {
          "key": "num",
          "byteFrom": 4,
          "byteTo": 5
        }
      ],
      "attributeRequests": [
        {
          "type": "shared",
          "requestExpression": "${[0:3]==atr}",
          "attributeNameExpression": "[3:]"
        }
      ],
      "attributeUpdates": [
        {
          "encoding": "utf-16",
          "attributeOnThingsBoard": "sharedName"
        }
      ],
      "serverSideRpc": [
        {
          "methodRPC": "rpcMethod1",
          "withResponse": true,
          "methodProcessing": "write",
          "encoding": "utf-8"
        }
      ]
    }
  ]
}

服务启动

在这里插入图片描述

模拟器发送报文

在这里插入图片描述

单设备接入限制

运行会发现消息被过滤,原因是代码中对客户端的连接地址与端口都进行了限制
在这里插入图片描述
因为客户端的端口是随机的,因此基本上比较难使用上,不知道是否是自己使用的问题,决定进行拓展一个

修改为多设备接入

通过对源码的分析,需要做的调整思路如下:

  • 新增一个连接类,网关可以通过配置找到并加载
  • 连接类中对客户端的连接不做限制
  • 设备需要通过属性动态设置设备名

新建连接类

  • 网关的配置加载类tb_gateway_service.py,新增"socket_extends": “SocketExtendsConnector”
DEFAULT_CONNECTORS = {
	...
    "socket_extends": "SocketExtendsConnector",
    ...
}

其中SocketExtendsConnector为具体的连接实现类

  • 复制原来的socket包,名称调整为socket_extends,类名与上面配置一致
    在这里插入图片描述

新增配置文件 socket_extends.json

{
  "name": "TCP Connector Example",
  "type": "TCP",
  "address": "192.168.0.133",
  "port": 50000,
  "bufferSize": 1024,
  "devices":
  {
    "deviceName": "${name}",
    "deviceType": "default",
    "encoding": "utf-8",
    "telemetry": [
      {
        "key": "temp",
        "byteFrom": 0,
        "byteTo": 4
      },
      {
        "key": "hum",
        "byteFrom": 4,
        "byteTo": 5
      }
    ],
    "attributes": [
      {
        "key": "name",
        "byteFrom": 5,
        "byteTo": 7
      },
      {
        "key": "num",
        "byteFrom": 7,
        "byteTo": 8
      }
    ],
    "attributeRequests": [
      {
        "type": "shared",
        "requestExpression": "${[0:3]==atr}",
        "attributeNameExpression": "[3:]"
      }
    ],
    "attributeUpdates": [
      {
        "encoding": "utf-16",
        "attributeOnThingsBoard": "sharedName"
      }
    ],
    "serverSideRpc": [
      {
        "methodRPC": "getCurrentTime",
        "withResponse": true,
        "methodProcessing": "write",
        "encoding": "utf-8"
      }
    ]
  }
}

其中,主要去除了devices的数组,以及address配置,将名称改为动态标识

连接配置修改

"connectors": [
    {
        "name": "Socket Connector",
        "type": "socket_extends",
        "configuration": "socket_extends.json"
    }
  ]

启动测试

  • 发送报文 31 30 2E 32 31 68 69 31
    在这里插入图片描述

  • 查看Thingsboard平台是否正常新增设备
    在这里插入图片描述
    在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
在Thingsboard3.4中使用Thingsboard Gateway上报数据需要进行以下步骤: 1. 安装Thingsboard Gateway,可以参考官方文档进行安装:https://thingsboard.io/docs/iot-gateway/install/ 2. 配置Thingsboard Gateway的桥接器(Bridges)模块。在配置文件中,找到“[Bridges]”部分,添加以下内容: ``` #TCP bridge example [[TCPEntityBridge]] type = "tcp" host = "127.0.0.1" port = 9000 #access token of the device in ThingsBoard token = "DEVICE_ACCESS_TOKEN" #type of the device in ThingsBoard device_type = "DEVICE_TYPE" #profile of the device in ThingsBoard device_profile = "DEVICE_PROFILE" #timeout in seconds, optional timeout = 10 ``` 其中,需要将“host”改为Thingsboard服务器的IP地址,将“port”改为Thingsboard服务器的端口号,将“token”改为设备的访问令牌(Access Token),将“device_type”改为设备类型(Device Type),将“device_profile”改为设备档案(Device Profile)。 3. 在设备端,使用TCP协议向Thingsboard Gateway发送数据。可以使用任何支持TCP协议的编程语言来实现,例如Python、Java等。 以下是使用Python的示例代码: ``` import socket #connect to Thingsboard Gateway gateway_host = "GATEWAY_IP_ADDRESS" gateway_port = 9000 gateway_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) gateway_socket.connect((gateway_host, gateway_port)) #send data to Thingsboard Gateway device_data = '{"temperature": 25.0, "humidity": 50.0}' gateway_socket.sendall(device_data.encode()) #close connection to Thingsboard Gateway gateway_socket.close() ``` 其中,需要将“GATEWAY_IP_ADDRESS”改为Thingsboard GatewayIP地址。 4. 在Thingsboard Web界面中,查看设备是否成功上报数据。打开“设备管理器”(Device Management)页面,点击设备的名称进入设备详情页面,切换到“最新数据”(Latest Telemetry)选项卡,可以看到设备上报的数据。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_三石_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值