Files
xiaozhi-esp32-server/docs/weather-integration.md
T

293 lines
7.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 天气插件使用指南
## 概述
天气插件 `get_weather` 是小智ESP32语音助手的核心功能之一,支持通过语音查询全国各地的天气信息。插件基于和风天气API,提供实时天气和7天天气预报功能。
## 功能特性
- **智能位置识别**:根据用户IP自动识别所在城市
- **多地点查询**:支持全国各城市、地区天气查询
- **详细天气信息**:包含当前天气、温度、湿度、风力等详细参数
- **7天预报**:提供未来一周的天气趋势
- **缓存机制**:优化查询速度,减少API调用
- **智能解析**:支持省份、城市、地标等多种地点表达方式
## 配置方式
### 1. 通过Web管理界面配置(推荐)
1. 登录智控台
2. 进入"角色配置"页面
3. 选择要配置的智能体
4. 点击"编辑功能"按钮
5. 在右侧参数配置区域找到"天气查询"插件
6. 配置相关参数(天气插件API密钥、默认查询城市等)
### 2. 配置文件方式
`config.yaml` 中配置:
```yaml
plugins:
get_weather:
api_host: "你的和风天气API主机地址" # 和风天气API主机地址
api_key: "你的和风天气API密钥" # 必填:API密钥
default_location: "广州" # 默认查询城市
```
## API Key 申请指南
### 1. 注册和风天气账号
1. 访问 [和风天气控制台](https://console.qweather.com/)
2. 注册账号并完成邮箱验证
3. 登录控制台
### 2. 创建应用获取API Key
1. 进入控制台后,点击右侧"项目管理" → "创建项目"
2. 填写项目信息:
- **项目名称**:如"小智语音助手"
3. 点击保存
4. 创建完成后,在该项目中点击"创建凭据"
5. 填写凭据信息:
- **凭据名称**:如"小智语音助手"
- **身份认证方式**:选择"API Key"
6. 点击保存
7. 在凭据中复制API Key到配置文件中
### 3. 获取API Host
1. 在控制台中点击"设置" → "API Host"
2. 查看分配给你的专属API Host地址
3. 将地址复制到配置文件的 `api_host` 字段
### 4. 额度说明
- **免费额度**:每天1000次免费调用
- **付费计划**:超出免费额度后按调用次数计费
- **建议**:个人使用免费额度通常足够
## 使用方法
### 基本语音指令
#### 1. 查询当前位置天气
```
用户:天气怎么样?
用户:今天天气如何?
用户:现在天气情况
```
#### 2. 查询指定城市天气
```
用户:北京天气
用户:上海的天气怎么样?
用户:查询杭州天气
用户:广州今天天气如何?
```
#### 3. 查询省份天气(自动使用省会城市)
```
用户:山东天气
用户:浙江省天气怎么样?
用户:四川的天气
```
#### 4. 查询地标或区域天气
```
用户:西湖天气 # 自动解析为杭州
用户:外滩天气 # 自动解析为上海
用户:天安门天气 # 自动解析为北京
```
### 返回信息格式
插件会返回以下信息:
```
您查询的位置是:北京
当前天气: 晴,26°C
详细参数:
· 湿度: 45%
· 风力: 3级
· 气压: 1013hPa
· 能见度: 10km
未来7天预报:
今天: 晴,气温 18°C~28°C
明天: 多云,气温 16°C~25°C
后天: 小雨,气温 14°C~22°C
周四: 阴,气温 15°C~20°C
周五: 晴,气温 17°C~24°C
周六: 多云,气温 19°C~26°C
周日: 晴,气温 21°C~28°C
(如需某一天的具体天气,请告诉我日期)
```
## 支持的天气类型
插件支持以下天气现象的识别和显示:
### 晴天类型
-
- 多云
- 少云
- 晴间多云
### 阴雨类型
-
- 阵雨、强阵雨
- 雷阵雨、强雷阵雨
- 雷阵雨伴有冰雹
- 小雨、中雨、大雨
- 极端降雨、暴雨、大暴雨、特大暴雨
- 毛毛雨/细雨、冻雨
### 雪天类型
- 小雪、中雪、大雪、暴雪
- 雨夹雪、雨雪天气
- 阵雨夹雪、阵雪
### 特殊天气
- 薄雾、雾、浓雾
- 霾、中度霾、重度霾、严重霾
- 扬沙、浮尘、沙尘暴、强沙尘暴
## 智能位置解析
### 1. IP地址定位
- 自动获取用户设备IP地址
- 解析IP对应的城市信息
- 缓存IP位置信息,提高响应速度
### 2. 地点名称智能匹配
- **城市名**:直接查询该城市天气
- **省份名**:自动使用省会城市
- **地标名**:解析到所在城市
- **区县名**:解析到所属市级城市
### 3. 默认位置机制
- 当无法识别用户位置时,使用配置的默认城市
- 建议设置为用户常居住的城市
## 缓存机制
### 1. IP位置缓存
- 缓存用户IP对应的城市信息
- 避免重复调用IP定位API
- 提高查询响应速度
### 2. 天气数据缓存
- 缓存完整的天气报告
- 缓存时间:通常为10-30分钟
- 减少API调用次数,节省配额
## 故障排除
### 1. 查询失败
**现象**:提示"未找到相关的城市"
**原因及解决方案**
- 检查城市名称拼写是否正确
- 尝试使用标准城市名称(如"北京"而非"北京市"
- 检查API Key是否有效
- 确认网络连接正常
### 2. API调用超限
**现象**:返回API错误信息
**解决方案**
- 检查和风天气控制台的配额使用情况
- 考虑升级到付费计划
- 优化缓存策略,减少API调用
### 3. 网络连接问题
**现象**:查询超时或连接失败
**解决方案**
- 检查服务器网络连接
- 确认和风天气API服务状态
- 检查防火墙设置
### 4. 配置问题
**现象**:插件无法正常工作
**解决方案**
```yaml
# 检查配置格式是否正确
plugins:
get_weather:
api_host: "你的API主机地址"
api_key: "你的API密钥"
default_location: "默认城市"
```
## 高级配置
### 1. 自定义缓存时间
修改缓存管理器配置:
```python
# 在 core/utils/cache/manager.py 中调整缓存时间
WEATHER_CACHE_DURATION = 1800 # 30分钟
```
### 2. 多语言支持
插件支持多语言查询:
```yaml
# 在函数调用时指定语言
get_weather(location="北京", lang="en_US") # 英文
get_weather(location="北京", lang="ja_JP") # 日文
```
### 3. 自定义默认位置
根据用户群体设置合适的默认城市:
```yaml
plugins:
get_weather:
default_location: "上海" # 针对华东用户
# default_location: "深圳" # 针对华南用户
# default_location: "成都" # 针对西南用户
```
## 注意事项
1. **API配额管理**:合理使用免费配额,避免频繁查询
2. **地点准确性**:使用标准的城市名称获得最准确的结果
3. **网络依赖**:功能依赖网络连接,确保服务器能访问外网
4. **隐私保护**:IP定位信息仅用于天气查询,不会存储个人隐私
5. **数据准确性**:天气数据来源于和风天气,准确性以官方为准
## 更新记录
- **v1.0.0**:基础天气查询功能
- **v1.1.0**:增加IP自动定位功能
- **v1.2.0**:优化缓存机制,提升查询速度
- **v1.3.0**:支持7天天气预报
- **v1.4.0**:智能地点解析,支持地标查询
## 相关链接
- [和风天气官网](https://www.qweather.com/)
- [和风天气开发文档](https://dev.qweather.com/)
- [API Key申请](https://console.qweather.com/#/apps/create-key/over)
- [项目GitHub](https://github.com/xinnan-tech/xiaozhi-esp32-server)
---
*如有问题或建议,请在项目GitHub仓库提交Issue或联系开发团队。*