从零搭建物联网“云+边“平台(二):树莓派 4B 部署 ThingsBoard Edge 边缘网关实战
前言:
为什么需要ThingsBoard Edge?
在传统的物联网架构中,传感器数据通常直接发送到云端进行处理。然而,这种模式存在一些问题:
- 网络依赖:需要稳定的网络连接,如果网络中断,数据可能丢失。
- 延迟:所有数据都需要传输到云端,处理后再返回,延迟较高。
- 数据安全:原始数据全部上传到云端,可能存在隐私泄露风险。
- 成本:传输大量数据会产生较高的网络带宽和云存储成本。
ThingsBoard Edge是ThingsBoard为边缘计算推出的一个版本,它可以在本地网络中运行,管理设备、收集数据、执行规则链,并与ThingsBoard Server同步。
- 在边缘端进行数据过滤和处理,只上传重要数据。
- 在边缘端进行实时监控和控制,即使网络断开,边缘端也能独立运行。
- 将边缘端的设备、仪表板、规则链等与云端同步,实现集中管理
边缘计算的出现解决了这些问题。通过将计算能力下放到边缘设备(如树莓派),我们可以在数据产生的地方进行实时处理,只将关键数据上传到云端。这样不仅降低了对网络的依赖,减少了延迟,还提高了数据的安全性和降低了成本。本指南介绍了如何在树莓派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全部完成了,如果有错误,也请各位指正。
更多推荐


所有评论(0)