ESPHome + Server酱:ESP 设备告警推送到微信

效果:ESPHome 设备触发自动化时,通过 http_request 组件将告警消息推送到微信

前置条件

  • Server酱 SendKey:登录 sct.ftqq.com,在「SendKey」页面复制(30 秒获取教程)。如需推送到企业微信/钉钉/飞书群,请查看 通道对比
  • ESPHome 环境及已配网的 ESP 设备。
  • TLS 支持:ESP 走 HTTPS 需确保固件启用 TLS(推荐使用 esp-idf 框架,或在 Arduino 框架下配置 CA 证书)。

配置步骤

在 ESPHome 的 YAML 配置中添加 http_request 组件,并在自动化(on_...)里使用 http_request.post 调用 Server酱 API。

  1. 在配置中启用 http_request 组件:
http_request:
  1. 在您的自动化(如传感器触发、按钮按下等)中调用 http_request.post,body 需以 form 格式传递 titledesp。具体配置方法请查阅 ESPHome 官方文档。
# 示例:在自动化中调用 http_request.post
# on_...:
#   then:
#     - http_request.post:
#         url: "https://sctapi.ftqq.com/你的SENDKEY.send"
#         # body 需以 form 格式发送 title 和 desp
#         # 具体配置方法请查阅 ESPHome 官方文档

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

完整示例

以下为包含 http_request 组件与 API 调用的 YAML 片段,请根据实际触发条件调整并替换 你的SENDKEY 后使用:

http_request:

# 示例自动化(触发条件请根据实际硬件修改)
# on_...:
#   then:
#     - http_request.post:
#         url: "https://sctapi.ftqq.com/你的SENDKEY.send"
#         # body 需以 form 格式发送 title 和 desp
#         # 具体配置方法请查阅 ESPHome 官方文档

如需将传感器动态数值拼进 desp,可在自动化动作中使用 ESPHome 的模板语法拼接字符串(具体语法以 ESPHome 官方文档为准)。

常见问题

ESP 设备请求 HTTPS API 报错怎么办? ESP 走 HTTPS 需确保固件启用 TLS。推荐使用 esp-idf 框架,或在 Arduino 框架下配置 CA 证书,否则请求会被拒绝。

消息没收到怎么排查? 检查 ESPHome 日志中 HTTP 请求的返回状态码,确认 SendKey 是否正确。也可参考 常见问题与排查

发送频率和额度有什么限制? Server酱免费版每天有 5 条额度,每分钟上限 50 条。订阅会员目前特价最低 3 元/月,一天最多可发 1000 条(价格详情)。请避免在自动化中高频触发。

如何把传感器数值拼进消息正文?on_... 自动化动作中,可通过 ESPHome 的模板语法将传感器状态拼接到 desp 字段中(具体语法以 ESPHome 官方文档为准)。

相关集成

懒人方案:把这段话复制给你的 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 条结果摘要即可,批量任务合并成一条,不要每步都推。
请根据我当前的项目和场景直接写好代码/配置并验证。