ThingsBoard 场景联动
正文与配图来自原稿。案例:温度过高开风扇、光照不足开灯;含租户、设备、关联、MQTT 模拟与规则链验证。
0、需求

1、概述
当初有个兄弟请我帮他实现上述需求,做完后怕他操作不来,又写了这份文档;今天把这个场景发出来,方便大家学习思路。
2、登录账号
系统层(默认示例环境):
| 项 | 值 |
|---|---|
| 账号 | sysadmin@thingsboard.org |
| 密码 | sysadmin |

3、创建租户
新建租户:

新建租户管理员账号并进入:

创建租户管理员:


4、激活账号

租户层示例账号(按你环境实际激活结果为准):
| 项 | 值 |
|---|---|
| 账号 | tenant@thingsboard.org |
| 密码 | tenant |
进入租户层:

5、创建设备配置
按需求,设备配置两类:传感器、执行器(名称用英文):
| 配置名 | 含义 |
|---|---|
sensor | 传感器 |
executor | 执行器 |
创建设备配置:

同理创建执行器:

假设设备都用 MQTT 上报,传输配置保持默认 MQTT 即可。
6、创建设备
需求中的设备:
- 传感器:温度、湿度、光照
- 执行器:灯、风扇
创建温度传感器:

湿度传感器:

光照传感器:

灯:

风扇:

注意:设备配置按上面规划选择;凭据(Token) 用系统默认生成即可,后续 MQTT 模拟连接需要这个 Token。
全部设备:

7、绑定关联关系
联动需要关联关系,才能按关系找到执行器并下发控制。
温度传感器 ↔ 风扇:

光照传感器 ↔ 灯:

8、规划设备上报数据
所有模拟上报走 MQTT,JSON 字段约定如下。
温度传感器 — temperature:
{
"temperature": 90
}湿度传感器 — humidity:
{
"humidity": 20
}光照传感器 — beam:
{
"beam": 1000
}灯 — openStatus(true 开 / false 关),currentLight(亮度;关灯可为 0):
{
"openStatus": false,
"currentLight": 20
}风扇 — openStatus:
{
"openStatus": false
}下发打开风扇:
{
"method": "0604",
"params": {
"openStatus": true
},
"timeout": 30000
}下发开灯并指定亮度(改 currentLight 即可):
{
"method": "0604",
"params": {
"openStatus": true,
"currentLight": 100
},
"timeout": 30000
}9、创建规则引擎
9.1、温度超过 60℃:触发告警,同时开风扇
先连接温度传感器模拟设备:

再连接风扇模拟设备:

连接时需新开窗口才能同时开多个客户端:

风扇要收控制指令,需订阅:
v1/devices/me/rpc/request/+

测试: 发送温度 70:

遥测中有数据:

规则链处理(超温 → 告警 → 经关联找到风扇 → RPC):

风扇收到订阅到的控制命令:

风扇上报遥测(如 openStatus):

9.2、光照小于 1000 lux:自动开灯
规则链实现:

创建 / 连接光照传感器模拟设备:


灯模拟设备:

灯同样订阅 RPC:
v1/devices/me/rpc/request/+

测试时灯也要另开窗口保持在线:

光照传感器上报数据:

查看光照遥测:

灯收到开灯指令并上报:

查看灯的遥测:

10、总结
模拟设备指令与连接参数汇总:

| 设备 | 要点 |
|---|---|
| 温度传感器 | 上报 {"temperature":90} |
| 风扇 | 订阅 v1/devices/me/rpc/request/+;状态如 {"openStatus":false} |
| 光照传感器 | 上报 {"beam":1000} |
| 灯 | 订阅 v1/devices/me/rpc/request/+;状态含 openStatus、currentLight |
补充(辅)
- 规则链里常用:脚本判断阈值 → check relation / change originator → RPC call request;告警可用 Create Alarm。节点细节见 规则节点总览、check relation。
- 执行器必须在线且已订阅 RPC 主题,否则链路走通也看不到设备侧命令。
- 默认账号密码仅用于演示环境,生产务必修改。
