EMQX + Server酱:MQTT 消息推送到微信

效果:EMQX 规则引擎匹配到指定 MQTT 消息时,自动推送到微信

前置条件

  • 获取 Server酱 SendKey:30 秒获取教程
  • 已部署运行 EMQX,且有客户端正在向其发送 MQTT 消息

配置步骤

在 EMQX Dashboard 中,通过数据集成创建 HTTP 桥接与规则,将消息路由到 Server酱。

1. 创建 HTTP 桥接

进入 数据集成 → 创建 HTTP 桥接(Webhook),填写以下配置:

  • 请求方法:POST
  • URLhttps://sctapi.ftqq.com/你的SENDKEY.send
  • Content-Typeapplication/x-www-form-urlencoded
  • 请求体(Body)
title=EMQX告警&desp=${payload}

(如果使用 Server酱³,URL 端点改为 https://你的UID.push.ft07.com/send/你的SENDKEY.send,UID 取自 sctp 后的数字)

2. 创建规则

创建一条规则,从目标 Topic 提取数据并关联到上一步的桥接。

  • SQL 语句
SELECT payload FROM "your/topic"

"your/topic" 替换为你实际需要监听的 MQTT 主题。payload 变量将作为消息正文传递给桥接的 ${payload}

  • 动作:在规则详情中添加动作,选择刚刚创建的 HTTP 桥接。

配置完成后,当 your/topic 收到消息时,EMQX 会自动向 Server酱发送请求。

完整示例

以下是一个简单的配置示例,将 device/alert 主题的消息推送到微信。

规则 SQL

SELECT payload FROM "device/alert"

桥接 Body 模板

title=设备告警&desp=${payload}

常见问题

免费额度是多少?

免费额度为每天 5 条。订阅会员目前特价最低 3 元/月,一天最多可发 1000 条(价格详情)。

配置后消息没收到?

检查 EMQX 规则引擎的触发记录和错误日志(具体查看方式请参考 EMQX 官方文档)。同时参考 常见问题与排查 检查 SendKey 是否正确。

发送频率有限制吗?

API 每分钟上限为 50 条。如果 MQTT 消息频率极高,建议在规则 SQL 中增加条件过滤,或在业务端做聚合,避免触发频率限制。

相关集成

懒人方案:把这段话复制给你的 AI 助手

把下面这段文字原样粘贴给 Claude Code、Cursor 或任何 AI 编程助手,它就会替你完成 Server酱 的接入:

请帮我把 Server酱 微信通知接入到我当前的项目/工具中:
1. API:POST https://sctapi.ftqq.com/{SendKey}.send,参数 title(必填,不能含换行)、desp(正文,支持 Markdown,可选);成功时返回 JSON 的 code 为 0。
2. 如果我的 SendKey 以 sctp 开头,则改用 https://{uid}.push.ft07.com/send/{SendKey}.send,uid 是 SendKey 中 sctp 与 t 之间的数字。
3. SendKey 从环境变量 SERVERCHAN_SENDKEY 读取;如果没有,提醒我到 https://sct.ftqq.com 免费获取(每天 5 条额度)。
4. 安全要求:不要把 SendKey 硬编码进代码、不要打印到日志、不要提交到 git。
5. 频率约定:任务结束发 1 条结果摘要即可,批量任务合并成一条,不要每步都推。
请根据我当前的项目和场景直接写好代码/配置并验证。