# 天气插件使用指南 ## 概述 天气插件 `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或联系开发团队。*