8 changed files with 137 additions and 0 deletions
@ -0,0 +1,37 @@ |
|||
import sqlite3 |
|||
|
|||
conn = sqlite3.connect("iot_data.sqlite") |
|||
cursor = conn.cursor() |
|||
|
|||
cursor.execute(""" |
|||
CREATE TABLE IF NOT EXISTS mereni ( |
|||
id INTEGER PRIMARY KEY AUTOINCREMENT, |
|||
cas TEXT NOT NULL, |
|||
teplota REAL NOT NULL, |
|||
vlhkost REAL NOT NULL |
|||
) |
|||
""") |
|||
conn.commit() |
|||
print("Tabulka mereni vytovřena (nebo již existuje).☺") |
|||
|
|||
testovaci_data = [ |
|||
("2026-03-18 08:00:00", 22.5,45.0), |
|||
("2026-03-18 08:05:00", 23.5,48.0), |
|||
("2026-03-18 08:10:00", 23.2,44.0), |
|||
("2026-03-18 08:15:00", 22.8,49.0), |
|||
("2026-03-18 08:20:00", 25.2,60.0), |
|||
] |
|||
cursor.executemany( |
|||
"INSERT INTO mereni (cas, teplota, vlhkost) VALUES (?, ?, ?)", |
|||
testovaci_data |
|||
) |
|||
conn.commit() |
|||
print(f"Vloženo {len(testovaci_data)} záznamů") |
|||
|
|||
print("--- Všechna měření ---") |
|||
cursor.execute("SELECT * FROM mereni") |
|||
for radek in cursor.fetchall(): |
|||
print(radek) |
|||
|
|||
conn.close() |
|||
print("\nHotovo! Soubor iot_data.db vytvořen") |
|||
@ -0,0 +1,37 @@ |
|||
import sqlite3 |
|||
|
|||
conn = sqlite3.connect("iot_data.sqlite") |
|||
cursor = conn.cursor() |
|||
|
|||
# Počet záznamů |
|||
cursor.execute("SELECT COUNT(*) FROM mereni") |
|||
pocet = cursor.fetchone()[0] |
|||
print(f"Celkem záznamů v databázi: {pocet}\n") |
|||
|
|||
if pocet == 0: |
|||
print("Databaze je prázdná! spusťte nejdřív 01 nebo 04") |
|||
conn.close() |
|||
exit() |
|||
|
|||
# Pruměrná teplota a vlhkost |
|||
cursor.execute("SELECT AVG(teplota), AVG(vlhkost) FROM mereni") |
|||
avg_t, avg_v = cursor.fetchone() |
|||
print(f"Průmerná teplota: {avg_t:.1f}°C") |
|||
print(f"Průmerná vlhkost: {avg_v:.1f}%") |
|||
|
|||
#Maximalní a minimální hodnoty |
|||
cursor.execute("SELECT MAX(teplota), MIN(teplota) FROM mereni") |
|||
max_t, min_t = cursor.fetchone() |
|||
print(f"Maximální teplota: {max_t:.1f}°C") |
|||
print(f"Minimální teplota: {min_t:.1f}°C") |
|||
|
|||
cursor.execute("SELECT MAX(vlhkost), MIN(vlhkost) FROM mereni") |
|||
max_v, min_v = cursor.fetchone() |
|||
print(f"Maximální vlhkost: {max_v:.1f}°C") |
|||
print(f"Minimální vlhkost: {min_v:.1f}°C") |
|||
|
|||
#Měření s teploutou nad 25°C |
|||
cursor.execute("SELECT COUNT(*) FROM mereni WHERE teplota > 25") |
|||
nad_25 = cursor.fetchone()[0] |
|||
print(f"\nPočet měření s teplotou > 25°C: {nad_25}x") |
|||
|
|||
@ -0,0 +1,45 @@ |
|||
import sqlite3 |
|||
import random |
|||
from datetime import datetime, timedelta |
|||
|
|||
DB_FILE = "iot_data.sqlite" |
|||
POCET_MERENI = 50 |
|||
|
|||
conn = sqlite3.connect(DB_FILE) |
|||
cursor = conn.cursor() |
|||
|
|||
cursor.execute(""" |
|||
CREATE TABLE IF NOT EXISTS mereni ( |
|||
id INTEGER PRIMARY KEY AUTOINCREMENT, |
|||
cas TEXT NOT NULL, |
|||
teplota REAL NOT NULL, |
|||
vlhkost REAL NOT NULL |
|||
) |
|||
""") |
|||
conn.commit() |
|||
print("Tabulka mereni vytovřena (nebo již existuje).☺") |
|||
|
|||
#Generovani dat - začínáme od aktualního času, měření probíha každých 5 vteřin |
|||
cas_start = datetime.now() - timedelta(seconds=POCET_MERENI*5) |
|||
zakladni_teplota = 22.0 #píšeme .0 z důvodu toho aby se počítalo s FLOAT dat.typem |
|||
zakladni_vlhkost = 50.0 |
|||
|
|||
data= [] |
|||
for i in range(POCET_MERENI): |
|||
cas = cas_start + timedelta(seconds=i*5) |
|||
#Simulace realistickych hodnot s mírným kolísáním |
|||
teplota = round(zakladni_teplota + random.uniform(-3.0,5.0),1) |
|||
vlhkost = round(zakladni_vlhkost + random.uniform(-20.0,15.0),1) |
|||
data.append((cas.strftime("%Y-%m-%d %H:%M:%S"),teplota,vlhkost)) |
|||
|
|||
cursor.executemany( |
|||
"INSERT INTO mereni (cas, teplota, vlhkost) VALUES (?, ?, ?)", |
|||
data |
|||
) |
|||
conn.commit() |
|||
print(f"Vygenerováno {POCET_MERENI} měření do {DB_FILE}") |
|||
print(f"Časový rozsah: {data[0][0]} - {data[-1][0]}") |
|||
print(f"Ukázka prvních 5 záznamů:") |
|||
for cas, t, v in data[:5]: |
|||
print(f"{cas} | {t}°C | {v}%") |
|||
conn.close() |
|||
@ -0,0 +1,12 @@ |
|||
import sqlite3 |
|||
|
|||
conn = sqlite3.connect("iot_data.sqlite") |
|||
cursor = conn.cursor() |
|||
|
|||
print("--- Všechna měření ---") |
|||
cursor.execute("SELECT * FROM mereni") |
|||
for radek in cursor.fetchall(): |
|||
print(radek) |
|||
|
|||
conn.close() |
|||
print("\nHotovo! Soubor iot_data.sqlite přečtený (možná vytvořený prázdný)") |
|||
Binary file not shown.
@ -0,0 +1,6 @@ |
|||
mkdir 13_sqlite_python |
|||
cd 13_sqlite_python |
|||
python -m venv .venv |
|||
.venv\Scripts\activate |
|||
pip install pyserial |
|||
code . |
|||
Loading…
Reference in new issue