前言
ThingsBoard 是目前 Github 上最流行的开源物联网平台,可以实现物联网项目的快速开发和使用。
本文介绍 thingsboard@3.7.0 项目的前后端的编译与启动。
源码下载
git clone https://github.com/thingsboard/thingsboard.git
后端环境准备
- jdk17 安装
- maven3.8 以上
- gradle7.3 以上
- postgresql 14
在 IDEA 里打开 clone 的 thingsboard 项目,配置文件 applixation.yml 中修改 datasource 配置。
datasource:
# Database driver for Spring JPA - org.postgresql.Driver
driverClassName: "${SPRING_DRIVER_CLASS_NAME:org.postgresql.Driver}"
# Database connection URL
url: "${SPRING_DATASOURCE_URL:jdbc:postgresql://localhost:5432/thingsboard}"
# Database user name
username: "${SPRING_DATASOURCE_USERNAME:postgres}"
# Database user password
password: "${SPRING_DATASOURCE_PASSWORD:postgres}"
源码编译
使用maven进行编译,依次点击clean、install。
[INFO] Thingsboard ........................................ SUCCESS [ 0.082 s]
[INFO] Netty MQTT Client .................................. SUCCESS [ 2.994 s]
[INFO] Thingsboard Server Commons ......................... SUCCESS [ 0.006 s]
[INFO] Thingsboard Server Common Data ..................... SUCCESS [ 6.982 s]
[INFO] Thingsboard Server Common Utils .................... SUCCESS [ 0.800 s]
[INFO] Thingsboard Server Common Messages ................. SUCCESS [ 1.901 s]
[INFO] Thingsboard Actor system ........................... SUCCESS [ 1.032 s]
[INFO] Thingsboard Server Stats ........................... SUCCESS [ 0.304 s]
[INFO] Thingsboard Server Common Cluster API .............. SUCCESS [ 8.560 s]
[INFO] Thingsboard Server Queue components ................ SUCCESS [ 15.263 s]
[INFO] Thingsboard Server Common Cache .................... SUCCESS [ 0.833 s]
[INFO] Thingsboard Server Commons ......................... SUCCESS [ 0.004 s]
[INFO] Thingsboard Server Common Transport components ..... SUCCESS [ 3.189 s]
[INFO] Thingsboard MQTT Transport Common .................. SUCCESS [ 1.599 s]
[INFO] Thingsboard HTTP Transport Common .................. SUCCESS [ 0.597 s]
[INFO] Thingsboard CoAP server ............................ SUCCESS [ 0.617 s]
[INFO] Thingsboard CoAP Transport Common .................. SUCCESS [ 1.308 s]
[INFO] Thingsboard LwM2M Transport Common ................. SUCCESS [ 2.418 s]
[INFO] Thingsboard SNMP Transport Common .................. SUCCESS [ 0.993 s]
[INFO] Thingsboard Server Common DAO API .................. SUCCESS [ 0.980 s]
[INFO] Thingsboard Server Remote Edge wrapper ............. SUCCESS [ 4.521 s]
[INFO] Thingsboard Extensions ............................. SUCCESS [ 0.004 s]
[INFO] Thingsboard Rule Engine API ........................ SUCCESS [ 1.105 s]
[INFO] Thingsboard Server DAO Layer ....................... SUCCESS [ 8.115 s]
[INFO] Thingsboard Rule Engine Components ................. SUCCESS [ 4.452 s]
[INFO] Thingsboard Server Transport Modules ............... SUCCESS [ 0.004 s]
[INFO] Thingsboard HTTP Transport Service ................. FAILURE [10:47 min]
[INFO] Thingsboard MQTT Transport Service ................. SKIPPED
[INFO] Thingsboard CoAP Transport Service ................. SKIPPED
[INFO] Thingsboard LwM2m Transport Service ................ SKIPPED
[INFO] Thingsboard SNMP Transport Service ................. SKIPPED
[INFO] ThingsBoard Server UI .............................. SKIPPED
[INFO] Thingsboard Server Tools ........................... SKIPPED
[INFO] Thingsboard Rest Client ............................ SKIPPED
[INFO] ThingsBoard Server Application ..................... SKIPPED
[INFO] ThingsBoard Microservices .......................... SKIPPED
[INFO] ThingsBoard Docker Images .......................... SKIPPED
[INFO] ThingsBoard JavaScript Executor Microservice ....... SKIPPED
[INFO] ThingsBoard Web UI Microservice .................... SKIPPED
[INFO] ThingsBoard Node Microservice ...................... SKIPPED
[INFO] ThingsBoard Transport Microservices ................ SKIPPED
[INFO] ThingsBoard MQTT Transport Microservice ............ SKIPPED
[INFO] ThingsBoard HTTP Transport Microservice ............ SKIPPED
[INFO] ThingsBoard COAP Transport Microservice ............ SKIPPED
[INFO] ThingsBoard LWM2M Transport Microservice ........... SKIPPED
[INFO] ThingsBoard SNMP Transport Microservice ............ SKIPPED
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.thingsboard:gradle-maven-plugin:1.0.11:invoke (default) on project http: org.gradle.tooling.BuildException: Could not execute build using connection to Gradle distribution 'https://services.gradle.org/distributions/gradle-7.1.1-bin.zip'. -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException
[ERROR]
[ERROR] After correcting the problems, you can resume the build with the command
如果出现上述错误,是由于网络问题,无法从配置的maven的setting文件中下载jar包或者pom文件。
解决办法:点击继续编译,多次尝试不行的话,可以手动去aliyun仓库下载对应的jar包和pom文件。
注意:编译过程中功能出现多次错误,只要 thingsboard@3.7.0对应的环境安装对应,剩下的错误一般情况都是网络问题,可继续编译,或者手动下载jar包放入对应的本地仓库。
中途下载失败可尝试清理本地仓库下载失败的jar包或者pom文件,因为下载失败到本地仓库后,再次编译下载jar包,就会读取本地对应的包下有无文件,需要及时清理其中的"lastUpdated,.repositories,.sha1-in-progress" 的文件
以下是清理本地仓库的处理文件
清理本地仓库.bat文件
@echo off
@ ECHO.
@ ECHO.
@ ECHO. 说 明
@ ECHO -----------------------------------------------------------------------
@ ECHO 本文件是专门用来解决maven下载所需jar包失败的情况下
@ ECHO 需要频繁删除本地仓库的问题的
@ ECHO 本程序会将本文件所在目录下的所有包含"lastUpdated,*.repositories,*.sha1-in-progress" 的文件全部删除
@ ECHO 请慎用
@ ECHO 用法:将本文件放入maven本地仓库下双击即可运行
@ ECHO -----------------------------------------------------------------------
@ ECHO.
pause
del /s *lastUpdated* *.repositories *.sha1-in-progress *lastUpdated
@ ECHO -----------------------------------------------------------------------
@ ECHO 成功删除本文件夹下所有包含"lastUpdated,*.repositories,*.sha1-in-progress" 的文件
@ ECHO -----------------------------------------------------------------------
@ ECHO.
pause
至此,后端编译成功后,先要执行 ThingsboardInstallApplication启动类,把数据库的初始数据写入进去,否则执行 ThingsboardServerApplication 启动类会报错。(数据库中要有对应的表,在thingsboard数据库下执行这几个sql文件)
-
把 dao包下的source下的 sql包 复制,放入如下图对应的包下。
-
启动 ThingsboardInstallApplication 类,启动成功后查看 PGSQL数据库中有无数据,查看第一个表有数据即可成功启动 ThingsboardServerApplication 启动类。
-
启动 ThingsboardServerApplication 类,出现下图所示,即启动成功。
-
启动成功后,浏览器访问 http://localhost:8080/
后端接口文档,浏览器访问 http://localhost:8080/swagger-ui/index.html
前端环境准备
- nodejs 20.11.1
- yarn 1.22.17
查看 thingsboard项目的 ui-ngx 包下的pom文件,其中里面指定了版本。
-
Node.js安装访问https://nodejs.org,下载指定版本,推荐选择一键安装的 node-v版本号-x64.msi文件进行安装。
-
安装完Node.js后,打开cmd窗口,全局安装指定版本的yarn命令:npm install -g yarn@1.22.17。
-
安装完成后,可以在cmd窗口输入 node -v 和 yarn -v 查看是否安装成功。
前端安装启动
安装依赖
- 解压项目ThingsBoard,找到前端项目目录ui-ngx,在该目录下执行安装依赖命令:yarn install 或者npm install
- 安装时,可能会出现错误。
如果有提示OpenSSL SSL_read: Connection was reset, errno 10054的报错。
那么需要修改下Git认证配置,再次执行安装依赖命令。
git config --global http.sslVerify "false"
git config --global https.sslVerify "false"
- 然后这次安装,有可能出现网络问题,安装不成功。建议多次尝试,或者清理node_moudles包重新安装。
- 安装成功后显示:
编译构建启动
- 安装好依赖后,执行 yarn start 或者npm start启动。(如果使用 npm启动,出现一直报错的情况,还是建议使用 yarn启动,启动前 要保证成功安装,yarn install)
- Browser application bundle generation complete,这里需要耐心等待。。。
- 至此,前端安装并启动成功。(如果 Compiled successfully 成功后,还报红,那可能是 后端服务没有启动,可在 proxy.conf.js 这个文件中配置后端url,配置好后,再次编译运行即可)
浏览器访问 http://localhost:4200/ 进入thingsboard 登录页面。
ThingsBoard首页
使用管理员登录,用户名 sysadmin@thingsboard.org, 密码 sysadmin
登录成功后,进入首页。