马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
本帖最后由 蓝小白 于 2026-2-9 09:49 编辑
一、环境准备
1.1 安装 OpenSSL(Windows 用户)
Mac/Linux 系统自带,Windows 需手动安装:2. 安装时选择 "The Windows system directory"(添加到环境变量) 3. 重启 CMD,输入 openssl version 验证是否安装成功 1.2 生成 Ed25519 密钥对
打开 CMD 或终端执行: - openssl genpkey -algorithm ED25519 -out ed25519-private.pem && openssl pkey -pubout -in ed25519-private.pem > ed25519-public.pem
复制代码查看生成的密钥: - type ed25519-public.pem # 公钥(上传和风天气用)
- type ed25519-private.pem # 私钥(青龙环境变量用)
复制代码正确格式示例: - -----BEGIN PUBLIC KEY-----
- MCowBQY****0G46USI6mCIIMKe7VoHMxmUFHMjqCMa2+oTTYSmbA=
- -----END PUBLIC KEY-----
复制代码 二、和风天气 JWT 配置
2.1 注册与创建项目
2.项目管理 → 创建项目 → 输入项目名称 → 保存 3.选择下方 创建凭据 → 输入凭据名称 → 身份认证方式选择 → json web令牌 → 上传公钥 → 记录公钥和私钥 → 保存 4.具体流程参照下方2.2添加 JWT 凭据 2.2 添加 JWT 凭据
1. 进入项目详情 → 添加凭据 2. 身份认证方式:选择 JSON Web Token 3. 凭据名称:如"青龙面板监控" 4. 上传公钥:将 ed25519-public.pem 内容完整粘贴(包含 -----BEGIN/END PUBLIC KEY-----) 5. 保存后记录以下信息: 凭据 ID(KID):如 ABCDE12345 项目 ID(Project ID):页面顶部显示,如 FGHIJ67890 2.3 获取监控坐标
访问网络搜索某城市经纬度,小数点后保留 2 位。 常用城市坐标: l 北京:39.90, 116.41 l 上海:31.23, 121.47 l 广州:23.13, 113.26 l 深圳:22.54, 114.06 l 成都:30.67, 104.06 ⚠️ 注意:和风天气 API 仅支持部分城市,偏远地区可能返回 400 错误,请使用大城市坐标。 三、企业微信机器人配置
3.1 创建机器人
1. 电脑端打开企业微信 → 进入目标群聊 2. 右键群聊 → 添加群机器人 → 新建机器人 3. 填写机器人名称(如"天气预警助手") 3.2 获取 Webhook Key
创建成功后复制 Webhook 地址: - https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=693axxx6-7xxx-4bc4-97a0-0ecxxxxx
复制代码后面的部分(不含 key=)即为 WECHAT_KEY 3.3 通知方式说明
l 普通模式(默认):Markdown 格式,带颜色(蓝/黄/橙/红),不支持 @所有人 l @所有人模式:设置 WECHAT_MENTION_ALL=true,纯文本可 @所有人,无颜色格式 四、青龙面板部署(【docker compose】青龙面板部署脚本)
4.1 安装 Python 依赖(关键步骤)
进入青龙面板 → 【依赖管理】 → 【Python3】 → 分别添加以下 3 个依赖: - requests
- PyJWT
- cryptography
复制代码依赖名 | 作用 | 是否必须 | | | | | | | | PyJWT 的底层依赖,提供 Ed25519 签名算法支持 | |
特别注意:cryptography 必须安装,否则 PyJWT 无法使用 Ed25519 算法,会报错 algorithm EdDSA could not be found。 验证依赖是否安装成功
在 【脚本管理】 新建测试文件 test_deps.py,粘贴: - import requests
- import jwt
- import cryptography
- print("✅ requests:", requests.__version__)
- print("✅ PyJWT:", jwt.__version__)
- print("✅ cryptography:", cryptography.__version__)
- print("✅ 所有依赖正常,可以部署主脚本!")
复制代码运行后若显示版本号,说明依赖就绪。 4.2 上传主脚本
1. 【脚本管理】 → 【+】 → 新建文件 weather_alert_wechat.py 4.3 配置环境变量
进入 【环境变量】,添加以下变量: 变量名 | 示例值 | 说明 | | -----BEGIN PRIVATE KEY----- MC4CAQ... -----END PRIVATE KEY----- | | | | | | | | | | | | | | | | | | | | 补充漏的环境变量: 变量名:QWEATHER_HOST 说明:你的专属域名
私钥格式处理: - -----BEGIN PRIVATE KEY-----
- MC4CAQAwBQYDK2VwBCIE...
- -----END PRIVATE KEY-----
复制代码 4.4 创建定时任务
进入 【定时任务】: l 名称:天气预警监控 l 命令:task weather_alert_wechat.py l 定时规则:*/10 * * * *(每10分钟,推荐) ⚠️ 频率限制: l 和风天气开发版:1000 次/天 l 企业微信:20 条/分钟 建议间隔 5-10 分钟,既及时又避免超限。 五、验证与排错
5.1 手动运行测试
点击定时任务的 【运行】 按钮,查看日志: 成功日志示例: - 1 🕐 当前时间:2026-02-06 15:30:00
- 2 📍 监控坐标:39.90, 116.41
- 3 👥 @全体成员:关闭
- 4 🧹 清理 2 条过期记录
- 5 ✅ JWT 生成成功
- 6 ✅ 推送成功: 东城区气象台发布寒潮蓝色预警...
- 7 🎉 完成:新推1条,跳过0条</font>
复制代码 5.2 常见错误处理
错误 | 原因 | 解决 | ❌ JWT 生成失败: algorithm EdDSA could not be found | | | | | | | KID 或 Project ID 错误,或私钥与公钥不匹配 | | | | | 5.3 防重复机制验证
l 首次推送:数据库新建记录,企业微信收到消息 l 重复运行:检测 id 存在且未过期,显示 ⏭️ 已推送过,不再发送 l 过期后:自动清理数据库,新的相同 id 预警会再次推送 六、安全与维护
1. 私钥保密:ed25519-private.pem 文件备份到加密存储后,删除本地明文副本 2. 定期更新:JWT 每次自动刷新(15分钟有效期),无需手动干预 3. 坐标调整:修改 LAT 和 LON 环境变量即可更换监控城市 部署完成! 现在当有天气预警时,企业微信群会自动收到 Markdown 格式的推送消息。
参考内容:
|