# mqttwarn接入 Server酱：把 MQTT 主题消息转成微信通知（2026 教程）

> 通过 mqttwarn 订阅 MQTT 主题，使用 Apprise schan:// 协议将传感器越界、设备事件等消息自动推送到微信，mqttwarn.ini 配置即用。

- 网页版：https://sct.ftqq.com/docs/integrations/mqttwarn/
- 更新日期：2026-07-17

# mqttwarn + Server酱：把 MQTT 主题消息转成微信通知

> 效果：MQTT 主题收到消息后，mqttwarn 自动通过 Server酱 把内容推送到你的微信。

## 前置条件

- **Server酱 SendKey**：登录 sct.ftqq.com，在「SendKey」页面复制（[30 秒获取教程](https://sct.ftqq.com/docs/getting-started/sendkey/)）。schan:// 协议支持 SCT 开头的 SendKey。
- **mqttwarn** 已安装并正常运行，能连接到你的 MQTT broker。
- **Apprise** 已安装（`pip install apprise`），mqttwarn 通过 apprise 服务插件对接 Server酱。

## 配置步骤

**1. 在 mqttwarn.ini 中添加 apprise target**

```ini
[config:apprise]
targets = {
    'serverchan': {
        'baseuri': 'schan://你的SENDKEY'
    }
  }
```

将 `你的SENDKEY` 替换为实际 SendKey（SCT 开头）。`schan://` 是 Apprise 中 Server酱的专用协议，底层调用 `https://sctapi.ftqq.com/你的SENDKEY.send`。

**2. 将 MQTT 主题映射到该 target**

```ini
[home/sensor/alert]
targets = apprise:serverchan
```

当 MQTT 主题 `home/sensor/alert` 收到消息时，mqttwarn 会通过 Server酱 推送到微信。把段名换成你实际要监听的 MQTT 主题即可。

**3. 命令行自测**

在配置 mqttwarn 之前，先用 apprise 命令行工具验证 SendKey 是否可用：

```bash
pip install apprise && apprise -t "测试" -b "正文" "schan://你的SENDKEY"
```

命令行能收到微信通知，说明 SendKey 和 schan:// 协议工作正常。

**4. 重启 mqttwarn**

重启 mqttwarn 服务使配置生效，向对应 MQTT 主题发送一条测试消息，检查微信是否收到通知。

## 完整示例

在 mqttwarn.ini 中添加以下配置（确保已正确配置 MQTT broker 连接）：

```ini
[config:apprise]
targets = {
    'serverchan': {
        'baseuri': 'schan://你的SENDKEY'
    }
  }

[home/sensor/alert]
targets = apprise:serverchan
```

如需同时推送到企业微信、钉钉或飞书群，参阅[通道配置说明](https://sct.ftqq.com/docs/getting-started/channels/)。通用 Apprise 接法详见 [Apprise 接入 Server酱](https://sct.ftqq.com/docs/integrations/apprise/)。

## 常见问题

**每天能发多少条消息？**

免费额度为每天 5 条，每分钟上限 50 条。订阅会员目前特价最低 3 元/月，一天最多可发 1000 条（[价格详情](https://sct.ftqq.com/subscribe)）。

**配置后没有收到微信通知怎么办？**

先用 `apprise -t "测试" -b "正文" "schan://你的SENDKEY"` 排查 SendKey 是否正确。命令行能收到但 mqttwarn 不能，则检查 mqttwarn.ini 缩进和 target 名称是否匹配。更多排查方法见[常见问题与排查](https://sct.ftqq.com/docs/getting-started/faq/)。

**MQTT 消息频率很高会触发限制吗？**

Server酱 每分钟上限 50 条，请合理控制发送频率，避免触发限制。传感器上报频率高时，建议在 mqttwarn 中做过滤（如只在数值越界时触发），避免频繁推送。

**sctp 开头的 SendKey 能用 schan:// 吗？**

schan:// 协议对接 Server酱Turbo，SCT 开头的 SendKey 直接可用。sctp 开头的 SendKey 请参考 Apprise 文档确认支持情况。

## 相关集成

- [Python 脚本推送](https://sct.ftqq.com/docs/integrations/python/) — 用 Python 代码直接调用 Server酱 API
- [Uptime Kuma 宕机告警](https://sct.ftqq.com/docs/integrations/uptime-kuma/) — 服务可用性监控推送到微信
- [青龙面板任务通知](https://sct.ftqq.com/docs/integrations/qinglong/) — 定时任务执行结果推送


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

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

```text
请帮我把 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 条结果摘要即可，批量任务合并成一条，不要每步都推。
请根据我当前的项目和场景直接写好代码/配置并验证。
```

