前言:

为什么需要ThingsBoard Edge?
在传统的物联网架构中,传感器数据通常直接发送到云端进行处理。然而,这种模式存在一些问题:

  1. 网络依赖:需要稳定的网络连接,如果网络中断,数据可能丢失。
  2. 延迟:所有数据都需要传输到云端,处理后再返回,延迟较高。
  3. 数据安全:原始数据全部上传到云端,可能存在隐私泄露风险。
  4. 成本:传输大量数据会产生较高的网络带宽和云存储成本。

ThingsBoard Edge是ThingsBoard为边缘计算推出的一个版本,它可以在本地网络中运行,管理设备、收集数据、执行规则链,并与ThingsBoard Server同步。

  1. 在边缘端进行数据过滤和处理,只上传重要数据。
  2. 在边缘端进行实时监控和控制,即使网络断开,边缘端也能独立运行。
  3. 将边缘端的设备、仪表板、规则链等与云端同步,实现集中管理

边缘计算的出现解决了这些问题。通过将计算能力下放到边缘设备(如树莓派),我们可以在数据产生的地方进行实时处理,只将关键数据上传到云端。这样不仅降低了对网络的依赖,减少了延迟,还提高了数据的安全性和降低了成本。本指南介绍了如何在树莓派4B上部署ThingsBoard Edge。

[图片来源于ThingsBoard官网]

链接:

[官方文档链接(树莓派部署)]https://thingsboard.io/docs/user-guide/install/edge/rpi/

设备清单:

硬件:树莓派4B4G

远程连接:Xshell 8

官网链接:https://www.xshell.com/zh/xshell/

跨平台文件传输:Xftp 8

官网链接:https://www.xshell.com/zh/xftp/

以上的软件包以及tb-edge-4.3.0.1文件我都会放在阿里云盘,可以自取

阿里云盘链接:https://www.alipan.com/s/J4zkuWCPKMv
提取码: n88p

前提条件:

[非常重要!!!]

如果没有没有部署本地的ThingsBoard 服务则需要去安装ThingsBoard,否则edge无法运行。

(似乎可以使用ThingsBoard Cloud去代替ThingsBoard Server,我没有去尝试,理论将第五步的位置替换为ThingsBoard Cloud的信息即可)

官方ThingsBoard部署文档(ubuntu):https://thingsboard.io/docs/user-guide/install/ubuntu/

也可以参考我的另一篇文章部署Thingboard:

从零搭建物联网“云+边“平台(一):Ubuntu 部署ThingsBoard服务端避坑指南-CSDN博客

另外,确认ThingsBoard Edge和ThingsBoard Server版本是否兼容。

(官方的云服务会一直更新,如果edge端长时间不使用,可能会导致个人部署的edge版本与官方云版本不兼容,导致无法连接,如果只是尝试,可以用官方云代替,长期使用建议本地部署)

兼容性规则:
ThingsBoard Edge 版本 X.Y.Z 可兼容 ThingsBoard Server 版本 X.Y.Z 及接下来的两个版本。
示例:ThingsBoard Edge 3.8.0 可兼容 ThingsBoard Server 3.8.0 及两个后续版本(3.9.0 和 3.9.1)。点击这里查看ThingsBoard服务器发布说明。
ThingsBoard Edge X.Y.Z 版本不支持较旧的 ThingsBoard server版本。
示例:ThingsBoard Edge 3.9.1 不支持 ThingsBoard Server 3.8.0 及更早版本。ThingsBoard server必须先升级到最新版本。

第一步:部署新的边缘实例(server端)

进入部署好的server端,点击左侧边缘管理,边缘实例,创建新的边缘

输入新建边缘的名字

点击新建的边缘实例,就可以看到相关的信息了

第二步:安装 Java 17(树莓派端)

ThingsBoard服务运行在Java 17上。

更新软件列表并安装OpenJDK17

​sudo apt update && sudo apt install openjdk-17-jdk-headless​

将系统配置为默认使用OpenJDK17

sudo update-alternatives --config java​

检查已安装的Java版本

​java -version​

第三步:ThingsBoard 边缘服务安装

下载安装包。

wget https://github.com/thingsboard/thingsboard-edge/releases/download/v4.3.0.1/tb-edge-4.3.0.1.deb​

我这里因为网络原因,使用Windows端下载后使用Xftp发送到Ubuntu

可以访问链接1查找下载其他版本或通过链接2直接下载4.3.0.1版本。

链接1:https://github.com/thingsboard/thingsboard-edge/releases

链接2:https://github.com/thingsboard/thingsboard-edge/releases/download/v4.3.0.1/tb-edge-4.3.0.1.deb

安装ThingsBoard Edge

​sudo dpkg -i tb-edge-4.3.0.1.deb​

第四步:配置PostgreSQL数据库

ThingsBoard Edge 使用 PostgreSQL 数据库作为本地存储。

导入PostgreSQL官方签名密钥

​wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -

添加PostgreSQL软件源

​echo "deb https://apt.postgresql.org/pub/repos/apt/ $(lsb_release -cs)-pgdg main" | sudo tee /etc/apt/sources.list.d/pgdg.list​

更新软件源

​sudo apt update​

安装PostgreSQL

​sudo apt -y install postgresql​

启动PostgreSQL服务

​sudo service postgresql start​

设置PostgreSQL管理员密码

​sudo -u postgres psql -c "\password"​

创建ThingsBoard Edge专用数据库

​echo "CREATE DATABASE tb_edge;" | psql -U postgres -d postgres -h 127.0.0.1 -W​

这里会要求你输入密码,输入刚才设置的密码即可

ThingsBoard 配置

编辑 Things Board Edge 配置文件:

将 YOUR_POSTGRES_PASSWORD 替换为刚才设置的密码。

sudo bash -c 'echo "export DATABASE_TS_TYPE=sql
export SPRING_DATASOURCE_URL=jdbc:postgresql://localhost:5432/thingsboard
export SPRING_DATASOURCE_USERNAME=postgres
export SPRING_DATASOURCE_PASSWORD=PUT_YOUR_POSTGRESQL_PASSWORD_HERE
export SQL_POSTGRES_TS_KV_PARTITIONING=MONTHS" >> /etc/tb-edge/conf/tb-edge.conf'

第五步:[关键!!!]配置ThingsBoard Edge

这一步官方的文档里面没有,我一直卡在最后一步登录不了,连不到server端进去,最后在server服务器的连接说明里找到,非常重要!!!

这一步指向我们连接的位置,也就是ThingsBoard端

这里大家需要将边缘键,边缘密钥,ip等替换为自己的,如果觉得麻烦可以直接去server端的边缘实例中安装与连接说明中去复制,他会直接替换为你当前的。

要配置 ThingsBoard Edge,您可以使用以下命令自动更新配置文件中的具体值:

sudo sh -c 'cat <<EOL >> /etc/tb-edge/conf/tb-edge.conf
export CLOUD_ROUTING_KEY=e3d3fa7f-8399-fa93-e3fb-26f97482bce9
export CLOUD_ROUTING_SECRET=0klbnjdahoc1so2x5y0i
export CLOUD_RPC_HOST=192.168.2.30
export CLOUD_RPC_PORT=7070
export CLOUD_RPC_SSL_ENABLED=false
EOL'

[可选]配置PostgreSQL Connection

<PUT_YOUR_POSTGRESQL_PASSWORD_HERE>位置替换为自己的数据库密码

sudo sh -c 'cat <<EOL >> /etc/tb-edge/conf/tb-edge.conf
export SPRING_DATASOURCE_URL=jdbc:postgresql://localhost:5432/tb_edge
export SPRING_DATASOURCE_USERNAME=postgres
export SPRING_DATASOURCE_PASSWORD=<PUT_YOUR_POSTGRESQL_PASSWORD_HERE>
EOL'

[可选]更新绑定端口

如果 ThingsBoard Edge 在和 ThingsBoard CE部署在同一台机器上,你需要更新端口配置以避免两者之间的冲突。

请执行以下命令更新 ThingsBoard Edge 配置文件(/etc/tb-edge/conf/tb-edge.conf):

sudo sh -c 'cat <<EOL >> /etc/tb-edge/conf/tb-edge.conf
export HTTP_BIND_PORT=18080
export MQTT_BIND_PORT=11883
export COAP_BIND_PORT=15683
export LWM2M_ENABLED=false
export SNMP_ENABLED=false
EOL'

第六步:排队服务

默认情况下,ThingsBoard Edge 使用内置的队列实现,无需额外配置。

它适用于开发或概念验证(PoC)环境,但由于扩展性有限,不推荐用于生产环境或任何类型的集群部署。

第七步:[可选]慢速机器的内存更新

XMS512M:将 Java 虚拟机(JVM)的初始堆大小设置为 512 兆字节。

Xmx1G:将JVM允许使用的最大堆大小设定为1 GB。

如果你没有运行其他内存密集型进程(比如Cassandra),应该设置为总内存的一半,否则设置为三分之一。

参考官方建议,这里大家按照自己实际开发板的内存情况去调整,我4g的板子,这里直接设置2g了。

echo 'export JAVA_OPTS="$JAVA_OPTS -Xms512M -Xmx2G"' | sudo tee -a /etc/tb-edge/conf/tb-edge.conf​

第八步:运行安装脚本并重启服务

执行安装脚本

​sudo /usr/share/tb-edge/bin/install/install.sh​

重启ThingsBoard边缘服务

sudo service tb-edge restart​

第九步:打开ThingsBoard Edge UI

使用以下链接打开网页界面,或者使用树莓派的ip地址替换localhost

​http://localhost:8080/​

需要同登录CE端的用户名和密码相同

租户管理员:tenant@thingsboard.org / tenant

至此,整个在Ubuntu部署ThingsBoard Edge安装部署与连接ThingsBoard Server全部完成了,如果有错误,也请各位指正。

更多推荐