基于Python的空气质量监测系统

空气质量监测系统

一个基于 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 启动(默认端口)。

访问系统

  1. 打开浏览器访问 http://127.0.0.1:5000
  2. 使用默认账户登录:
    • 用户名:admin
    • 密码:password123
  3. 登录后可以:
    • 在首页查询指定城市的空气质量数据
    • 查看数据可视化图表
    • 查看详细数据表格
    • 管理通知和设置 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:普通用户角色

通知系统

系统会在以下情况自动创建通知:

  1. 用户查询空气质量数据时
  2. 当前 AQI 值超过用户设置的阈值
  3. 通知包含:时间、城市、AQI、空气质量等级、主要污染物、健康建议

每个用户最多保存 20 条通知,超过限制会自动删除最旧的通知。

配置说明

会话设置

  • 会话有效期:30 分钟(可在 main.py 中修改 PERMANENT_SESSION_LIFETIME
  • 会话存储:文件系统(可在 main.py 中修改 SESSION_TYPE

AQI 阈值

  • 默认阈值:100
  • 可设置范围:0-500
  • 每个用户可以独立设置

注意事项

  1. API 密钥:请确保使用有效的和风天气 API 密钥,否则无法获取数据
  2. 数据安全users.json 文件包含用户密码(明文),生产环境请使用数据库和密码加密
  3. 调试模式 :当前代码使用 debug=True,生产环境请关闭调试模式
  4. 端口配置 :默认使用 5000 端口,如需修改请在 main.py 中更改
相关推荐
测试员周周几秒前
【AI测试智能体-面试】AI测试面试60题(附回答思路)
人工智能·python·功能测试·测试工具·单元测试·自动化·测试用例
用户83562907805119 分钟前
使用 Python 操作 Word 评论和回复
后端·python
Zella折耳根37 分钟前
复习篇-继承和接口
java·开发语言·python
诗词在线41 分钟前
求推荐飞花令
大数据·人工智能·python
yijianace1 小时前
Python线程与多线程完全总结(从入门到理解并发本质)
开发语言·python
会Tk矩阵群控的小木2 小时前
基于Python的iMessage短信群发与社媒多账号统一管理系统实现
开发语言·windows·python·新媒体运营·开源软件·个人开发
质造者2 小时前
LangChain + Ollama + Tavily 实现旅游问答系统
linux·人工智能·python·langchain·rag
伊布拉西莫3 小时前
【流畅的Python】第20章:并发执行器 — 学习笔记
笔记·python·学习
IT策士3 小时前
Redis 从入门到精通:Python 操作 Redis
redis·python·bootstrap
编码者卢布3 小时前
【Azure AI Search】 searchMode=any 和 searchMode=all 有什么区别?
人工智能·python·flask