空气质量监测系统
一个基于 Flask 的实时空气质量监测系统,提供空气质量数据查询、可视化展示、详细数据查看和智能通知功能。



功能特性
- 🔐 用户认证系统:支持用户登录、会话管理,区分管理员和普通用户角色
- 📊 数据可视化 :使用 ECharts 提供多种图表展示
- 空气质量趋势折线图
- 空气质量等级分布饼图
- 污染物频率柱状图
- AQI 柱状图
- 当前 AQI 仪表盘
- 📈 详细数据查看 :表格形式展示完整的空气质量数据,包括:
- 时间、AQI、空气质量等级
- 主要污染物信息
- 健康影响和建议
- 🔔 智能通知系统:当空气质量指数(AQI)超过用户设置的阈值时自动发送通知
- 🎯 个性化设置:每个用户可以自定义 AQI 阈值
- 🌍 多城市支持:支持查询全国各地的空气质量数据
技术栈
后端
- Flask:轻量级 Web 框架
- pandas:数据处理和分析
- requests:HTTP 请求库
前端
- ECharts:数据可视化图表库
- Tailwind CSS:现代化 CSS 框架
- JavaScript:前端交互逻辑
数据源
- 和风天气 API:提供实时空气质量数据
安装步骤
1. 下载进入项目目录
bash
cd 空气质量监测系统
2. 创建虚拟环境(推荐)
bash
# Windows
python -m venv venv
venv\Scripts\activate
# Linux/Mac
python3 -m venv venv
source venv/bin/activate
3. 安装依赖
bash
pip install -r requirements.txt
4. 配置 API 密钥
在 main.py 文件中,找到以下代码并替换为您的和风天气 API 密钥:
python
headers = {
'X-QW-Api-Key': 'your_api_key_here',
}
注意:当前代码中使用的 API 密钥可能需要替换。请访问 和风天气开发者平台 注册并获取您的 API 密钥。
5. 初始化用户数据
首次运行程序时,系统会自动创建 users.json 文件,并创建默认管理员账户:
- 用户名:
admin - 密码:
password123
使用方法
启动应用
bash
python main.py
应用将在 http://127.0.0.1:5000 启动(默认端口)。
访问系统
- 打开浏览器访问
http://127.0.0.1:5000 - 使用默认账户登录:
- 用户名:
admin - 密码:
password123
- 用户名:
- 登录后可以:
- 在首页查询指定城市的空气质量数据
- 查看数据可视化图表
- 查看详细数据表格
- 管理通知和设置 AQI 阈值
主要功能页面
- 查询页面 (
/):输入城市名称查询空气质量数据 - 图表页面 (
/charts):查看多种可视化图表 - 详细数据页面 (
/details):查看完整的空气质量数据表格 - 通知页面 (
/notifications):查看和管理空气质量预警通知
项目结构
空气质量监测系统/
├── main.py # 主应用文件
├── requirements.txt # Python 依赖列表
├── README.md # 项目说明文档
├── users.json # 用户数据文件(自动生成)
├── static/ # 静态资源目录
│ └── js/
│ └── echarts.min.js # ECharts 库文件
├── templates/ # HTML 模板目录
│ ├── base.html # 基础模板
│ ├── login.html # 登录页面
│ ├── index.html # 首页
│ ├── charts.html # 图表页面
│ ├── details.html # 详细数据页面
│ └── notifications.html # 通知页面
└── 图/ # 截图目录
用户管理
添加新用户
编辑 users.json 文件,添加新用户对象:
json
{
"username": "用户名",
"password": "密码",
"name": "显示名称",
"role": "user", // 或 "admin"
"aqi_threshold": 100, // AQI 阈值
"notifications": []
}
用户角色
- admin:管理员角色,拥有所有权限
- user:普通用户角色
通知系统
系统会在以下情况自动创建通知:
- 用户查询空气质量数据时
- 当前 AQI 值超过用户设置的阈值
- 通知包含:时间、城市、AQI、空气质量等级、主要污染物、健康建议
每个用户最多保存 20 条通知,超过限制会自动删除最旧的通知。
配置说明
会话设置
- 会话有效期:30 分钟(可在
main.py中修改PERMANENT_SESSION_LIFETIME) - 会话存储:文件系统(可在
main.py中修改SESSION_TYPE)
AQI 阈值
- 默认阈值:100
- 可设置范围:0-500
- 每个用户可以独立设置
注意事项
- API 密钥:请确保使用有效的和风天气 API 密钥,否则无法获取数据
- 数据安全 :
users.json文件包含用户密码(明文),生产环境请使用数据库和密码加密 - 调试模式 :当前代码使用
debug=True,生产环境请关闭调试模式 - 端口配置 :默认使用 5000 端口,如需修改请在
main.py中更改