IoT 数据采集案例:SQLite 数据库的代码实现
随着物联网(IoT)技术的快速发展,数据采集在各个行业中扮演着越来越重要的角色。在物联网数据采集案例中,如何高效、准确地存储和管理数据是关键问题。SQLite 作为一款轻量级的数据库,因其简单易用、跨平台等特点,成为许多嵌入式系统和移动应用的首选数据库。本文将围绕一个IoT数据采集案例,介绍如何使用SQLite数据库进行数据存储和查询,并展示相应的代码实现。
系统设计
系统架构
本案例的系统架构主要包括以下几个部分:
1. 数据采集模块:负责从传感器或其他数据源采集数据。
2. 数据处理模块:对采集到的数据进行处理,如清洗、转换等。
3. 数据存储模块:将处理后的数据存储到SQLite数据库中。
4. 数据查询模块:提供数据查询接口,供其他模块或用户查询数据。
技术选型
- 数据采集:Python的`pynput`库
- 数据处理:Python的`pandas`库
- 数据存储:Python的`sqlite3`库
- 数据查询:Python的`sqlite3`库
数据库设计
SQLite数据库的设计是数据采集系统稳定运行的基础。以下是一个简单的数据库设计示例:
sql
CREATE TABLE IF NOT EXISTS iot_data (
id INTEGER PRIMARY KEY AUTOINCREMENT,
sensor_id TEXT NOT NULL,
data_type TEXT NOT NULL,
data_value REAL NOT NULL,
timestamp DATETIME DEFAULT CURRENT_TIMESTAMP
);
在这个设计中,`iot_data`表包含以下字段:
- `id`:数据记录的唯一标识符。
- `sensor_id`:传感器的标识符。
- `data_type`:数据的类型,如温度、湿度等。
- `data_value`:数据的实际值。
- `timestamp`:数据采集的时间戳。
代码实现
数据采集模块
python
from pynput import keyboard
import sqlite3
数据库连接
conn = sqlite3.connect('iot_data.db')
cursor = conn.cursor()
数据采集函数
def on_press(key):
try:
假设按下空格键时采集数据
if key == keyboard.Key.space:
采集数据
sensor_id = 'sensor_001'
data_type = 'temperature'
data_value = 25.5
cursor.execute("INSERT INTO iot_data (sensor_id, data_type, data_value) VALUES (?, ?, ?)",
(sensor_id, data_type, data_value))
conn.commit()
print("Data collected and stored successfully.")
except Exception as e:
print("Error:", e)
监听键盘事件
with keyboard.Listener(on_press=on_press) as listener:
listener.join()
数据处理模块
python
import pandas as pd
假设从文件中读取数据
data = pd.read_csv('sensor_data.csv')
数据清洗和转换
data['timestamp'] = pd.to_datetime(data['timestamp'])
data['data_value'] = data['data_value'].astype(float)
返回清洗后的数据
return data
数据存储模块
在数据采集模块中,我们已经使用了`sqlite3`库将数据存储到SQLite数据库中。
数据查询模块
python
数据查询函数
def query_data(sensor_id, start_time, end_time):
cursor.execute("SELECT FROM iot_data WHERE sensor_id=? AND timestamp BETWEEN ? AND ?",
(sensor_id, start_time, end_time))
results = cursor.fetchall()
return results
示例:查询传感器001在2023-01-01 00:00:00到2023-01-01 23:59:59之间的数据
results = query_data('sensor_001', '2023-01-01 00:00:00', '2023-01-01 23:59:59')
print(results)
总结
本文以一个IoT数据采集案例为背景,介绍了如何使用SQLite数据库进行数据存储和查询。通过Python编程语言和相应的库,实现了数据采集、处理、存储和查询等功能。在实际应用中,可以根据具体需求对系统进行扩展和优化,以满足不同场景下的数据采集需求。
Comments NOTHING