diff --git a/02_csv_writer/data.csv b/02_csv_writer/data.csv new file mode 100644 index 0000000..2b6bb33 --- /dev/null +++ b/02_csv_writer/data.csv @@ -0,0 +1,94 @@ +Datum a as,DHT11 vlhkost,DHT11 teplota,HC-SR04 vzdlenost +2026-01-14 08:57:46,50,24,35 +2026-01-14 08:57:47,33,27,81 +2026-01-14 08:57:48,74,23,93 +2026-01-14 08:57:49,42,21,28 +2026-01-14 08:57:50,65,25,186 +2026-01-14 08:57:51,33,20,90 +2026-01-14 08:57:52,69,27,171 +2026-01-14 08:57:53,74,23,82 +2026-01-14 08:57:54,32,20,83 +2026-01-14 08:57:55,68,21,75 +2026-01-14 08:57:56,68,28,120 +2026-01-14 08:57:57,56,21,90 +2026-01-14 08:57:58,46,23,53 +2026-01-14 08:57:59,52,24,58 +2026-01-14 08:58:00,58,25,167 +2026-01-14 08:58:01,54,22,192 +2026-01-14 08:58:02,47,25,163 +2026-01-14 08:58:03,49,24,52 +2026-01-14 08:58:04,66,27,83 +2026-01-14 08:58:05,79,22,187 +2026-01-14 08:58:06,62,28,173 +2026-01-14 08:58:07,46,28,88 +2026-01-14 08:58:08,43,22,132 +2026-01-14 08:58:09,58,23,111 +2026-01-14 08:58:10,30,26,77 +2026-01-14 08:58:11,37,20,79 +2026-01-14 08:58:12,43,28,182 +2026-01-14 08:58:13,51,20,181 +2026-01-14 08:58:14,59,25,186 +2026-01-14 08:58:15,55,23,35 +2026-01-14 08:58:37,56,21,198 +2026-01-14 08:58:38,44,24,159 +2026-01-14 08:58:39,68,24,30 +2026-01-14 08:58:40,57,20,109 +2026-01-14 08:58:41,69,21,161 +2026-01-14 08:58:42,45,22,191 +2026-01-14 08:58:43,48,25,33 +2026-01-14 08:58:44,40,23,198 +2026-01-14 08:58:45,61,26,34 +2026-01-14 08:58:46,77,21,194 +2026-01-14 08:58:47,45,27,127 +2026-01-14 08:58:48,68,27,179 +2026-01-14 08:58:49,68,28,91 +2026-01-14 08:58:50,79,28,166 +2026-01-14 08:58:51,70,22,24 +2026-01-14 08:58:52,66,21,181 +2026-01-14 08:58:53,61,27,77 +2026-01-14 08:58:54,67,26,131 +2026-01-14 08:58:55,40,24,50 +2026-01-14 08:58:56,46,23,174 +2026-01-14 08:58:57,49,24,183 +2026-01-14 08:58:58,60,22,70 +2026-01-14 08:58:59,37,24,183 +2026-01-14 08:59:00,48,21,178 +2026-01-14 08:59:01,54,20,100 +2026-01-14 08:59:02,42,28,120 +2026-01-14 08:59:03,58,24,196 +2026-01-14 08:59:04,35,22,195 +2026-01-14 08:59:05,73,21,95 +2026-01-14 08:59:06,33,20,66 +2026-01-14 09:02:26,69,22,143 +2026-01-14 09:02:27,44,22,59 +2026-01-14 09:02:28,66,24,153 +2026-01-14 09:02:29,77,28,61 +2026-01-14 09:02:30,55,28,55 +2026-01-14 09:02:31,42,21,154 +2026-01-14 09:02:32,57,23,158 +2026-01-14 09:02:33,32,27,32 +2026-01-14 09:02:34,57,25,40 +2026-01-14 09:02:35,68,23,157 +2026-01-14 09:02:36,47,21,137 +2026-01-14 09:02:37,56,26,37 +2026-01-14 09:02:38,54,20,128 +2026-01-14 09:02:39,63,22,77 +2026-01-14 09:02:40,57,23,136 +2026-01-14 09:02:41,31,20,28 +2026-01-14 09:02:42,45,22,85 +2026-01-14 09:02:43,34,20,182 +2026-01-14 09:02:44,50,28,47 +2026-01-14 09:02:45,41,25,40 +2026-01-14 09:02:46,54,21,92 +2026-01-14 09:02:47,43,22,85 +2026-01-14 09:02:48,42,27,60 +2026-01-14 09:02:49,50,21,152 +2026-01-14 09:02:50,64,23,119 +2026-01-14 09:02:51,36,22,104 +2026-01-14 09:02:52,58,23,110 +2026-01-14 09:02:53,45,28,163 +2026-01-14 09:02:54,34,28,32 +2026-01-14 09:02:55,67,22,124 +2026-01-14 09:25:24,45,25,135 +2026-01-14 09:25:25,62,26,188 +2026-01-14 09:25:26,64,21,142 diff --git a/02_csv_writer/main.py b/02_csv_writer/main.py new file mode 100644 index 0000000..1d00c70 --- /dev/null +++ b/02_csv_writer/main.py @@ -0,0 +1,21 @@ +import csv +import datetime +import random + +# definice senzorů +senzory = ["DHT11 vlhkost", "DHT11 teplota","HC-SR04 vzdálenost"] + +#otevření souboru +with open("data.csv","a",newline="") as csvfile: + writer = csv.writer(csvfile) #zapisovatel + now = datetime.datetime.now() #aktualni datum a cas + if csvfile.tell() == 0: + writer.writerow(["Datum a cas"]+[senzor for senzor in senzory]) + + hodnoty = [ + random.randint(30,80), #vlhkost + random.randint(20,28), #teplota + random.randint(20,200) #vzdalenost + ] + #zapis dat + writer.writerow([now.strftime("%Y-%m-%d %H:%M:%S")] + hodnoty) \ No newline at end of file diff --git a/02_csv_writer/reader.py b/02_csv_writer/reader.py new file mode 100644 index 0000000..aacb6da --- /dev/null +++ b/02_csv_writer/reader.py @@ -0,0 +1,52 @@ +import csv +import matplotlib.pyplot as plt +import datetime +import art +from termcolor import colored + +art.tprint("CSV reader") +with open("data.csv","r") as csvfile: + print(colored("Otevírám data.csv","blue")) + reader = csv.reader(csvfile) + next(reader,None) #kvůli hlavičce + data_cas = [] + data_vlhkost = [] + data_teplota = [] + data_vzdalenost = [] + + for row in reader: + datum_cas = row[0] + + try: + datetime_object = datetime.datetime.strptime(datum_cas,"%Y-%m-%d %H:%M:%S") + + except ValueError: + print(f"Chybný formát data a času: {datum_cas}") + + data_cas.append(datetime_object) + data_vlhkost.append(float(row[1])) + data_teplota.append(float(row[2])) + data_vzdalenost.append(float(row[3])) + +#print(data_teplota) #test jestli máme nějaké hodnoty +print(colored("Data úspěšně načteny","yellow")) +print(colored("Vytvářím grafy","green")) +plt.subplot(311) # 3 řádky, 1 sloupec, 1.graf +plt.plot(data_cas,data_vlhkost, label="vlhkost") +plt.legend() +plt.xticks(visible=False) #skrýt čas na X axis (necháme jen u vzdálenosti at víme čas) +plt.title("Vlhkost") + +plt.subplot(312) # 3 řádky, 1 sloupec, 2.graf +plt.plot(data_cas,data_teplota, label="teplota") +plt.legend() +plt.xticks(visible=False) +plt.title("teplota") + +plt.subplot(313) # 3 řádky, 1 sloupec, 3.graf +plt.plot(data_cas,data_vzdalenost, label="vzdalenost") +plt.legend() +plt.title("vzdalenost") + +plt.show() +print(colored("Děkujeme za použití naší aplikace","red")) \ No newline at end of file diff --git a/02_csv_writer/requirements.txt b/02_csv_writer/requirements.txt new file mode 100644 index 0000000..102eaf6 --- /dev/null +++ b/02_csv_writer/requirements.txt @@ -0,0 +1,15 @@ +art==6.5 +colorama==0.4.6 +contourpy==1.3.3 +cycler==0.12.1 +fonttools==4.61.1 +kiwisolver==1.4.9 +matplotlib==3.10.8 +numpy==2.4.1 +packaging==25.0 +pillow==12.1.0 +pyparsing==3.3.1 +python-dateutil==2.9.0.post0 +six==1.17.0 +termcolor==3.3.0 +tqdm==4.67.1 diff --git a/02_csv_writer/writer_loop.py b/02_csv_writer/writer_loop.py new file mode 100644 index 0000000..9969e3b --- /dev/null +++ b/02_csv_writer/writer_loop.py @@ -0,0 +1,22 @@ +import csv +import datetime +import random +import time + +pocet_iteraci = 30 +senzory = ["DHT11 vlhkost", "DHT11 teplota","HC-SR04 vzdálenost"] +with open("data.csv","a",newline="") as csvfile: + writer = csv.writer(csvfile) + if csvfile.tell() == 0: + writer.writerow(["Datum a čas"] + [senzor for senzor in senzory]) + + for i in range(pocet_iteraci): + now = datetime.datetime.now() + hodnoty = [ + random.randint(30,80), #vlhkost + random.randint(20,28), #teplota + random.randint(20,200) #vzdalenost + ] + writer.writerow([now.strftime("%Y-%m-%d %H:%M:%S")] + hodnoty) + print(f"{i+1}/{pocet_iteraci}") + time.sleep(1) \ No newline at end of file diff --git a/prikazy_pip.md b/prikazy_pip.md new file mode 100644 index 0000000..82881dd --- /dev/null +++ b/prikazy_pip.md @@ -0,0 +1,130 @@ +# Přehled příkazů - Python knihovny a venv + +## 🌐 Virtuální prostředí (venv) + +### Vytvoření venv +```cmd +python -m venv .venv +``` +- `.venv` - je název složky, do které vytvoří virtuální prostředí +- Můžeš použít i jiný název, ale `.venv` je standard + +### Aktivace venv +```cmd +.venv\Scripts\activate +``` +- Po aktivaci uvidíš `(.venv)` před příkazovou řádkou +- **Všechny následující příkazy pip budou fungovat jen pro toto prostředí!** + +### Deaktivace venv +```cmd +deactivate +``` +- Vrátí tě zpět do globálního Pythonu + +--- + +## 📦 Instalace knihoven (pip) + +### Instalace jedné knihovny +```cmd +pip install +``` + +### Instalace více knihoven najednou +```cmd +pip install matplotlib numpy +``` + +### Příklady z hodiny +```cmd +pip install termcolor +pip install matplotlib numpy +``` + +### Instalace konkrétní verze +```cmd +pip install termcolor==1.1.0 +``` + +--- + +## 📋 Správa nainstalovaných knihoven + +### Výpis všech nainstalovaných knihoven +```cmd +pip list +``` + +### Zobrazení info o konkrétní knihovně +```cmd +pip show termcolor +``` + +### Aktualizace knihovny +```cmd +pip install --upgrade termcolor +``` + +### Odinstalování knihovny +```cmd +pip uninstall termcolor +``` + +--- + +## 💾 Práce s requirements.txt + +### Vytvoření seznamu knihoven (export) +```cmd +pip freeze > requirements.txt +``` +- Uloží seznam všech nainstalovaných knihoven do souboru +- Užitečné pro sdílení projektu s jinými + +### Instalace ze seznamu (import) +```cmd +pip install -r requirements.txt +``` +- Nainstaluje všechny knihovny ze souboru najednou +- Použiješ, když někdo sdílí projekt s tebou + +--- + +## 🔍 Další užitečné příkazy + +### Kontrola verze pip +```cmd +pip --version +``` + +### Aktualizace pip samotného +```cmd +python -m pip install --upgrade pip +``` + +### Vyhledání knihovny +```cmd +pip search +``` +*(Poznámka: tento příkaz je momentálně vypnutý na PyPI, používej [pypi.org](https://pypi.org))* + +--- + +## 🎯 Typický workflow + +1. Vytvoř projekt (složku) +2. Vytvoř venv: `python -m venv .venv` +3. Aktivuj venv: `.venv\Scripts\activate` +4. Nainstaluj knihovny: `pip install termcolor` +5. Programuj! 💻 +6. Před koncem práce: `pip freeze > requirements.txt` +7. Deaktivuj: `deactivate` + +--- + +## ⚠️ Důležité + +- **Vždy aktivuj venv před instalací knihoven!** +- Složku `.venv` **NIKDY** nepřidávej do Gitu (dej ji do `.gitignore`) +- Místo toho sdílej `requirements.txt` \ No newline at end of file