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