3、设备管理基础:创建设备、设备配置、设备凭证、设备连接测试

好,咱们进入设备管理这一块。说实话,ThingsBoard 里最核心的操作就是跟设备打交道。你平台搭得再好,没有设备连上来,那就是个空壳子。这一节我带你手把手把设备从创建到连通的整个流程走一遍。

3.1 创建设备——别小看这一步

在 ThingsBoard 里创建设备,其实就两步:填个名字,选个类型。但我得提醒你,这里有个坑。

我个人习惯,在创建设备之前,先把设备 配置文件 想清楚。为什么?因为设备一旦创建,配置文件虽然能改,但有些传输类型的切换会带来麻烦。我在项目中遇到过,一个客户把 MQTT 设备创建成了 HTTP 默认配置,结果后面改配置时,设备凭证还得重新生成,折腾了半天。

操作路径很简单:左侧菜单 → 实体设备 → 点右上角「+」号。

你会看到这样一个表单:

字段 说明 我的建议
设备名称 必填,唯一标识 建议用「项目_位置_功能」的命名法,比如「工厂A_车间1_温度传感器」
设备类型 可选,用于分组 按设备品类分,别按品牌分,后面做规则链时你就懂了
设备配置文件 核心!决定传输协议和数据规则 后面专门讲,这里先选默认

填完点「添加」,设备就生成了。嗯,就这么简单。但真正的工作才刚刚开始。

3.2 设备配置——这才是灵魂

设备配置,说白了就是告诉 ThingsBoard:「我这个设备该怎么通信、数据长什么样、要不要存历史记录」。

你点开刚才创建的设备,进入 设备配置 选项卡。这里你会看到几个关键设置:

  • 传输配置:选 MQTT、CoAP 还是 HTTP。我个人强烈推荐 MQTT,除非你有特殊原因。为什么?MQTT 是长连接,实时性好,而且支持 QoS,丢包率低。
  • 属性更新策略:设备上报属性时,是覆盖还是合并?我一般选合并,这样不会把其他属性冲掉。
  • 告警规则:这里可以预设一些告警条件,比如温度超过 50 度就触发。不过我更习惯在规则链里做,灵活度更高。
我的小技巧: 如果你有大量同类型设备,别一个个配。先配好一个「模板设备」,然后用「导出/导入」功能批量创建。我曾经一次性导入了 200 个传感器,省了至少半天时间。

3.3 设备凭证——设备进门的钥匙

设备凭证,你可以把它理解成设备的「身份证+密码」。没有它,设备连不上平台。

ThingsBoard 支持三种凭证类型:

  • 访问令牌(Access Token):最简单,就是一个字符串。适合快速测试。
  • X.509 证书:安全性最高,适合生产环境。
  • MQTT 基本凭证:用用户名+密码,适合已有认证体系的场景。

我个人习惯,开发阶段用访问令牌,上线前换成证书。为什么?因为令牌泄露了,别人就能冒充你的设备。我在一个项目里就吃过这个亏——测试环境用的令牌忘了改,结果被扫到了,数据被乱发了一通。

查看凭证的方法:设备详情页 → 凭证 选项卡。默认创建设备时,系统会自动生成一个访问令牌。你可以复制它,也可以点那个铅笔图标去修改。

注意: 修改凭证后,正在连接的设备会立刻断开。所以最好在设备离线时操作,或者提前通知设备端更新凭证。

3.4 设备连接测试——验证一切是否正常

设备创建好了,配置也设了,凭证也拿到了。接下来就是真刀真枪地测试连接。

我一般用 MQTT 客户端工具来测试,比如 MQTTX 或者 mosquitto_pub。这里我演示用命令行方式:

# 假设你的 ThingsBoard 地址是 demo.thingsboard.io
# 设备凭证是:YOUR_DEVICE_TOKEN

# 发布遥测数据
mosquitto_pub -d -h demo.thingsboard.io -p 1883 \
  -t "v1/devices/me/telemetry" \
  -u "YOUR_DEVICE_TOKEN" \
  -m '{"temperature": 25.5, "humidity": 60}'

# 发布属性数据
mosquitto_pub -d -h demo.thingsboard.io -p 1883 \
  -t "v1/devices/me/attributes" \
  -u "YOUR_DEVICE_TOKEN" \
  -m '{"firmware_version": "1.0.1"}'

如果一切正常,你会看到类似 Received PUBACK 的响应。然后回到 ThingsBoard 的设备页面,刷新一下,在「最新遥测」选项卡里就能看到你刚发的数据。

这里有个常见问题:数据发上去了,但页面看不到。为什么会这样?

嗯,多半是 时区 或者 时间戳 的问题。ThingsBoard 默认用 UTC 时间,如果你设备端发的时间戳是本地时间,没做转换,那数据可能被归到「未来」或「过去」的时间段里,默认视图不显示。我建议设备端统一用 UTC 时间戳,或者干脆不传时间戳,让平台自己打时间。

3.5 避坑指南——我踩过的几个雷

最后,分享几个我实际项目中遇到的坑,你遇到了可以少走弯路:

  • 凭证大小写敏感:访问令牌是区分大小写的。我曾经复制时多复制了一个空格,排查了半小时。
  • MQTT 主题别写错:遥测是 v1/devices/me/telemetry,属性是 v1/devices/me/attributes,别搞混了。我见过有人把遥测数据发到属性主题上,结果数据死活不显示。
  • 防火墙端口:MQTT 默认 1883,如果用了 TLS 就是 8883。记得在服务器安全组里放开。有一次客户说连不上,我一查,端口没开。
  • 设备配置文件的传输类型:如果你选了 MQTT,但设备实际用的是 HTTP,那数据是收不到的。创建前一定确认好。

好了,设备管理的基础操作就这些。你按这个流程走一遍,应该能顺利把第一个设备连上来。下一节我们聊设备配置文件的高级玩法,那个才是真正拉开差距的地方。