ThingsBoard + pushplus:IoT 告警推到微信
效果:设备离线、阈值越限或告警产生时,规则链里的 REST API Call 节点向 pushplus POST JSON,微信收到告警。
前置条件
- 一个 pushplus token(官网扫码获取)
- ThingsBoard CE / PE,有规则链编辑权限
配置步骤
- Rule chains 打开要处理告警的规则链(常见是 Root,或专门的 Alarm 链)。
- 从左侧拖入 rest api call 节点,接到
Alarm Created/ 过滤节点之后。 - 节点配置:
- Endpoint URL:
https://www.pushplus.plus/send - Request method:
POST - Headers:
Content-Type=application/json - Body:
- Endpoint URL:
{
"token": "你的token",
"title": "ThingsBoard ${alarmType}",
"content": "${originatorName} ${alarmSeverity}",
"template": "txt"
}
- 占位符按 ThingsBoard 模板规则填写:元数据用
${key},消息体字段用$[key]。不同版本字段名可能是alarmType、severity、deviceName等,以节点调试里看到的为准。 - 保存规则链。用设备遥测或「Create alarm」打一条测试告警。
token 建议放在设备共享属性或规则链元数据里再引用,避免到处硬编码。
不要把 ThingsBoard 默认的整段告警 JSON 直接 POST 到 /send:那不会自动变成 content。必须按上面组成 token / title / content。
验证
curl -X POST "https://www.pushplus.plus/send" \
-H "Content-Type: application/json" \
-d '{"token":"你的token","title":"ThingsBoard 配置测试","content":"token 可用","template":"markdown"}'
返回 JSON 的 code 为 200 后,再看规则链节点的调试记录是否也是 200。
常见问题
节点失败? 确认 ThingsBoard 所在网络能访问 www.pushplus.plus,Body 是合法 JSON,content 非空。
占位符没替换? 字段不在当前消息或 metadata 里。先加一个 script 节点 return {msg: msg, metadata: metadata, msgType: msgType}; 打印,再改 Body。
告警风暴? 在规则链里做去重、持续时间判断,或只在 Alarm Created 而不在每次遥测时调用。