技术交流

学习资料

立即试用 商务报价
社区版
社区版 专业版 云服务 Edge Edge PE 网关 授权服务 Trendz分析 Mobile 应用程序 Mobile PE应用程序
文档 > 开发指南 > 源码提交
入门
指南 安装 架构 API 常见问题

本页目录

贡献源码

我们一直在寻找社区中有关如何改进ThingsBoard的反馈。
如果你有想法或要考虑一些新功能请在ThingsBoardGitHub问题页面新建一个问题。
请确保问题列表中没有相同的问题(或类似问题)。

在开始任何实施之前请等待ThingsBoard团队对你进行评论我们将尽快与你联系。

必备工具

要构建和运行ThingsBoard实例,请确保已在系统上安装了JavaMaven

请参考从源代码构建部分,其中JavaMaven安装过程进行了描述。

需要运行dockerdocker-compose集成的黑盒测试请参阅运行测试部分。

分支

完成工具的安装后请克隆正式的ThingsBoard代码库分支。

现在你可以克隆分支项目的源代码。

注意:我们稍后将以${TB_WORK_DIR}指代你已经克隆的代码库文件夹。

如果是首次在Windows上构建则可能需要运行以下命令以确保所需的npm依赖项可用:

1
2
npm install -g cross-env 
npm install -g webpack 

在将项目导入IDE之前请使用Maven工具从根目录中进行构建:

1
2
cd ${TB_WORK_DIR}
mvn clean install -DskipTests

使用IDE编译application模块时会生成必须的protobuf文件。

接下来将该项目作为Maven项目导入到你最喜欢的IDE中。
请参阅IDEAEclipse

注意: 如果你使用的是Eclipse则在将maven项目导入到IDE之后建议你在ui-ngx项目上禁用Maven项目构建将地提高Eclipse性能因为它将避免Eclipse Maven构建生成node_modules目录(这是不必要的只会导致Eclipse挂起)。为此右键单击ui-ngx项目转到Properties-> Builders然后取消选中Maven Project Builder”复选框然后单击确定

数据库

ThingsBoard默认使用嵌入式HSQLDB实例这对于选型或开发目的非常方便,你可以配置平台以使用可伸缩的Cassandra数据库集群或各种SQL数据库。 如果你更喜欢使用SQL数据库建议使用PostgreSQL。

PostgreSQL

使用此连接是PostgreSQL安装文档。

安装PostgreSQL后可能需要创建一个新用户并设置密码。

按“Ctrl+D”返回控制台并连接到数据库创建ThingsBoard数据库:

1
2
3
psql -U postgres -d postgres -h 127.0.0.1 -W
CREATE DATABASE thingsboard;
\q
Cassandra

请参考适当的部分在其中找到有关如何安装Cassandra的说明:

编辑配置文件:

1
/application/src/main/resources/thingsboard.yml

找到并将数据库类型配置参数设置为’cassandra’.

1
2
3
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文件后请重启应用程序模块。

1
2
cd ${TB_WORK_DIR}/application
mvn clean install -DskipTests
初始化数据库

请运行以下命令创建数据库表:

Linux:

1
2
3
cd ${TB_WORK_DIR}/application/target/bin/install
chmod +x install_dev_db.sh
./install_dev_db.sh

Windows:

1
2
cd %TB_WORK_DIR%\application\target\windows
install_dev_db.bat

运行

热部署运行

默认情况下ThingsBoard UI通过8080使用端口但是你可能要在热重新部署模式下运行UI。

注意: 此步骤是可选的仅当你要更改UI时才需要。

1
2
cd ${TB_WORK_DIR}/ui-ngx
mvn clean install -P yarn-start

这将启动一个特殊的服务侦听4200端口所有REST API和websocket请求都将转发到8080端口。

运行服务

要启动服务器端容器你可以使用几个选项。

首先你可以运行IDEapplication模块中的org.thingsboard.server.ThingsboardServerApplication类的main方法。

其次是你可以从命令行使用Spring boot启动应用程序服务器:

1
2
cd ${TB_WORK_DIR}
java -jar application/target/thingsboard-${VERSION}-boot.jar
访问

导航到http://localhost:4200/或http://localhost:8080/并使用演示数据凭据登录:

  • 用户名 tenant@thingsboard.org
  • 密码 tenant

确保你能够登录并且一切都已正确启动。

代码更改

现在你准备开始对代码库进行一些更改。 更新服务端或UI代码。 从用户角度验证所做的更改是否满足你的要求和期望。

生成验证

在将更改提交到远程存储库之前请使用Maven运行测试以在本地进行构建:

1
mvn clean install

确保构建正常并且所有测试也能成功并也尝试黑盒测试

推送

完成代码更改后提交并使用一些有意义的注释将其推送到你的分支代码库中:

1
2
git commit -m '有意义的说明'
git push origin master
PR

请默认将拉取请求创建到master分支中(如果需要,在github问题讨论的初始阶段将提供其他branch名称)。

如果由于提交前新事物已进入ThingsBoard master分支而发生冲突请解决这些冲突以继续。

签署贡献许可协议(CLA)并验证远程构建是否成功使用github CLA机器人对CLA进行了签名。

image

请耐心等待拉取请求可能需要几天的时间进行审核。

了解更多

下一步

  • 入门指南 - 快速学习ThingsBoard相关功能。

  • 安装指南 - 学习如何在各种操作系统上安装ThingsBoard。

  • 连接设备 - 学习如何根据你的连接方式或解决方案连接设备。

  • 可 视 化 - 学习如何配置复杂的ThingsBoard仪表板说明。

  • 数据处理 - 学习如何使用ThingsBoard规则引擎。

  • 数据分析 - 学习如何使用规则引擎执行基本的分析任务。

  • 硬件样品 - 学习如何将各种硬件平台连接到ThingsBoard。

  • 高级功能 - 学习高级ThingsBoard功能。