【Python原创毕设|课设】基于Python Flask空气质量实时检测预警可视化系统-含硬件-文末附下载方式,原创项目其他均为抄袭

基于Python Flask空气质量实时检测预警可视化系统-含硬件-(获取方式访问文末官网)

  • 一、项目简介
  • 二、功能简介
  • 1. 实时数据采集
  • 2. 数据处理
  • 3. 数据可视化
  • 4. 预警功能
  • 5. 用户管理
  • 6. 公告管理
  • 7. 版本管理
  • 8. 数据管理
  • 9. 预警记录
  • 三、开发环境
  • 四、项目技术
  • 五、运行截图
  • 六、数据库设计
  • 七、功能实现
  • 八、源码获取
  • 一、项目简介

    这个基于Python开发的空气质量实时检测预警可视化系统,采用了serial技术实时采集COM口传感器数据,为用户提供精准的空气质量监测服务,其传感器(两款仅外观不同)如下所示。
    设备.jpg

    系统通过Echarts实现数据可视化,用户可以直观地查看多种空气指标的动态变化,包括二氧化碳浓度、挥发性有机化合物(TVOC)浓度、PM2.5和PM10颗粒物浓度、温度、湿度等。同时,该系统还展示了数据总计、综合实时数据数值及各项指标的分布情况,如CO2、TVOC、PM2.5、PM10等,帮助用户全方位了解当前的空气状况。
    首页.png

    系统不仅注重实时监测,还设有后台管理功能,支持用户登录、注册以及公告、版本、数据管理等功能。预警设置模块可以根据用户自定义的标准触发预警记录,确保在空气质量出现异常时,及时发出警报,为用户提供安全保障。该系统特别适用于学校、企业、公共场所等需要密切关注空气质量的场景,结合当前人们对健康与环境的高度关注,具备重要的应用前景和社会价值。

    二、功能简介

    air.jpg

    1. 实时数据采集
  • 功能描述:通过串口(COM口)实时从传感器采集空气质量数据。
  • 采集内容:CO2浓度、TVOC浓度、PM2.5浓度、PM10浓度、温度、湿度等。
  • 2. 数据处理
  • 功能描述:对采集到的传感器数据进行处理,去除异常值、缺失值,确保数据的准确性和一致性。
  • 3. 数据可视化
  • 功能描述:使用Echarts将空气质量数据生成可视化图表,直观展示各类污染物的浓度曲线和环境参数的变化趋势。
  • 展示内容
  • CO2浓度曲线
  • TVOC浓度曲线
  • PM2.5和PM10浓度曲线
  • 温度曲线
  • 湿度曲线
  • 各项指标的分布图
  • 系统采集数据总计
  • 实时综合数据数值
  • 空气质量实时数据表格
  • 4. 预警功能
  • 功能描述:用户可根据自身需求设定各项空气质量指标的预警阈值。当监测数据超出设定标准时,系统会自动发出预警提示。
  • 预警内容:CO2、TVOC、PM2.5、PM10等超标提醒。
  • 5. 用户管理
  • 功能描述:提供用户登录、注册功能,确保系统访问权限管理,保障数据安全。
  • 功能内容:用户登录、注册、密码管理。
  • 6. 公告管理
  • 功能描述:管理员可以通过系统后台发布和管理公告信息,便于发布最新消息或系统维护通知。
  • 功能内容:公告的发布、修改、删除。
  • 7. 版本管理
  • 功能描述:支持系统版本的管理与展示,用户可查看当前系统版本信息。
  • 功能内容:版本号展示,系统更新日志管理。
  • 8. 数据管理
  • 功能描述:系统记录并管理所有的空气质量监测数据,支持历史数据查询、删除等操作。
  • 功能内容:历史数据查询、数据删除等。
  • 9. 预警记录
  • 功能描述:记录所有触发的预警信息,便于用户查看空气质量历史预警情况,并据此分析趋势。
  • 功能内容:预警时间、预警指标、预警数值等记录与查询。
  • 三、开发环境

    开发环境 版本/工具
    PYTHON 3.10. 9
    开发工具 PyCharm
    操作系统 Windows 10
    内存要求 8GB 以上
    浏览器 Firefox (推荐)、Google Chrome (推荐)、Edge
    数据库 MySQL 8.0 (推荐)
    数据库工具 Navicat Premium 15 (推荐)
    项目框架 FLASK

    四、项目技术

    Python: 作为开发语言,用于编写后端逻辑和数据处理。

    Flask: Python的Web框架,用于搭建后端数据接口和处理HTTP请求。

    PyMySQL: 用于Python与MySQL数据库的交互,实现数据的存储和读取。

    Echarts: JavaScript的数据可视化库,将数据转化为图表形式展示给用户。

    LAYUI: 轻量级前端UI框架,用于构建用户友好的交互界面。

    JavaScript: 用于实现前端交互和处理用户输入。

    HTML和CSS: 用于构建前端界面和样式设计。

    pandas和numpy: Python的数据处理和分析。

    AJAX: 用于实现前后端数据交互,异步请求后端数据接口。

    MySQL: 数据库管理系统,用于持久化数据。

    五、运行截图

    可视化页面
    首页.png

    登录页面
    登录.jpeg

    注册页面
    注册.jpeg

    后台首页
    后台首页.jpeg

    用户管理
    用户管理.jpeg

    公告管理
    公告管理.jpeg

    版本管理
    版本管理.jpeg

    空气数据管理模块页面

    空气数据.jpeg

    预警设置
    预警设置.jpeg

    预警记录
    预警记录.jpeg

    六、数据库设计

    表名:alert_records

    字段名 数据类型 长度 允许为空 默认值 描述
    id int None NO None 主键
    data_id int None YES None 预警数据ID
    content varchar 255 YES None 预警内容
    parameter varchar 50 YES None 预警类型
    parameter_name varchar 255 YES None 预警名称
    warn_time datetime None YES None 预警时间
    status int None YES None 0未处理,1已处理

    表名:alert_rules

    字段名 数据类型 长度 允许为空 默认值 描述
    id int None NO None 主键
    parameter varchar 50 YES None 预警编码
    parameter_name varchar 50 YES None 预警类型
    min float None YES None 预警低值
    max float None YES None 预警高值

    表名:environment_data

    字段名 数据类型 长度 允许为空 默认值 描述
    id int None NO None 主键,自增ID
    device_id varchar 50 NO None 设备编号
    co2 int None NO None CO2浓度值 (PPM)
    ch2o int None NO None 甲醛浓度值 (µg)
    tvoc int None NO None TVOC浓度值 (µg)
    pm25 int None NO None PM2.5浓度值 (µg)
    pm10 int None NO None PM10浓度值 (µg)
    temp float None NO None 温度 (℃)
    hum float None NO None 湿度 (%RH)
    created_time datetime None YES None 创建时间

    表名:notice

    字段名 数据类型 长度 允许为空 默认值 描述
    id int None NO None 主键
    title varchar 255 YES None 公告标题
    content longtext 4294967295 YES None 公告内容
    user_name varchar 255 YES None 发布人
    create_time datetime None YES None 发布时间

    表名:sys_version

    字段名 数据类型 长度 允许为空 默认值 描述
    id int None NO None 主键
    sys_name varchar 255 YES None 名称
    sys_version varchar 255 YES None 版本

    表名:user

    字段名 数据类型 长度 允许为空 默认值 描述
    id int None NO None
    name varchar 255 YES None 用户名称(供应商名称)
    account varchar 255 YES None 用户账号
    password varchar 255 YES None 用户密码
    company varchar 255 YES None 企业名称
    mail varchar 255 YES None 邮箱
    type int None YES None 0管理员,1普通用户
    status int None YES None 0禁用1启用

    七、功能实现

    数据采集核心代码

    def main():
        port = 'COM12'  # 确保这里是正确的端口号
        baudrate = 9600  # 波特率
        timeout = 1  # 读取超时时间(秒)
        try:
            # 打开串口
            ser = serial.Serial(port, baudrate, timeout=timeout)
        except serial.SerialException as e:
            print(f"无法打开端口 {port}: {e}")
            return
        except PermissionError as e:
            print(f"没有权限访问端口 {port}: {e}")
            return
    

    创建数据库连接核心代码

    def connect(self):
        self.conn = pymysql.connect(
          host=DB_CONFIG["host"],
          port=DB_CONFIG["port"],
          user=DB_CONFIG["user"],
          passwd=DB_CONFIG["passwd"],
          db=DB_CONFIG["db"],
          charset=DB_CONFIG["charset"],
          cursorclass=pymysql.cursors.DictCursor)
        self.cursor = self.conn.cursor()
    

    分页环境监测数据数据核心代码

    # 分页环境监测数据数据
    def select_environment_data_list(page, limit, where):
        page, limit, where = get_page_start(int(page), int(limit), where)
        params_sql = get_search_params(where)
        data_sql = "SELECT * FROM `environment_data` WHERE 1=1 " + params_sql + " ORDER BY id DESC LIMIT %s,%s"
        count_sql = "SELECT COUNT(id) AS i FROM `environment_data` WHERE 1=1 " + params_sql
        sqlManager = SQLManager()
        data = sqlManager.get_list(data_sql, (page, limit))  # 获取分页数据
        count = sqlManager.get_one(count_sql)['i']  # 获取数据总数
        model = get_class_list(data, environment_data)
        page_result = PageData(count, model)
        return page_result
    

    八、源码获取

    源码、安装教程文档、项目简介文档以及其它相关文档已经上传到是云猿实战官网,可以通过下面官网进行获取项目!

    作者:是云小糊糊

    物联沃分享整理
    物联沃-IOTWORD物联网 » 【Python原创毕设|课设】基于Python Flask空气质量实时检测预警可视化系统-含硬件-文末附下载方式,原创项目其他均为抄袭

    发表回复