产品定价 立即试用
社区版
安装 > 本地部署 > Raspberry Pi
入门 文档 指南
架构 API 常见问题
目录

在 Raspberry Pi 上安装 ThingsBoard

文档信息图标
ThingsBoard Cloud

我们推荐使用 ThingsBoard Cloud —— 为您的 IoT 应用提供全托管、可扩展且具备容错能力的平台。
ThingsBoard Cloud 面向希望使用 ThingsBoard 但不想自行托管平台实例的用户。

前置条件

本指南介绍如何在Raspberry Pi上安装ThingsBoard。 硬件要求取决于所选数据库及连接系统的设备数量。 运行ThingsBoard和PostgreSQL至少需要4GB内存。 运行ThingsBoard和Cassandra至少需要8GB内存。

步骤1. 安装Java 17 (OpenJDK)

ThingsBoard 服务运行在 Java 17 上。请按以下说明安装 OpenJDK 17:

1
sudo apt update && sudo apt install openjdk-17-jdk-headless

将您的操作系统配置为默认使用 OpenJDK 17。您可以通过运行以下命令来配置默认版本:

1
sudo update-alternatives --config java

要检查系统上已安装的 Java 版本,请使用以下命令:

1
java -version

预期输出为:

1
2
3
openjdk version "17.x.xx" 
OpenJDK Runtime Environment (...)
OpenJDK 64-Bit Server VM (...)

步骤2. ThingsBoard服务安装

下载安装包。

1
wget https://github.com/thingsboard/thingsboard/releases/download/v4.3.0.1/thingsboard-4.3.0.1.deb

将ThingsBoard安装为服务

1
sudo dpkg -i thingsboard-4.3.0.1.deb

步骤3. 配置ThingsBoard数据库

文档信息图标

ThingsBoard 团队推荐在合理负载(< 5000 条消息/秒)的开发和生产环境中使用 PostgreSQL。 许多云厂商支持托管的 PostgreSQL 服务,对于大多数 ThingsBoard 实例而言是经济实惠的选择。

PostgreSQL 安装

以下说明将帮助您安装 PostgreSQL。

1
2
3
4
5
6
7
8
9
10
11
12
13
# 若尚未安装 **wget**,请先安装:
sudo apt install -y wget

# 导入软件源签名密钥:
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -

# 将软件源添加到系统:
echo "deb https://apt.postgresql.org/pub/repos/apt/ $(lsb_release -cs)-pgdg main" | sudo tee  /etc/apt/sources.list.d/pgdg.list

# 安装并启动 postgresql 服务:
sudo apt update
sudo apt -y install postgresql
sudo service postgresql start

安装 PostgreSQL 后,建议为 PostgreSQL 主用户 设置密码。

以下命令将切换当前用户为 PostgreSQL 用户并在 PostgreSQL 中直接设置密码。

1
sudo -u postgres psql -c "\password"

然后输入并确认密码。

然后,以 “postgres” 用户身份连接 “postgres” 数据库:

1
psql -U postgres -d postgres -h 127.0.0.1 -W

创建名为 “thingsboard” 的 ThingsBoard 数据库:

1
CREATE DATABASE thingsboard;

按两次 “Ctrl+D” 退出 PostgreSQL。

ThingsBoard 配置

编辑 ThingsBoard 配置文件

1
sudo nano /etc/thingsboard/conf/thingsboard.conf

将以下内容添加到配置文件中。请勿忘记将 “PUT_YOUR_POSTGRESQL_PASSWORD_HERE” 替换为您的实际 postgres 用户密码

1
2
3
4
5
6
7
# 数据库配置 
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
# 指定时间戳键值存储的分区大小。允许的值:DAYS、MONTHS、YEARS、INDEFINITE。
export SQL_POSTGRES_TS_KV_PARTITIONING=MONTHS

步骤4. 选择ThingsBoard队列服务

ThingsBoard 使用队列服务进行微服务间的 API 调用,支持以下队列服务:In Memory(默认)和基于 Kafka 的系统。

In Memory 队列已内置且默认启用,无需额外配置。

Confluent Cloud 配置

要访问 Confluent Cloud,您需要先创建账户,然后创建 Kafka 集群并获取您的 API Key

ThingsBoard 配置

编辑 ThingsBoard 配置文件

1
sudo nano /etc/thingsboard/conf/thingsboard.conf

将以下内容添加到配置文件中。请勿忘记将 “CLUSTER_API_KEY”、”CLUSTER_API_SECRET” 和 “localhost:9092” 替换为实际的 Confluent Cloud 引导服务器:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
export TB_QUEUE_TYPE=kafka
export TB_QUEUE_KAFKA_USE_CONFLUENT_CLOUD=true
export TB_KAFKA_SERVERS=localhost:9092
export TB_QUEUE_KAFKA_REPLICATION_FACTOR=3
export TB_QUEUE_KAFKA_CONFLUENT_SASL_JAAS_CONFIG='org.apache.kafka.common.security.plain.PlainLoginModule required username="CLUSTER_API_KEY" password="CLUSTER_API_SECRET";'

# These params affect the number of requests per second from each partitions per each queue.
# Number of requests to particular Message Queue is calculated based on the formula:
# ((Number of Rule Engine and Core Queues) * (Number of partitions per Queue) + (Number of transport queues)
#  + (Number of microservices) + (Number of JS executors)) * 1000 / POLL_INTERVAL_MS
# For example, number of requests based on default parameters is:

# Rule Engine queues:
# Main 10 partitions + HighPriority 10 partitions + SequentialByOriginator 10 partitions = 30
# Core queue 10 partitions
# Transport request Queue + response Queue = 2
# Rule Engine Transport notifications Queue + Core Transport notifications Queue = 2
# Total = 44
# Number of requests per second = 44 * 1000 / 25 = 1760 requests

# Based on the use case, you can compromise latency and decrease number of partitions/requests to the queue, if the message load is low.
# By UI set the parameters - interval (1000) and partitions (1) for Rule Engine queues.
# Sample parameters to fit into 10 requests per second on a "monolith" deployment: 

export TB_QUEUE_CORE_POLL_INTERVAL_MS=1000
export TB_QUEUE_CORE_PARTITIONS=2
export TB_QUEUE_RULE_ENGINE_POLL_INTERVAL_MS=1000
export TB_QUEUE_TRANSPORT_REQUEST_POLL_INTERVAL_MS=1000
export TB_QUEUE_TRANSPORT_RESPONSE_POLL_INTERVAL_MS=1000
export TB_QUEUE_TRANSPORT_NOTIFICATIONS_POLL_INTERVAL_MS=1000
export TB_QUEUE_VC_INTERVAL_MS=1000
export TB_QUEUE_VC_PARTITIONS=1

您可以通过 UI 更新默认规则引擎队列配置。有关 ThingsBoard 规则引擎队列的更多信息,请参阅文档

步骤5. 低配机器内存更新(4GB内存)

编辑 ThingsBoard 配置文件

1
sudo nano /etc/thingsboard/conf/thingsboard.conf

在配置文件中添加以下行:

1
2
# 更新 ThingsBoard 内存使用并限制为 2G,路径:/etc/thingsboard/conf/thingsboard.conf
export JAVA_OPTS="$JAVA_OPTS -Xms2G -Xmx2G"

建议根据服务器资源调整这些参数。该值应至少设置为 2G(GB),若有更多可用 RAM 可相应增加。通常,若不运行其他内存密集型进程(如 Cassandra),可设置为总 RAM 的 1/2,否则设为 1/3。

步骤6. 运行安装脚本

ThingsBoard 服务安装完成且 DB 配置更新后,可执行以下脚本:

1
2
# --loadDemo 选项将加载演示数据:users、devices、assets、rules、部件。
sudo /usr/share/thingsboard/bin/install/install.sh --loadDemo

步骤7. 启动ThingsBoard服务

执行以下命令启动 ThingsBoard:

1
sudo service thingsboard start

启动后,可通过以下链接访问 Web UI:

1
http://localhost:8080/

若在运行安装脚本时指定了 –loadDemo,可使用以下默认凭证:

  • System Administrator:sysadmin@thingsboard.org / sysadmin
  • Tenant Administrator:tenant@thingsboard.org / tenant
  • Customer User:customer@thingsboard.org / customer

可随时在账户资料页面修改各账户密码。

文档信息图标

Web UI启动最多可能需要90秒。

安装后步骤

升级到新版本ThingsBoard

Raspberry Pi的升级流程与Ubuntu完全相同。

保持平台安全与更新

当有新 ThingsBoard 版本发布时,我们提供简化的更新流程,确保系统获得最新功能和安全补丁,且不危及您的数据。

文档信息图标

为保持数据库完整性和系统稳定性,请按顺序进行升级(例如 v4.0.2 → v4.1.0 → v4.2.0)。

请参阅官方 升级说明,获取针对您当前部署环境的详细步骤。

故障排查

ThingsBoard 日志存储在以下目录中:

1
/var/log/thingsboard

可使用以下命令检查后端是否有错误:

1
cat /var/log/thingsboard/thingsboard.log | grep ERROR

下一步