第一课:课程导学与环境准备
各位同学好,我是你们这门课的主讲。在正式开始之前,我想先聊聊我为什么要把「ThingsBoard 和 MQTT」放在一起讲。
我在物联网行业摸爬滚打了快十年。早期做项目,最头疼的就是设备连上来了,数据怎么管?用开源 MQTT Broker 吧,数据是能收了,但可视化、告警、设备管理全得自己写。后来接触到 ThingsBoard,说实话,眼前一亮——它把 MQTT 协议层和应用层打通了。说白了,你设备发一条 MQTT 消息,ThingsBoard 就能自动解析、存储、展示,甚至触发告警。这比你自己从头搭一套平台省了太多事。
好,闲话少说。这一章我们先把地基打好。我会带你快速了解 ThingsBoard 是什么、MQTT 协议的核心要点,然后手把手把开发环境搭起来。
1.1 ThingsBoard 平台概述
ThingsBoard 是一个开源的物联网平台。它主要干三件事:设备连接、数据收集、可视化展示。
我个人习惯把它理解成一个「物联网数据的中转站和加工厂」。设备通过 MQTT、HTTP、CoAP 等协议把数据发过来,ThingsBoard 负责存起来,然后你可以用它的仪表板做图表、设告警规则,甚至通过规则引擎做数据清洗。
它的核心组件包括:
- 设备管理:注册、认证、属性管理
- 数据收集:支持遥测数据(温度、湿度等)和时间序列存储
- 规则引擎:对数据进行过滤、转换、转发
- 仪表板:拖拽式可视化界面
- 告警系统:基于条件触发通知
我在项目中遇到过最典型的场景:工厂里有几百个传感器,每 5 秒上报一次数据。如果自己写后端,光处理并发写入和时序数据库就够喝一壶的。但用 ThingsBoard,它内置了 Cassandra 或 PostgreSQL 的时序扩展,开箱即用。嗯,这里要注意,选对存储方案很重要,后面我会专门讲。
重要提示:ThingsBoard 有社区版和专业版之分。社区版免费,功能已经覆盖 80% 的常见场景。我们这门课全部基于社区版,你学完可以直接用到生产环境。
1.2 MQTT 协议基础
MQTT 是什么?它是物联网领域最流行的轻量级消息协议。你想想看,一个温湿度传感器,可能只有几 KB 的内存,跑 HTTP 太重了,但 MQTT 的报文头最小只有 2 个字节。这就是它能在嵌入式设备上广泛使用的原因。
MQTT 的核心概念其实就三个:
- 发布/订阅模型:设备发布消息到某个主题,其他设备或平台订阅这个主题就能收到。不是点对点,是广播式的。
- 主题(Topic):消息的分类标签,比如
sensor/temperature。支持通配符+和#。 - 服务质量(QoS):0、1、2 三个等级。QoS 0 最多发一次,丢了不管;QoS 1 保证至少一次;QoS 2 保证恰好一次。
为什么会设计三个 QoS 等级?我刚开始做项目时,觉得 QoS 2 最安全,所有消息都用它。结果发现网络差的时候,消息重传导致延迟飙升。后来才明白,温度数据丢一两秒无所谓,用 QoS 0 就行;但门锁开关这种控制指令,必须用 QoS 1 或 2。说白了,要根据业务场景选。
MQTT 还有一个重要机制叫「遗嘱消息」。设备断开时,Broker 会帮它发一条预设的消息。我曾经用这个功能做设备离线告警,效果很好。
小技巧:调试 MQTT 时,我推荐用 MQTTX 这个客户端工具。图形化界面,支持多主题订阅,还能模拟发布。比命令行工具直观多了。
1.3 开发环境搭建与验证
好,理论说完了,我们来动手。环境搭建是很多同学容易卡住的地方。我按步骤来,你跟着做就行。
1.3.1 JDK 安装
ThingsBoard 基于 Java 开发,所以 JDK 是必须的。我建议用 JDK 11 或 17,这两个版本长期支持,稳定。
步骤:
- 去 Oracle 或 Adoptium 官网下载 JDK 11
- 安装后配置环境变量
JAVA_HOME - 验证:打开终端输入
java -version
如果看到类似 openjdk version "11.0.18" 的输出,就说明成功了。我记得有一次帮学员排查,他装的是 JDK 8,结果 ThingsBoard 启动报错。嗯,版本一定要对。
1.3.2 Node.js 安装
Node.js 主要用于 ThingsBoard 的规则引擎脚本编写,以及一些前端工具链。版本建议 16.x 或 18.x LTS。
步骤:
- 从官网下载安装包,一路默认安装
- 验证:
node -v和npm -v
我个人习惯用 nvm 管理 Node 版本,方便切换。不过新手直接装稳定版就行。
1.3.3 Mosquitto 安装
Mosquitto 是一个轻量级的 MQTT Broker,我们用它来做本地测试。ThingsBoard 自带了一个内置的 MQTT Broker,但调试时用 Mosquitto 更灵活。
Windows 用户:
- 去官网下载 .exe 安装包
- 安装后启动服务:
net start mosquitto
Linux/Mac 用户:
sudo apt install mosquitto mosquitto-clients(Ubuntu)brew install mosquitto(Mac)
验证方法:开两个终端,一个订阅,一个发布。
# 终端1:订阅主题
mosquitto_sub -h localhost -t "test/topic"
# 终端2:发布消息
mosquitto_pub -h localhost -t "test/topic" -m "Hello, MQTT!"
如果终端1收到了消息,说明 Mosquitto 跑起来了。我曾经在 Windows 上遇到过端口被占用的问题,默认端口 1883 被其他程序占了。解决办法是改配置文件里的端口号,或者先查一下哪个进程占用了端口。
避坑指南:我曾经在 Mac 上安装 Mosquitto 后,发现订阅收不到消息。折腾了半天,原来是防火墙把 1883 端口拦了。如果你也遇到类似问题,先检查防火墙设置。
1.3.4 ThingsBoard 安装(可选)
这一章我们主要搭建基础环境,ThingsBoard 的安装会在下一章详细讲。但如果你想提前体验,可以用 Docker 快速跑起来:
docker run -d --name tb -p 9090:9090 thingsboard/tb
启动后访问 http://localhost:9090,默认账号 sysadmin@thingsboard.org,密码 sysadmin。不过别急着用,我们后面会一步步配置。
1.4 环境验证清单
为了确保你准备好了,我列一个检查表。每项都打勾了再往下走:
| 组件 | 验证命令 | 预期结果 |
|---|---|---|
| JDK | java -version |
显示 11 或 17 |
| Node.js | node -v |
显示 v16.x 或 v18.x |
| Mosquitto | mosquitto_sub -h localhost -t "test" |
无报错,等待消息 |
| MQTT 通信 | 发布/订阅测试 | 能收到消息 |
如果你哪一步卡住了,别急。我见过很多学员在 Mosquitto 安装上花了一小时,最后发现是路径没配好。你可以先跳过,继续往下看,后面章节会用到这些工具时再回来排查。
好,这一章就到这里。环境搭好了,下一章我们正式进入 ThingsBoard 的世界,从设备接入开始。记住,基础打牢了,后面才跑得快。
公众号:蓝海资料掘金营,微信deep3321