基于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 中更改
相关推荐
长行4 小时前
Python|Windows 安装 DeepSpeed 安装方法及报错 Unable to pre-compile async_io 处理
windows·python·deepspeed
百锦再4 小时前
python之路并不一马平川:带你踩坑Pandas
开发语言·python·pandas·pip·requests·tools·mircro
Python之栈4 小时前
5款拖拽式Python GUI生成器助你快速打造炫酷界面
python
灏瀚星空4 小时前
基于 Python 与 GitHub,打造个人专属本地化思维导图工具全流程方案(上)
开发语言·人工智能·经验分享·笔记·python·个人开发·visual studio
用什么都重名4 小时前
「实战指南」使用 Python 调用大模型(LLM)
python·大模型·llm·api调用
是Dream呀4 小时前
Python从0到100(一百):基于Transformer的时序数据建模与实现详解
开发语言·python·transformer
资源存储库4 小时前
【笔记】如何修改一个conda环境的python版本?
笔记·python·conda
xcLeigh4 小时前
AI的提示词专栏:Prompt 与 Python Pandas 的结合使用指南
人工智能·python·ai·prompt·提示词
草莓熊Lotso4 小时前
Python 入门超详细指南:环境搭建 + 核心优势 + 应用场景(零基础友好)
运维·开发语言·人工智能·python·深度学习·学习·pycharm