天气预报降雨提醒
自动检测当前位置未来1小时内是否会有降雨,并在有雨时发出提醒。
触发条件
- 用户主动调用:
/weather-rain-alert - 模型可根据对话上下文自动判断是否需要调用(如用户问"会不会下雨"、"带伞吗"等)
工作流程
步骤 1:获取位置信息
按优先级尝试:
1. 用户手动指定的经纬度(通过参数 --lat 和 --lon 传入)
2. 通过 IP 自动定位(调用 ip-api.com 免费 API)
3. 如果以上均失败,提示用户手动提供位置
步骤 2:获取天气预报
调用 Open-Meteo 免费天气 API(无需 API Key),获取未来1小时逐小时预报:
- precipitation:降水量(mm)
- precipitation_probability:降水概率(%)
- rain:降雨量(mm)
- showers:阵雨量(mm)
步骤 3:判断是否有雨
满足以下任一条件即判定为"有雨":
- 降水概率 >= 50%
- 降水量 > 0.1mm
步骤 4:发出提醒
如果有雨,提醒包含:
- ⚠️ 降雨提醒摘要
- 📍 当前位置
- 🌧️ 预计降雨时间、降水量、概率
- 💡 建议(带伞、调整出行等)
如果无雨:
- ✅ 告知用户未来1小时无降雨风险
使用方式
命令行直接调用
# 自动定位
python scripts/check-rain.py
# 手动指定位置(深圳示例)
python scripts/check-rain.py --lat 22.5431 --lon 114.0579
# 指定城市名称
python scripts/check-rain.py --city "北京"
在 Skill 中调用
当用户触发此 skill 时,执行:
python <skill_dir>/scripts/check-rain.py [--lat <lat>] [--lon <lon>] [--city <city>]
解析脚本输出的 JSON 结果,根据 will_rain 字段判断是否需要提醒用户。
输出格式
脚本输出为 JSON:
{
"will_rain": true,
"location": {
"city": "深圳",
"country": "中国",
"lat": 22.5431,
"lon": 114.0579
},
"forecast": {
"time": "2026-06-11T16:00",
"precipitation": 2.5,
"precipitation_probability": 70,
"rain": 2.0,
"showers": 0.5
},
"message": "未来1小时内有雨!降水量约 2.5mm,降水概率 70%。建议携带雨具。"
}
依赖
- Python 3.7+
requests库:pip install requests
注意事项
- 使用 Open-Meteo 免费 API,无需注册和 API Key
- 天气数据来源于全球气象模型 GFS/ECMWF
- IP 定位精度有限,建议在移动设备上使用 GPS 定位后手动传入坐标
- 提醒仅基于未来1小时的预报数据