我们一直在寻找社区中有关如何改进ThingsBoard的反馈。 如果你有想法或要考虑一些新功能,请在ThingsBoard GitHub问题页面新建一个问题。 请确保问题列表中没有相同的问题(或类似问题)。
在开始任何实施之前,请等待ThingsBoard团队对你的票进行评论。我们将尽快与你联系。
必备工具
要构建和运行ThingsBoard实例,请确保已在系统上安装了Java和Maven。
请参考从源代码构建部分,其中Java和Maven安装过程进行了描述。
分支并构建ThingsBoard代码库
完成所需工具的安装后,请克隆正式的ThingsBoard代码库分支。
现在你可以克隆分支项目的源代码。
注意: 我们稍后将以 ${TB_WORK_DIR} 指代你已经克隆的代码库文件夹。
如果是首次在Windows上构建,则可能需要运行以下命令以确保所需的npm依赖项可用:
npm install -g cross-env
npm install -g webpack
在将项目导入IDE之前请使用Maven工具从根文件夹中进行构建:
cd ${TB_WORK_DIR}
mvn clean install -DskipTests
使用IDE编译application模块时会生成必须的protobuf文件。
接下来,将该项目作为Maven项目导入到你最喜欢的IDE中。
请参阅IDEA和Eclipse。
注意: 如果你使用的是Eclipse,则在将maven项目导入到IDE之后,建议你在ui项目上禁用Maven项目构建器。这将极大地提高Eclipse性能,因为它将避免Eclipse Maven构建生成node_modules目录(这是不必要的,只会导致Eclipse挂起)。为此,右键单击ui项目,转到Properties-> Builders,然后取消选中Maven Project Builder”复选框,然后单击确定。
**
数据库
默认情况下,ThingsBoard使用嵌入式HSQLDB实例,这对于评估或开发目的非常方便。
另外,你可以配置平台以使用可伸缩的Cassandra数据库集群或各种SQL数据库。 如果你更喜欢使用SQL数据库,建议使用PostgreSQL。
[可选] SQL数据库:PostgreSQL
注意: 这是一个可选步骤。 仅用于生产用途时才需要。 您可以使用嵌入式HSQLDB进行平台评估或开发
请使用此链接获得PostgreSQL安装说明。
一旦安装了PostgreSQL,你可能想要创建一个新用户或设置主要用户的密码。
然后,按“Ctrl+D”返回主用户控制台并连接到数据库以创建Thingsboard DB:
psql -U postgres -d postgres -h 127.0.0.1 -W
CREATE DATABASE thingsboard;
\q
[可选] NoSQL数据库:时间序列数据库Cassandra
请参考适当的部分,在其中找到有关如何安装cassandra的说明:
- Cassandra安装在Linux上
-
[可选]配置ThingsBoard以使用外部数据库
注意: 这是一个可选步骤。 仅用于生产用途时才需要。 您可以使用嵌入式HSQLDB进行平台评估或开发
编辑ThingsBoard配置文件:/application/src/main/resources/thingsboard.yml
注释‘# HSQLDB DAO配置’代码片断。
# HSQLDB DAO Configuration
#spring:
# data:
# jpa:
# repositories:
# enabled: "true"
# jpa:
# hibernate:
# ddl-auto: "validate"
# database-platform: "org.hibernate.dialect.HSQLDialect"
# datasource:
# driverClassName: "${SPRING_DRIVER_CLASS_NAME:org.hsqldb.jdbc.JDBCDriver}"
# url: "${SPRING_DATASOURCE_URL:jdbc:hsqldb:file:${SQL_DATA_FOLDER:/tmp}/thingsboardDb;sql.enforce_size=false}"
# username: "${SPRING_DATASOURCE_USERNAME:sa}"
# password: "${SPRING_DATASOURCE_PASSWORD:}"
对于PostgreSQL:
取消注释‘#PostgreSQL DAO配置’代码片断。确保在该块的底部两行中更新postgres数据库的用户名和密码(如图所示,它们均为“ postgres”)。# PostgreSQL DAO Configuration
spring:
data:
jpa:
repositories:
enabled: "true"
jpa:
hibernate:
ddl-auto: "validate"
database-platform: "org.hibernate.dialect.PostgreSQLDialect"
datasource:
driverClassName: "${SPRING_DRIVER_CLASS_NAME:org.postgresql.Driver}"
url: "${SPRING_DATASOURCE_URL:jdbc:postgresql://localhost:5432/thingsboard}"
username: "${SPRING_DATASOURCE_USERNAME:postgres}"
password: "${SPRING_DATASOURCE_PASSWORD:postgres}"
对于Cassandra DB:
找到并将数据库类型配置参数设置为‘cassandra’。database:
ts:
type: "${DATABASE_TS_TYPE:cassandra}" # cassandra OR sql (for hybrid mode, only this value should be cassandra)
注意: 如果你的Cassandra服务器已安装在远程计算机上,或者已绑定到自定义接口/端口,则还需要在Thingsboard.yml中进行指定。 请转至配置指南以获取thingsboard.yml文件的详细说明以及用于cassandra连接配置的属性。
Thingsboard.yml文件更新后,请重新编译应用程序模块,以便将更新后的Thingsboard.yml值生效:cd ${TB_WORK_DIR}/application
mvn clean install -DskipTests
创建数据库结构并生成演示数据
为了创建数据库表请执行以下命令:
在 Linux:cd ${TB_WORK_DIR}/application/target/bin/install
chmod +x install_dev_db.sh
./install_dev_db.sh
在 Windows:
cd %TB_WORK_DIR%\application\target\windows
install_dev_db.bat
运行开发环境
在热部署模式下运行UI容器。
默认情况下ThingsBoard UI通过8080使用端口。但是你可能要在热重新部署模式下运行UI。
注意: 此步骤是可选的仅当你要更改UI时才需要。
要以热部署模式启动UI容器,你需要先安装 node.js。安装node.js后,你可以通过执行下一个命令来启动容器:cd ${TB_WORK_DIR}/ui-ngx
mvn clean install -P npm-start
这将启动一个特殊的服务器,该服务器将侦听4200端口。所有REST API和websocket请求都将转发到8080端口。
运行服务器端容器
要启动服务器端容器,你可以使用几个选项。
首先,你可以运行IDE中application模块中的org.thingsboard.server.ThingsboardServerApplication类的main方法。
其次是,你可以从命令行使用Spring boot启动应用程序服务器:cd ${TB_WORK_DIR}
java -jar application/target/thingsboard-${VERSION}-boot.jar
运行
导航到http://localhost:4200/或http://localhost:8080/ 并使用演示数据凭据登录ThingsBoard:
用户名 tenant@thingsboard.org
- 密码 tenant
代码更改
现在你准备开始对代码库进行一些更改。 更新服务端或UI代码。 从用户角度验证所做的更改是否满足你的要求和期望。
生成验证
在将更改提交到远程存储库之前,请使用Maven运行测试以在本地进行构建:
mvn clean install
将更改推送到你的分支
完成代码更改后,提交并使用一些有意义的注释将其推送到你的分支代码库中:
git commit -m '有意义的说明'
git push origin master
创建请求请求
请默认将拉取请求创建到master分支中(如果需要,在github问题讨论的初始阶段将提供其他branch名称)。
如果由于提交前新事物已进入ThingsBoard master分支而发生冲突,请解决这些冲突以继续。
签署贡献许可协议(CLA),并验证远程构建是否成功。使用github CLA机器人对CLA进行了签名。
请耐心等待,拉取请求可能需要几天的时间进行审核。
了解更多
- 规则节点开发指南 介绍如何创建自己的规则节点。
部件开发指南 介绍如何创建自己的窗口小部件。
下一步
入门指南 - 这些指南提供了ThingsBoard主要功能的快速概述。
- 安装指南 - 了解如何在各种操作系统上安装ThingsBoard。
- 设备连接 - 了解如何根据您的连接方式或解决方案连接设备。
- 数据看板 - 这些指南包含有关如何配置复杂的ThingsBoard仪表板的说明。
- 数据处理 - 了解如何使用ThingsBoard规则引擎。
- 数据分析 - 了解如何使用规则引擎执行基本的分析任务。
- 硬件样品 - 了解如何将各种硬件平台连接到ThingsBoard。
- 高级功能 - 了解高级ThingsBoard功能。