我们一直在寻找社区中有关如何改进ThingsBoard的反馈。 如果你有想法或要考虑一些新功能,请在ThingsBoard GitHub问题页面新建一个问题。 请确保问题列表中没有相同的问题(或类似问题)。
在开始任何实施之前,请等待ThingsBoard团队对你的票进行评论。我们将尽快与你联系。

必备工具

要构建和运行ThingsBoard实例,请确保已在系统上安装了JavaMaven
请参考从源代码构建部分,其中JavaMaven安装过程进行了描述。

分支并构建ThingsBoard代码库

完成所需工具的安装后,请克隆正式的ThingsBoard代码库分支。
现在你可以克隆分支项目的源代码。
注意: 我们稍后将以 ${TB_WORK_DIR} 指代你已经克隆的代码库文件夹。
如果是首次在Windows上构建,则可能需要运行以下命令以确保所需的npm依赖项可用:

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

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

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

使用IDE编译application模块时会生成必须的protobuf文件。
接下来,将该项目作为Maven项目导入到你最喜欢的IDE中。
请参阅IDEAEclipse
注意: 如果你使用的是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:

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

[可选] NoSQL数据库:时间序列数据库Cassandra

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

  • Cassandra安装在Linux
  • Cassandra安状在Windows

    [可选]配置ThingsBoard以使用外部数据库

    注意: 这是一个可选步骤。 仅用于生产用途时才需要。 您可以使用嵌入式HSQLDB进行平台评估或开发
    编辑ThingsBoard配置文件:

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

    注释‘# HSQLDB DAO配置’代码片断。

    1. # HSQLDB DAO Configuration
    2. #spring:
    3. # data:
    4. # jpa:
    5. # repositories:
    6. # enabled: "true"
    7. # jpa:
    8. # hibernate:
    9. # ddl-auto: "validate"
    10. # database-platform: "org.hibernate.dialect.HSQLDialect"
    11. # datasource:
    12. # driverClassName: "${SPRING_DRIVER_CLASS_NAME:org.hsqldb.jdbc.JDBCDriver}"
    13. # url: "${SPRING_DATASOURCE_URL:jdbc:hsqldb:file:${SQL_DATA_FOLDER:/tmp}/thingsboardDb;sql.enforce_size=false}"
    14. # username: "${SPRING_DATASOURCE_USERNAME:sa}"
    15. # password: "${SPRING_DATASOURCE_PASSWORD:}"

    对于PostgreSQL
    取消注释‘#PostgreSQL DAO配置’代码片断。确保在该块的底部两行中更新postgres数据库的用户名和密码(如图所示,它们均为“ postgres”)。

    1. # PostgreSQL DAO Configuration
    2. spring:
    3. data:
    4. jpa:
    5. repositories:
    6. enabled: "true"
    7. jpa:
    8. hibernate:
    9. ddl-auto: "validate"
    10. database-platform: "org.hibernate.dialect.PostgreSQLDialect"
    11. datasource:
    12. driverClassName: "${SPRING_DRIVER_CLASS_NAME:org.postgresql.Driver}"
    13. url: "${SPRING_DATASOURCE_URL:jdbc:postgresql://localhost:5432/thingsboard}"
    14. username: "${SPRING_DATASOURCE_USERNAME:postgres}"
    15. password: "${SPRING_DATASOURCE_PASSWORD:postgres}"

    对于Cassandra DB
    找到并将数据库类型配置参数设置为‘cassandra’。

    1. database:
    2. ts:
    3. 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值生效:

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

    创建数据库结构并生成演示数据

    为了创建数据库表请执行以下命令:
    Linux:

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

    Windows:

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

    运行开发环境

    在热部署模式下运行UI容器。

    默认情况下ThingsBoard UI通过8080使用端口。但是你可能要在热重新部署模式下运行UI。
    注意: 此步骤是可选的仅当你要更改UI时才需要。
    要以热部署模式启动UI容器,你需要先安装 node.js。安装node.js后,你可以通过执行下一个命令来启动容器:

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

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

    运行服务器端容器

    要启动服务器端容器,你可以使用几个选项。
    首先,你可以运行IDEapplication模块中的org.thingsboard.server.ThingsboardServerApplication类的main方法。
    其次是,你可以从命令行使用Spring boot启动应用程序服务器:

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

    运行

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

  • 用户名 tenant@thingsboard.org

  • 密码 tenant

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

代码更改

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

生成验证

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

  1. mvn clean install

确保构建正常并且所有测试均成功。

将更改推送到你的分支

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

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

创建请求请求

请默认将拉取请求创建到master分支中(如果需要,在github问题讨论的初始阶段将提供其他branch名称)。
如果由于提交前新事物已进入ThingsBoard master分支而发生冲突,请解决这些冲突以继续。
签署贡献许可协议(CLA),并验证远程构建是否成功。使用github CLA机器人对CLA进行了签名。
贡献指南 - 图1
请耐心等待,拉取请求可能需要几天的时间进行审核。

了解更多

  • 规则节点开发指南 介绍如何创建自己的规则节点。
  • 部件开发指南 介绍如何创建自己的窗口小部件。

    下一步

  • 入门指南 - 这些指南提供了ThingsBoard主要功能的快速概述。

  • 安装指南 - 了解如何在各种操作系统上安装ThingsBoard。
  • 设备连接 - 了解如何根据您的连接方式或解决方案连接设备。
  • 数据看板 - 这些指南包含有关如何配置复杂的ThingsBoard仪表板的说明。
  • 数据处理 - 了解如何使用ThingsBoard规则引擎。
  • 数据分析 - 了解如何使用规则引擎执行基本的分析任务。
  • 硬件样品 - 了解如何将各种硬件平台连接到ThingsBoard。
  • 高级功能 - 了解高级ThingsBoard功能。