当ThingsBoard需要与第三方服务交互数据时就需要用到网关,这个在官方社区版安装镜像里是不包含的,需要单独安装。

第一步:准备工作

我使用的环境是win10+wsl2+docker desktop,安装前需要先安装好ThingsBoard,安装方法

在D盘根目录新建“gateway”目录(可以根据自己实际情况调整),然后在gateway下新建config、extensions、logs三个子目录。

第二步:在上一步创建的gateway目录下新建docker-compose.yml,内容如下:

version: '2.2'
services:
  my_tb_gateway:
    image: "thingsboard/tb-gateway"
    container_name: "tb-gateway"
    volumes:
      # 映射下面三个目录
      - /D/thinsboard/gateway/config:/thingsboard_gateway/config
      - /D/thinsboard/gateway/extensions:/thingsboard_gateway/extensions
      - /D/thinsboard/gateway/logs:/thingsboard_gateway/logs

第三步:在gateway目录下依次运行以下命令,启动网关,启动后会报错,连接超时,这是正常的,因为我们还没有配置。

docker-compose pull
docker-compose up

第四步:配置网关

1、获取thingsboard服务器的ip和令牌

由于我的thingsboard也是运行在本机的docker中,所以通过以下命令可以得到ip,这里要注意网关的容器和这个容器如果不在一个网络下,就不能用这个ip了,文章末尾有解决办法

docker inspect 运行thingsboard容器的id

docker thingsbo docker thingsboard 网关 java_docker thingsbo

使用租户管理员登陆thingsboard,

打开设备,添加设备,按下图填写,然后点击“添加”。

docker thingsbo docker thingsboard 网关 java_docker thingsbo_02

打开添加好的“网关”设备,点击复制令牌,将令牌粘贴到安全的地方。在接下来的步骤中,我们将其用于网关配置。

2、编辑网关配置文件D:\thinsboard\gateway\config\tb_gateway.yaml(你的目录可能跟我的不一样),修改下面两处

docker thingsbo docker thingsboard 网关 java_docker_03

3、重启tb-gateway镜像,看到下面的提示代表连接成功

docker thingsbo docker thingsboard 网关 java_docker thingsbo_04

可能出现的问题:这里如果出现连接超时,有可能网关容器和thingsboard容器不在一个网络内,默认docker容器会创建自己的网络,如果在启动时没有指定网络,那么两个容器之间是没法通过ip进行通信的。有两种解决办法:

1、可以创建一个桥接网络,然后将两个容器都连接到这个桥接网络。

2、将需要通信的端口映射到主机,通过主机ip通信