如何在ThingsBoard IoT Gateway中从MQTT主题提取遥测Key?
解决ThingsBoard IoT Gateway从MQTT主题提取遥测Key的问题
问题背景
电气测量设备通过MQTT发布数据,主题格式为measuring/[site]/[param],Payload是纯文本数值(如230.0)。使用ThingsBoard IoT Gateway 3.7.0对接平台3.9.1时,配置了主题过滤器measuring/site1/+,Payload类型设为Bytes,值表达式[:],但无法从主题提取param作为遥测Key,直接写正则会导致Key显示为正则字符串本身。
正确配置方法
ThingsBoard IoT Gateway的Data Mapping字段不支持直接用正则捕获组提取主题内容,需使用内置的主题占位符或表达式语言:
方法1:使用主题层级占位符
主题measuring/site1/L1-Voltage按/分割后有3个层级(索引从0开始):
- 层级0:
measuring - 层级1:
site1 - 层级2:
L1-Voltage
在Data Mapping的Key字段中填写:
${topicPart(2)}
该占位符会直接提取主题第3个层级的内容作为遥测Key。
方法2:使用表达式语言解析主题
如果需要更灵活的处理,可使用表达式语言分割主题字符串:
在Key字段中填写:
#{split(topic, '/')[2]}
split(topic, '/')将主题按/拆分为数组,[2]取数组第3个元素(即param部分)。
验证配置
- 保存Gateway配置并重启服务
- 发送测试MQTT消息(如主题
measuring/site1/Freq,Payload50.0) - 在ThingsBoard平台对应设备的遥测数据中,即可看到Key为
Freq,值为50.0的条目
内容的提问来源于stack exchange,提问作者ZioTibia81
相关产品推荐
相关产品推荐

