MySQL 数据库 智能环境监测数据采集与分析示例

MySQL 数据库阿木 发布于 12 天前 5 次阅读


智能环境监测数据采集与分析:基于MySQL数据库的代码实现

随着科技的不断发展,环境监测在保障人类生存环境、促进可持续发展中扮演着越来越重要的角色。智能环境监测系统通过实时采集环境数据,为环境管理提供科学依据。本文将围绕“智能环境监测数据采集与分析”这一主题,结合MySQL数据库,通过一系列代码实现,展示如何构建一个高效、可靠的环境监测系统。

一、系统设计

1.1 系统架构

本系统采用B/S(Browser/Server)架构,前端使用HTML、CSS、JavaScript等技术实现用户界面,后端使用Python语言结合Flask框架进行开发。数据库采用MySQL,用于存储环境监测数据。

1.2 功能模块

本系统主要包括以下功能模块:

1. 数据采集模块:负责实时采集环境数据,如温度、湿度、空气质量等。

2. 数据存储模块:将采集到的数据存储到MySQL数据库中。

3. 数据分析模块:对存储在数据库中的数据进行处理和分析,生成报表。

4. 数据展示模块:将分析结果以图表、报表等形式展示给用户。

二、数据库设计

2.1 数据库结构

本系统采用单表结构,表名为`environment_data`,字段包括:

- `id`:自增主键,用于唯一标识一条数据记录。

- `sensor_id`:传感器ID,用于标识采集数据的传感器。

- `temperature`:温度值。

- `humidity`:湿度值。

- `air_quality`:空气质量指数。

- `timestamp`:数据采集时间戳。

2.2 创建数据库和表

python

import mysql.connector

连接MySQL数据库


db = mysql.connector.connect(


host="localhost",


user="your_username",


password="your_password",


database="your_database"


)

创建游标对象


cursor = db.cursor()

创建环境数据表


cursor.execute("""


CREATE TABLE IF NOT EXISTS environment_data (


id INT AUTO_INCREMENT PRIMARY KEY,


sensor_id VARCHAR(50),


temperature DECIMAL(5, 2),


humidity DECIMAL(5, 2),


air_quality INT,


timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP


)


""")

关闭游标和数据库连接


cursor.close()


db.close()


三、数据采集模块

3.1 传感器数据采集

本模块使用Python的`pyserial`库与传感器进行通信,采集环境数据。

python

import serial


import time

初始化串口


ser = serial.Serial('/dev/ttyUSB0', 9600, timeout=1)

while True:


读取传感器数据


data = ser.readline().decode().strip()


解析数据


sensor_id, temperature, humidity, air_quality = data.split(',')


存储数据到数据库


...


time.sleep(1)


3.2 存储数据到数据库

python

import mysql.connector

连接MySQL数据库


db = mysql.connector.connect(


host="localhost",


user="your_username",


password="your_password",


database="your_database"


)

创建游标对象


cursor = db.cursor()

存储数据到数据库


def store_data(sensor_id, temperature, humidity, air_quality):


query = """


INSERT INTO environment_data (sensor_id, temperature, humidity, air_quality)


VALUES (%s, %s, %s, %s)


"""


cursor.execute(query, (sensor_id, temperature, humidity, air_quality))


db.commit()

关闭游标和数据库连接


cursor.close()


db.close()


四、数据分析模块

4.1 数据处理

本模块使用Python的`pandas`库对数据库中的数据进行处理和分析。

python

import pandas as pd

连接MySQL数据库


db = mysql.connector.connect(


host="localhost",


user="your_username",


password="your_password",


database="your_database"


)

创建游标对象


cursor = db.cursor()

查询数据库中的数据


cursor.execute("SELECT FROM environment_data")


data = cursor.fetchall()

将数据转换为DataFrame


df = pd.DataFrame(data, columns=['id', 'sensor_id', 'temperature', 'humidity', 'air_quality', 'timestamp'])

数据处理


...

关闭游标和数据库连接


cursor.close()


db.close()


4.2 数据分析

python

计算平均温度


average_temperature = df['temperature'].mean()

计算空气质量指数的分布


air_quality_distribution = df['air_quality'].value_counts()

...


五、数据展示模块

5.1 使用ECharts展示数据

本模块使用ECharts库将分析结果以图表形式展示。

html

<!DOCTYPE html>


<html>


<head>


<meta charset="UTF-8">


<title>环境监测数据展示</title>


<script src="https://cdn.bootcdn.net/ajax/libs/echarts/5.3.3/echarts.min.js"></script>


</head>


<body>


<div id="main" style="width: 600px;height:400px;"></div>


<script type="text/javascript">


// 基于准备好的dom,初始化echarts实例


var myChart = echarts.init(document.getElementById('main'));

// 指定图表的配置项和数据


var option = {


title: {


text: '环境监测数据'


},


tooltip: {},


legend: {


data:['温度', '湿度', '空气质量']


},


xAxis: {


data: ["1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月"]


},


yAxis: {},


series: [{


name: '温度',


type: 'bar',


data: [11, 11, 15, 13, 12, 13, 10, 10, 10, 10, 10, 10]


}, {


name: '湿度',


type: 'bar',


data: [11, 11, 15, 13, 12, 13, 10, 10, 10, 10, 10, 10]


}, {


name: '空气质量',


type: 'bar',


data: [11, 11, 15, 13, 12, 13, 10, 10, 10, 10, 10, 10]


}]


};

// 使用刚指定的配置项和数据显示图表。


myChart.setOption(option);


</script>


</body>


</html>


六、总结

本文通过Python语言、MySQL数据库和ECharts库,实现了一个智能环境监测数据采集与分析系统。该系统具有以下特点:

1. 实时采集环境数据,为环境管理提供科学依据。

2. 数据存储在MySQL数据库中,保证数据的安全性和可靠性。

3. 数据分析模块可以对采集到的数据进行处理和分析,生成报表。

4. 数据展示模块可以将分析结果以图表、报表等形式展示给用户。

在实际应用中,可以根据需求对系统进行扩展和优化,如增加更多传感器、实现数据可视化、引入人工智能算法等。