你是一名中国气候专家兼城市园林灌溉工程师,精通:
| 改进项 | 说明 |
|---|---|
| -------- | ------ |
| 跨平台支持 | 移除Windows专属代码,统一UTF-8适配,macOS/Linux可直接运行 |
| 鸿蒙/PWA兼容 | Web驾驶舱支持PWA安装(manifest.json + Service Worker),鸿蒙/安卓/iOS/桌面均可作为桌面应用使用 |
| 统一错误处理 | 新建 scripts/common.py 通用模块,[ERROR]/[WARN]/[INFO]/[FATAL] 统一格式输出到 stderr/stdout |
| 知识库扩展 | 新增 references/irrigation_regulations.md(国标/各省定额/节水条例),新增 references/seasonal_ops.md(封冻水/春灌/梅雨季/高温应急/土壤入渗率) |
| BUG修复 | 修复 route_optimizer.py 经纬度键名映射颠倒(经度↔纬度),修复 calculate_et0.py 静默吞没异常,修复硬编码 "python" 为 sys.executable |
| 反模式清理 | 移除4处重复 load_config() 定义,消除 except Exception: pass 裸异常,统一 sys.exit 退出码语义 |
无需注册 API Key,3 种方式均可验证:
| 方式 | 路径 | 说明 |
|---|---|---|
| ------ | ------ | ------ |
| Web 演示页 | 打开 output/demo.html | 零配置,预置 15 天真实灌溉数据,KPI + 图表 + 日历全展示 |
| 对话问答 | 在 WorkBuddy 中说「润城,北京今天需要浇水吗」 | Skill 自动触发,无 Key 时降级为模拟模式 |
| 命令行 | python scripts/run.py --skip-import | 全链路 7 步跑通,输出灌溉计划 |
> demo.html 为自包含页面,无需 API Key、无需安装任何依赖,评委可直接双击打开体验完整功能(需联网加载 Chart.js 图表库 CDN)。
> 本地 config.local.json 保存真实配置备份,切勿提交到公开仓库。
| 气候带 | 纬度范围 | 代表城市 | 年降水(mm) | 灌溉特征 |
|---|---|---|---|---|
| -------- | :------: | --------- | :---------: | --------- |
| 寒温带 | ≥48°N | 漠河、根河 | 400-500 | 灌溉季5-9月,冬季长停灌 |
| 中温带 | 42-48°N | 哈尔滨、长春、东乌旗 | 300-700 | 灌溉季4-10月,防风干 |
| 暖温带 | 35-42°N | 北京、西安、济南 | 500-900 | 灌溉季3-11月,春旱明显 |
| 北亚热带 | 30-35°N | 武汉、成都、杭州 | 800-1400 | 灌溉季3-11月,梅雨调节 |
| 中亚热带 | 25-30°N | 长沙、贵阳、福州 | 1200-1800 | 雨季4-9月,补水为主 |
| 南亚热带 | 20-25°N | 广州、南宁 | 1500-2000 | 雨季3-10月,少灌补灌 |
| 热带 | <20°N | 海口、三亚 | 1500-2500 | 全年可灌,旱季11-4月 |
| 高原气候 | 海拔>3000m | 拉萨、西宁 | 300-600 | 灌溉季5-9月,温差大 |
> 程序通过 config.json 中的 climate_zone 字段识别,也可根据经纬度和海拔自动推断。
scripts/config.json){
"qweather_api_key": "你的和风天气API密钥",
"location_id": "101010100",
"city_name": "北京市海淀区",
"latitude": 39.9,
"longitude": 116.4,
"climate_zone": "暖温带",
"soil_type": "壤土",
"annual_avg_rainfall_mm": 600
}
运行一键导入(CSV模板见 assets/ 目录):
python scripts/data_importer.py --zones your_zones.csv --vehicles your_vehicles.csv --water your_sources.csv
python scripts/fetch_weather.py
输出:15天逐日预报 JSON(温度、湿度、风速、降雨量)
python scripts/calculate_et0.py
输出:15天逐日灌溉计划表 + JSON
python scripts/route_optimizer.py
输出:每辆车的浇水顺序和预计行驶距离
每天浇完后记录实际执行数据,形成"计划→执行→复盘"闭环:
# 全部按计划完成
python scripts/log_irrigation.py --all-completed
# 单个地块记录(如西环路少浇了200升)
python scripts/log_irrigation.py --zone Z003 --actual 7500 --notes "土壤湿度尚可,减量"
# 跳过某地块(如下雨)
python scripts/log_irrigation.py --skip Z001 --reason "降雨后湿土"
# 查看今日对比
python scripts/log_irrigation.py --summary
输出:执行对比表 + irrigation_log.json(持久化存储)
# 近15天复盘
python scripts/review.py
# 本周复盘
python scripts/review.py --week
# 导出报告文件
python scripts/review.py --export my_report.md
报告包含:
ET₀(mm/天) = 0.0023 × (Tmean + 17.8) × √(Tmax - Tmin) × Ra × 0.408
其中:
Tmean = (Tmax + Tmin) / 2Ra = 大气顶层辐射(程序根据纬度和月份自动从全国Ra表查取)植物实际日需水:
ETc(mm/天) = ET₀ × Kc(作物系数)
土壤修正:
净需水(升) = ETc(mm) × 面积(m²) × 土壤修正系数
土壤修正系数:
| 沙土 | 沙壤土 | 壤土 | 黄土 | 红壤 | 黑土 | 黏土 |
|---|---|---|---|---|---|---|
| :---: | :-----: | :---: | :---: | :---: | :---: | :---: |
| 1.30 | 1.10 | 1.00 | 1.05 | 0.95 | 0.90 | 0.80 |
| 规则 | 条件 | 动作 |
|---|---|---|
| ------ | ------ | ------ |
| 冬季停灌 | 当前季节=冬 | 停止浇水 |
| 防冻停灌 | 日最高温 < 5°C | 停止浇水 |
| 等雨停灌 | 预报降雨 ≥ 10mm | 当日停浇 |
| 补充浇水 | 预报降雨 2~10mm | 减量30-70% |
| 高温预警 | 日最高温 > 35°C + 晴天 | 加量30% |
| 大风加量 | 风速 > 10.8m/s + 沙土/黄土 | 加量15% |
| 多雨区减量 | 年降水 > 1200mm | 按比例减量 |
| 高蒸发预警 | 连续3天晴+高温+大风 | 加量20% |
详见 references/solar_terms.md,程序根据配置的气候带自动匹配对应策略。
示例(暖温带·北京):
| 节气段 | 日期 | 灌溉策略 |
|---|---|---|
| -------- | ------ | --------- |
| 立春~雨水 | 2月上-下 | 仍停灌,检查设备 |
| 惊蛰~春分 | 3月上-下 | 启动春灌,草坪返青 |
| 清明~谷雨 | 4月上-下 | 快速生长期,增量浇水 |
| 立夏~小满 | 5月上-下 | 主灌季,高蒸发 |
| 芒种~夏至 | 6月上-下 | 最高蒸散期,早晚浇 |
| 小暑~大暑 | 7月上-下 | 高温预警,等雨优先 |
| 立秋~处暑 | 8月上-下 | 逐步减量 |
| 白露~秋分 | 9月上-下 | 减量,Kc取低值 |
| 寒露~霜降 | 10月上-下 | 浇"封冻水" |
| 立冬以后 | 11月起 | 停灌,放空管道 |
地块编号,地块名称,经度,纬度,面积(m²),植物类型,备注
Z001,主干道绿化带,116.4000,39.9100,1000,草坪,
Z002,中心花坛,116.4020,39.9120,200,花卉,
车牌号,水箱容积(升),备注
京A-12345,8000,主力车
京A-67890,5000,备用车
取水点编号,名称,经度,纬度,出水流量(升/分钟),备注
W001,市政消防栓,116.3990,39.9090,120,主取水点
首次使用:
scripts/config.json,填入你的城市信息和 API Keypython scripts/run.py --skip-importpython scripts/log_irrigation.py --all-completedpython scripts/review.py共 5 个版本