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里已经把常用传输通道全部启好,你按设备能力挑一个即可:
| 协议 | 端口 | 传输层 | 典型适用设备 |
|---|---|---|---|
| MQTT | 1883 (TCP) | 长连接,推荐默认 | 传感器网关、嵌入式 Linux |
| HTTP | 8081 (TCP) | 短请求 | 已有 HTTP 上报逻辑的设备 |
| CoAP | 5683 (UDP) | 轻量无连接 | 资源受限的 MCU |
| LWM2M | 5685 / 5686 (UDP) | 设备管理协议 | 智能电表等 |
| SNMP | 1620 (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 两个键的数值——数据已经从设备"流进"平台了。数据进来了,但目前只是数据库里的两个数字,下一节让它变成看得见的曲线。
让数据被看见 📊
仪表盘怎么搭
- 左侧菜单「仪表盘」→「创建新仪表盘」,命名为"大棚环境监控";
- 点击画布空白处 →「创建新 widget」,选「最新值」或「时序」类组件;
- 在数据绑定里选刚才那台设备,键分别填
temperature、humidity。
绑定的关键只有一个:widget 里的键名必须和遥测 JSON 里的键完全一致,区分大小写。
跑完你应看到:画布上出现两个 widget,每隔几秒自动刷新出最新温湿度。
哪些业务场景直接适配
同一套"设备 + widget"结构,换个键名和阈值就能复用:仓库冷储把键换成fridge_temp,车队跟踪绑定 GPS 坐标,能源监控换成功率与功率键。你不需要换平台,只需要换配置。
到这里你应该已经能在网页上看到一条实时跳动的温湿度曲线。但曲线只回答"现在是多少",不回答"超了怎么办"——这正是规则引擎的活儿。
让数据自动流转
把规则链想成一条分拣流水线
每个设备的数据进入平台后,会流经它的规则链。规则链就像快递分拣线:包裹(消息)到站,按规则分拣到不同目的地——入库的入库、报警的报警、外发的外发。
一条完整链路:接收 → 落库 → 过滤 → 告警 → 通知
以"温度超过 35℃ 就发邮件"为例,打开设备的默认规则链,依次加四个节点并用连线串起来:
- 落库:默认的"保存时间序列"节点,把每条遥测存进数据库(平台默认已含,不用手加);
- 过滤:加一个"关系类型/脚本"类判断节点,条件写
msg.temperature > 35; - 告警:条件命中后连到"创建/清除告警"节点,告警名设为"温度过高";
- 通知:再连一个邮件通知节点,填收件邮箱。
验证方法:把脚本里的温度改成 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配置目录纳入版本管理或快照。
到这里你应该知道生产前最少要碰哪些文件。配置再稳,新人第一次跑也难免翻车——最后一节把高频故障提前排掉。
踩坑与自救 ⚠️
新手翻车的五个高频现场,按"现象 → 去哪看 → 怎么修"给你排好:
- 启动就报端口被占(80/8080/1883)。先
docker ps确认是不是旧容器没停;再检查宿主机是否有其他服务占用,改 compose 里的端口映射后docker-compose up -d重建。 - 登录页打不开或返回 502。多半是核心服务还没初始化完。
docker logs tb-core1 --tail 100看启动进度,等 1~2 分钟再刷新;若日志里是数据库连接报错,检查数据库容器是否健康。 - MQTT 连接被拒。九成是 Access Token 没填或填错——username 必须完整粘贴 Token,不能截断。仍失败就看
docker/tb-transports/mqtt/log下传输服务日志,里面会写明鉴权失败的具体原因。 - 设备页有数据,仪表盘却是空的。两个高频原因:widget 绑定的设备与发数据的设备不在同一个租户下;或键名大小写不一致。先在设备详情页「最新遥测」里确认键名,再回 widget 逐个核对。
- 容器反复重启、机器内存飙高。默认 compose 是多节点集群,小机器扛不住。用
docker stats找出吃内存的容器,给对应服务调小堆内存,或按文档裁剪节点副本数。
到这里你应该有了自查手册:多数"玄学问题"都能在三条命令内定位。最后把接下来往哪走、去哪查资料给你说清楚。
收尾:路线、资源与许可证
接下来往哪学(按收益排序):
- 规则引擎进阶:多规则链拆分、RPC 下发指令给设备;
- 资产与设备关系建模:把"大棚"建成资产,关联其下所有传感器;
- 边缘节点与高可用部署:把计算下沉到机房侧;
- 第三方集成:把告警转发到 Kafka、RabbitMQ 等消息系统。
去哪查资料(都在仓库内,无需外网跳转):
- 部署脚本与说明:
docker/README.md、docker/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),仅供参考