ThingsBoard 快速上手指南:3 步 Docker 部署,1 台设备跑通温湿度监控闭环
2026/8/24 21:22:06 网站建设 项目流程

ThingsBoard 快速上手指南:3 步 Docker 部署,1 台设备跑通温湿度监控闭环

【免费下载链接】thingsboardOpen-source IoT Platform - Device management, data collection, processing and visualization.项目地址: https://gitcode.com/GitHub_Trending/th/thingsboard

设备数据散落在串口、Excel 和微信群里,告警全靠人肉盯屏——这是多数物联网项目的真实开局。ThingsBoard 是一个开源物联网平台,负责设备管理、数据收集、处理与可视化,帮你把这些活统一收口。读完本文,你能在 30 分钟内用 Docker 一键部署它,接入第一台设备,搭出温湿度监控的最小闭环。

它替我省掉了什么

这里帮你解决一个判断问题:这个项目到底值不值得接进来?看三个真实痛点就够了。

痛点 1:每个设备协议都要自己写一套"搬运工"。你大概率写过这样的代码:监听串口或 socket,解析十六进制报文,写进数据库。ThingsBoard 把这条搬运链做成了内置能力:设备按协议连上来,平台负责解析、鉴权、入库,你只管定数据格式。

痛点 2:仪表盘前端是一笔重复开销。每个项目都要画曲线图、做刷新、处理断线重连。平台自带的 widget 库把这些封装好了,拖一个"最新值"组件、绑定设备数据键,曲线就有了。

痛点 3:告警逻辑散落各处。超过阈值发邮件、短信、webhook,往往是一段段 if-else 加定时器。平台用可视化的规则链把"收到数据→判断→报警→通知"串成一条流程,改阈值不需要发版。

到这里你应该心里有数了:它不是多一个组件,而是把"接入—存储—展示—告警"整条链路打包。链路再漂亮也得先跑起来,下一步把它部署到你的机器上。

把它跑起来

前置:只需装好 Docker

  • 一台可用机器,内存建议 4GB 以上;
  • 安装 Docker 与 Docker Compose,用docker version能正常输出即可。

3 步一键部署

# 1. 克隆仓库 git clone https://gitcode.com/GitHub_Trending/th/thingsboard # 2. 进入 docker 部署目录 cd thingsboard/docker # 3. 后台启动整套服务(核心节点、规则引擎、MQTT/HTTP 传输、Web UI) docker-compose up -d

跑完你应看到:命令陆续拉取镜像并打印Started日志;首次执行要拉很多镜像,等 5~10 分钟属正常现象。

怎么判断部署成功了

打开浏览器访问http://localhost:8080,看到 ThingsBoard 登录页就算起来了。用默认租户管理员账号登录(用户名tenantadmin@thingsboard.org,密码tenant),进入主界面后你应能看到设备、仪表盘、规则链等侧边栏菜单。

现在平台是空的——没有设备、没有数据。空平台不产生价值,下一节我们让第一台设备上线并推送数据。

接入你的第一台设备 🔌

5 种协议、5 个端口一览

docker-compose.yml里已经把常用传输通道全部启好,你按设备能力挑一个即可:

协议端口传输层典型适用设备
MQTT1883 (TCP)长连接,推荐默认传感器网关、嵌入式 Linux
HTTP8081 (TCP)短请求已有 HTTP 上报逻辑的设备
CoAP5683 (UDP)轻量无连接资源受限的 MCU
LWM2M5685 / 5686 (UDP)设备管理协议智能电表等
SNMP1620 (UDP)Trap 上报机房网络设备

拿到 Access Token 只需 2 次点击

登录后:左侧菜单「设备」→「添加新设备」→ 命名保存。设备详情页里会显示一个 Access Token,复制下来——它就是这台设备的"身份证号"。

最小可运行示例:Python 发一条遥测

import paho_mqtt_client as mqtt # pip install paho-mqtt import json ACCESS_TOKEN = "粘贴你的设备 Access Token" client = mqtt.Client() client.username_pw_set(ACCESS_TOKEN) # 用户名填 Token,无需密码 client.connect("localhost", 1883, 60) # 连接平台 MQTT 端口 client.loop_start() telemetry = {"temperature": 25.5, "humidity": 60.2} client.publish("v1/devices/me/telemetry", json.dumps(telemetry)) print("已发送:", telemetry)

跑完你应看到:终端打印"已发送";回到 Web 界面打开这台设备,在「遥测」标签里能看到 temperature 和 humidity 两个键的数值——数据已经从设备"流进"平台了。数据进来了,但目前只是数据库里的两个数字,下一节让它变成看得见的曲线。

让数据被看见 📊

仪表盘怎么搭

  1. 左侧菜单「仪表盘」→「创建新仪表盘」,命名为"大棚环境监控";
  2. 点击画布空白处 →「创建新 widget」,选「最新值」或「时序」类组件;
  3. 在数据绑定里选刚才那台设备,键分别填temperaturehumidity

绑定的关键只有一个:widget 里的键名必须和遥测 JSON 里的键完全一致,区分大小写。

跑完你应看到:画布上出现两个 widget,每隔几秒自动刷新出最新温湿度。

哪些业务场景直接适配

同一套"设备 + widget"结构,换个键名和阈值就能复用:仓库冷储把键换成fridge_temp,车队跟踪绑定 GPS 坐标,能源监控换成功率与功率键。你不需要换平台,只需要换配置。

到这里你应该已经能在网页上看到一条实时跳动的温湿度曲线。但曲线只回答"现在是多少",不回答"超了怎么办"——这正是规则引擎的活儿。

让数据自动流转

把规则链想成一条分拣流水线

每个设备的数据进入平台后,会流经它的规则链。规则链就像快递分拣线:包裹(消息)到站,按规则分拣到不同目的地——入库的入库、报警的报警、外发的外发。

一条完整链路:接收 → 落库 → 过滤 → 告警 → 通知

以"温度超过 35℃ 就发邮件"为例,打开设备的默认规则链,依次加四个节点并用连线串起来:

  1. 落库:默认的"保存时间序列"节点,把每条遥测存进数据库(平台默认已含,不用手加);
  2. 过滤:加一个"关系类型/脚本"类判断节点,条件写msg.temperature > 35
  3. 告警:条件命中后连到"创建/清除告警"节点,告警名设为"温度过高";
  4. 通知:再连一个邮件通知节点,填收件邮箱。

验证方法:把脚本里的温度改成 36 再发一条,几秒内设备的告警列表里出现"温度过高",邮箱收到通知。跑完你应看到:告警中心有新告警记录,且通知邮件与告警一一对应——整条链路从"数据进"到"人知道"全部自动化。

演示环境到这里就闭环了。真要上生产,只需动三处配置,下一节一次讲清。

上生产前要动这三处

① 日志:知道东西去哪了

核心服务的日志配置在docker/tb-node/conf/logback.xml,各传输服务同理(如docker/tb-transports/mqtt/conf)。compose 已把日志挂载到宿主机的./tb-node/log等目录,容器内路径为/var/log/thingsboard;日常排障先用docker logs tb-core1,历史追溯再看文件。

② 参数:两个 env 文件决定行为

docker/tb-node.env控制核心节点(ZooKeeper 开关、JS 脚本执行方式、监控开关),docker/tb-mqtt-transport.env控制传输端口与超时。机器内存吃紧时,可在 compose 里通过JAVA_OPTS给每个 Java 容器加堆内存上限,避免容器 OOM 被杀。

③ 持久化:数据在数据库,备份要跟上

遥测、告警、设备全部存在数据库里,compose 目录同时提供了 PostgreSQL 与 Cassandra 两套编排文件(docker-compose.postgres.yml等),按团队熟悉度选择。上生产前定两件事:数据库定期备份策略,以及conf配置目录纳入版本管理或快照。

到这里你应该知道生产前最少要碰哪些文件。配置再稳,新人第一次跑也难免翻车——最后一节把高频故障提前排掉。

踩坑与自救 ⚠️

新手翻车的五个高频现场,按"现象 → 去哪看 → 怎么修"给你排好:

  1. 启动就报端口被占(80/8080/1883)。docker ps确认是不是旧容器没停;再检查宿主机是否有其他服务占用,改 compose 里的端口映射后docker-compose up -d重建。
  2. 登录页打不开或返回 502。多半是核心服务还没初始化完。docker logs tb-core1 --tail 100看启动进度,等 1~2 分钟再刷新;若日志里是数据库连接报错,检查数据库容器是否健康。
  3. MQTT 连接被拒。九成是 Access Token 没填或填错——username 必须完整粘贴 Token,不能截断。仍失败就看docker/tb-transports/mqtt/log下传输服务日志,里面会写明鉴权失败的具体原因。
  4. 设备页有数据,仪表盘却是空的。两个高频原因:widget 绑定的设备与发数据的设备不在同一个租户下;或键名大小写不一致。先在设备详情页「最新遥测」里确认键名,再回 widget 逐个核对。
  5. 容器反复重启、机器内存飙高。默认 compose 是多节点集群,小机器扛不住。用docker stats找出吃内存的容器,给对应服务调小堆内存,或按文档裁剪节点副本数。

到这里你应该有了自查手册:多数"玄学问题"都能在三条命令内定位。最后把接下来往哪走、去哪查资料给你说清楚。

收尾:路线、资源与许可证

接下来往哪学(按收益排序):

  1. 规则引擎进阶:多规则链拆分、RPC 下发指令给设备;
  2. 资产与设备关系建模:把"大棚"建成资产,关联其下所有传感器;
  3. 边缘节点与高可用部署:把计算下沉到机房侧;
  4. 第三方集成:把告警转发到 Kafka、RabbitMQ 等消息系统。

去哪查资料(都在仓库内,无需外网跳转):

  • 部署脚本与说明:docker/README.mddocker/tb-node.env等 env 文件即最权威的参数清单;
  • 内置帮助文档:ui-ngx/src/assets/help目录下按模块分目录,Web 界面里也能直接看到;
  • 设备端联调脚本:tools/src/main/python下的 MQTT/CoAP 客户端示例可直接改造使用。

许可证:本项目基于 Apache License 2.0 发布,商用友好,详见仓库根目录的LICENSE文件。

从部署到设备上线,再到曲线与告警全自动,一个大棚的温湿度闭环已经完整跑通。剩下的事,就是把它接到你的真实设备上。

【免费下载链接】thingsboardOpen-source IoT Platform - Device management, data collection, processing and visualization.项目地址: https://gitcode.com/GitHub_Trending/th/thingsboard

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询