SQLite 数据库 IoT 数据采集案例 IoT DATA COLLECTION CASE

SQLite 数据库阿木 发布于 11 天前 4 次阅读


IoT 数据采集案例:SQLite 数据库应用与代码实现

随着物联网(IoT)技术的快速发展,数据采集在各个行业中扮演着越来越重要的角色。SQLite 作为一种轻量级的数据库,因其简单易用、跨平台等特点,被广泛应用于 IoT 数据采集项目中。本文将围绕“IoT 数据采集案例:SQLite 数据库应用与代码实现”这一主题,详细介绍 SQLite 数据库在 IoT 数据采集中的应用,并通过实际代码示例进行展示。

SQLite 简介

SQLite 是一个开源的嵌入式数据库,它支持标准的 SQL 语法,并且可以在多种平台上运行,包括 Windows、Linux、macOS 和 Android 等。SQLite 的特点是轻量级、易于使用、无需服务器进程,非常适合用于 IoT 设备的数据存储。

IoT 数据采集案例背景

假设我们正在开发一个智能家居系统,该系统需要实时采集家中各种设备的运行数据,如温度、湿度、光照强度等。为了实现这一功能,我们需要设计一个数据采集系统,该系统将负责收集数据、存储数据以及提供数据查询接口。

SQLite 数据库设计

在开始编写代码之前,我们需要设计一个合适的数据库结构。以下是一个简单的数据库设计示例:

sql

CREATE TABLE IF NOT EXISTS devices (


id INTEGER PRIMARY KEY AUTOINCREMENT,


name TEXT NOT NULL,


type TEXT NOT NULL


);

CREATE TABLE IF NOT EXISTS readings (


id INTEGER PRIMARY KEY AUTOINCREMENT,


device_id INTEGER NOT NULL,


timestamp DATETIME NOT NULL,


temperature REAL,


humidity REAL,


light_intensity REAL,


FOREIGN KEY (device_id) REFERENCES devices (id)


);


在这个设计中,我们创建了两个表:`devices` 和 `readings`。`devices` 表存储设备信息,包括设备名称和类型;`readings` 表存储设备采集的数据,包括时间戳、温度、湿度和光照强度等。

数据采集代码实现

以下是一个使用 Python 和 SQLite 实现的数据采集示例代码:

python

import sqlite3


import time


from datetime import datetime

连接到 SQLite 数据库


conn = sqlite3.connect('iot_data.db')


cursor = conn.cursor()

创建数据库表


cursor.execute('''CREATE TABLE IF NOT EXISTS devices (


id INTEGER PRIMARY KEY AUTOINCREMENT,


name TEXT NOT NULL,


type TEXT NOT NULL


)''')

cursor.execute('''CREATE TABLE IF NOT EXISTS readings (


id INTEGER PRIMARY KEY AUTOINCREMENT,


device_id INTEGER NOT NULL,


timestamp DATETIME NOT NULL,


temperature REAL,


humidity REAL,


light_intensity REAL,


FOREIGN KEY (device_id) REFERENCES devices (id)


)''')

插入设备信息


cursor.execute("INSERT INTO devices (name, type) VALUES (?, ?)", ('Thermometer', 'Temperature Sensor'))


cursor.execute("INSERT INTO devices (name, type) VALUES (?, ?)", ('Hygrometer', 'Humidity Sensor'))


cursor.execute("INSERT INTO devices (name, type) VALUES (?, ?)", ('Light Sensor', 'Light Intensity Sensor'))

模拟数据采集


while True:


获取设备数据


temperature = 22.5


humidity = 45.2


light_intensity = 300

获取当前时间戳


timestamp = datetime.now().strftime('%Y-%m-%d %H:%M:%S')

插入数据到 readings 表


cursor.execute("INSERT INTO readings (device_id, timestamp, temperature, humidity, light_intensity) VALUES (?, ?, ?, ?, ?)",


(1, timestamp, temperature, humidity, light_intensity))

提交事务


conn.commit()

每隔 10 秒采集一次数据


time.sleep(10)

关闭数据库连接


conn.close()


在这个示例中,我们首先创建了一个 SQLite 数据库文件 `iot_data.db`,并定义了两个表。然后,我们模拟数据采集过程,每隔 10 秒采集一次温度、湿度和光照强度数据,并将数据插入到 `readings` 表中。

数据查询接口

在实际应用中,我们可能需要查询数据库中的数据。以下是一个简单的数据查询接口示例:

python

import sqlite3

def query_data(device_name):


conn = sqlite3.connect('iot_data.db')


cursor = conn.cursor()

cursor.execute("SELECT FROM readings WHERE device_id = (SELECT id FROM devices WHERE name = ?)", (device_name,))


rows = cursor.fetchall()

conn.close()

return rows

查询温度数据


temperature_data = query_data('Thermometer')


print(temperature_data)


在这个示例中,我们定义了一个 `query_data` 函数,它接受一个设备名称作为参数,并返回该设备的历史数据。我们通过查询 `devices` 表和 `readings` 表来获取数据。

总结

本文介绍了 SQLite 数据库在 IoT 数据采集中的应用,并通过实际代码示例展示了如何设计数据库结构、实现数据采集和查询接口。通过使用 SQLite,我们可以轻松地存储和管理 IoT 设备采集的数据,为后续的数据分析和决策提供支持。

在实际项目中,我们可能需要根据具体需求对数据库设计、数据采集和查询接口进行扩展和优化。例如,我们可以添加数据清洗、数据可视化等功能,以提高数据质量和用户体验。随着 IoT 技术的不断发展,SQLite 数据库在 IoT 数据采集中的应用将越来越广泛。