Initial commit

This commit is contained in:
Gitea 2023-09-06 12:09:11 +02:00
commit 4182d49adb
19 changed files with 20537 additions and 0 deletions

2133
Aktuelle_Temperaturwerte.svg Normal file

File diff suppressed because it is too large Load diff

After

Width:  |  Height:  |  Size: 79 KiB

7223
Temperaturverlauf.svg Normal file

File diff suppressed because it is too large Load diff

After

Width:  |  Height:  |  Size: 302 KiB

2151
Temperaturverlauf_Tank2.svg Normal file

File diff suppressed because it is too large Load diff

After

Width:  |  Height:  |  Size: 80 KiB

22
change.py Executable file
View file

@ -0,0 +1,22 @@
import sqlite3
# SQLite-Datenbankverbindung herstellen
conn = sqlite3.connect('temperaturen.db')
cursor = conn.cursor()
# Funktion zum Aktualisieren der Tanknamen in der Datenbank
def update_tankname(table_name, old_name, new_name):
cursor.execute(f"UPDATE {table_name} SET messstelle = ? WHERE messstelle = ?",
(new_name, old_name))
conn.commit()
# Korrektur durchführen (Tabelle "istwert")
update_tankname("istwert", "Tank 1", "1")
update_tankname("istwert", "Tank 2", "2")
# Korrektur durchführen (Tabelle "sollwert")
update_tankname("sollwert", "Tank 1", "1")
update_tankname("sollwert", "Tank 2", "2")
# Die Datenbankverbindung schließen
conn.close()

60
cron_temp.py Executable file
View file

@ -0,0 +1,60 @@
#!/usr/bin/env python3
import requests
from bs4 import BeautifulSoup
import sqlite3
# URL der HTML-Seite, die Sie abrufen möchten
url = "http://localhost:5010"
# HTTP-Anfrage senden und den HTML-Inhalt abrufen
response = requests.get(url)
html = response.text
# HTML-Dokument in BeautifulSoup-Objekt umwandeln
soup = BeautifulSoup(html, 'html.parser')
# Die Daten in der Tabelle extrahieren
table = soup.find('table')
rows = table.find_all('tr')
# Initialisieren der Tanknummern mit 1 und 2
tank1_nummer = 1
tank2_nummer = 2
# SQLite-Datenbankverbindung herstellen
db_path = '/home/divers/datenbank/temperaturen.db'
conn = sqlite3.connect(db_path)
cursor = conn.cursor()
# Funktion zum Einfügen von Tanknummern und Temperaturwerten in die Datenbank
def insert_temperature(table_name, tanknummer, temperatur):
cursor.execute(f"INSERT INTO {table_name} (messstelle, temperatur) VALUES (?, ?)",
(tanknummer, temperatur))
conn.commit()
# Daten in die Datenbank eintragen (Tabelle "istwert")
for row in rows[1:-1]:
columns = row.find_all('td')
if len(columns) >= 3:
tank_name = columns[0].text
istwert_text = columns[1].text.strip() # Temperaturwert ohne Leerzeichen am Anfang/Ende
if istwert_text: # Nur wenn die Zeichenfolge nicht leer ist
istwert = float(istwert_text.split('°')[0]) # Extrahieren des Istwertes und Konvertieren in Float
tank_nummer = int(tank_name.split()[-1]) # Extrahieren der Tanknummer aus dem Namen
insert_temperature("istwert", tank_nummer, istwert)
# Daten in die Datenbank eintragen (Tabelle "sollwert")
for row in rows[1:-1]:
columns = row.find_all('td')
if len(columns) >= 3:
tank_name = columns[0].text
sollwert_text = columns[2].text.strip() # Temperaturwert ohne Leerzeichen am Anfang/Ende
if sollwert_text: # Nur wenn die Zeichenfolge nicht leer ist
sollwert = float(sollwert_text.split('°')[0]) # Extrahieren des Sollwertes und Konvertieren in Float
tank_nummer = int(tank_name.split()[-1]) # Extrahieren der Tanknummer aus dem Namen
insert_temperature("sollwert", tank_nummer, sollwert)
# Die Datenbankverbindung schließen
conn.close()

168
data.csv Normal file
View file

@ -0,0 +1,168 @@
id,temperature,Timestamp
1,13.25,"2023-09-04 21:52:27"
2,13.38,"2023-09-04 21:54:24"
3,13.38,"2023-09-04 22:05:01"
4,13.5,"2023-09-04 22:07:01"
5,13.5,"2023-09-04 22:10:01"
6,13.5,"2023-09-04 22:15:02"
7,13.63,"2023-09-04 22:20:01"
8,13.63,"2023-09-04 22:25:02"
9,13.75,"2023-09-04 22:30:01"
10,13.75,"2023-09-04 22:35:02"
11,13.88,"2023-09-04 22:40:01"
12,13.88,"2023-09-04 22:45:01"
13,14.0,"2023-09-04 22:50:02"
14,14.0,"2023-09-04 22:55:01"
15,14.0,"2023-09-04 23:00:02"
16,14.13,"2023-09-04 23:05:02"
17,14.13,"2023-09-04 23:10:01"
18,14.13,"2023-09-04 23:15:02"
19,14.13,"2023-09-04 23:20:02"
20,14.25,"2023-09-04 23:25:01"
21,14.25,"2023-09-04 23:30:02"
22,14.25,"2023-09-04 23:35:01"
23,14.38,"2023-09-04 23:40:02"
24,14.5,"2023-09-04 23:45:02"
25,14.38,"2023-09-04 23:50:01"
26,14.38,"2023-09-04 23:55:02"
27,14.5,"2023-09-05 00:00:01"
28,14.5,"2023-09-05 00:05:02"
29,14.63,"2023-09-05 00:10:01"
30,14.63,"2023-09-05 00:15:01"
31,14.63,"2023-09-05 00:20:02"
32,14.63,"2023-09-05 00:25:02"
33,14.75,"2023-09-05 00:30:01"
34,14.63,"2023-09-05 00:35:02"
35,14.75,"2023-09-05 00:40:01"
36,14.75,"2023-09-05 00:45:01"
37,14.75,"2023-09-05 00:50:02"
38,14.88,"2023-09-05 00:55:01"
39,14.88,"2023-09-05 01:00:02"
40,14.88,"2023-09-05 01:05:01"
41,14.88,"2023-09-05 01:10:02"
42,15.0,"2023-09-05 01:15:02"
43,14.88,"2023-09-05 01:20:01"
44,15.0,"2023-09-05 01:25:02"
45,15.0,"2023-09-05 01:30:02"
46,15.0,"2023-09-05 01:35:01"
47,15.13,"2023-09-05 01:40:02"
48,15.0,"2023-09-05 01:45:02"
49,15.13,"2023-09-05 01:50:01"
50,15.13,"2023-09-05 01:55:02"
51,15.13,"2023-09-05 02:00:01"
52,15.13,"2023-09-05 02:05:02"
53,15.13,"2023-09-05 02:10:02"
54,15.25,"2023-09-05 02:15:01"
55,15.25,"2023-09-05 02:20:02"
56,15.25,"2023-09-05 02:25:01"
57,15.25,"2023-09-05 02:30:02"
58,15.25,"2023-09-05 02:35:02"
59,15.38,"2023-09-05 02:40:02"
60,15.38,"2023-09-05 02:45:01"
61,15.38,"2023-09-05 02:50:02"
62,15.38,"2023-09-05 02:55:01"
63,15.38,"2023-09-05 03:00:02"
64,15.5,"2023-09-05 03:05:02"
65,15.5,"2023-09-05 03:10:01"
66,15.5,"2023-09-05 03:15:02"
67,15.63,"2023-09-05 03:20:01"
68,15.5,"2023-09-05 03:25:01"
69,15.63,"2023-09-05 03:30:02"
70,15.63,"2023-09-05 03:35:01"
71,15.63,"2023-09-05 03:40:01"
72,15.75,"2023-09-05 03:45:01"
73,15.75,"2023-09-05 03:50:02"
74,15.75,"2023-09-05 03:55:01"
75,15.75,"2023-09-05 04:00:02"
76,15.75,"2023-09-05 04:05:01"
77,15.75,"2023-09-05 04:10:02"
78,15.75,"2023-09-05 04:15:02"
79,15.75,"2023-09-05 04:20:01"
80,15.88,"2023-09-05 04:25:02"
81,15.88,"2023-09-05 04:30:01"
82,15.88,"2023-09-05 04:35:01"
83,15.88,"2023-09-05 04:40:02"
84,15.88,"2023-09-05 04:45:02"
85,16.0,"2023-09-05 04:50:01"
86,15.88,"2023-09-05 04:55:01"
87,15.88,"2023-09-05 05:00:02"
88,16.0,"2023-09-05 05:05:01"
89,16.0,"2023-09-05 05:10:02"
90,16.0,"2023-09-05 05:15:02"
91,16.0,"2023-09-05 05:20:01"
92,16.0,"2023-09-05 05:25:02"
93,16.12,"2023-09-05 05:30:01"
94,16.12,"2023-09-05 05:35:02"
95,16.12,"2023-09-05 05:40:02"
96,16.12,"2023-09-05 05:45:01"
97,16.12,"2023-09-05 05:50:01"
98,16.12,"2023-09-05 05:55:02"
99,16.25,"2023-09-05 06:00:02"
100,16.12,"2023-09-05 06:05:01"
101,16.25,"2023-09-05 06:10:02"
102,16.25,"2023-09-05 06:15:02"
103,16.25,"2023-09-05 06:20:01"
104,16.25,"2023-09-05 06:25:02"
105,16.37,"2023-09-05 06:30:02"
106,16.37,"2023-09-05 06:35:01"
107,16.37,"2023-09-05 06:40:02"
108,16.37,"2023-09-05 06:45:01"
109,16.5,"2023-09-05 06:50:02"
110,16.5,"2023-09-05 06:55:02"
111,16.5,"2023-09-05 07:00:01"
112,16.5,"2023-09-05 07:05:02"
113,16.62,"2023-09-05 07:10:02"
114,16.62,"2023-09-05 07:15:01"
115,16.62,"2023-09-05 07:20:02"
116,16.62,"2023-09-05 07:25:02"
117,16.62,"2023-09-05 07:30:02"
118,16.62,"2023-09-05 07:35:02"
119,16.62,"2023-09-05 07:40:02"
120,16.75,"2023-09-05 07:45:02"
121,16.75,"2023-09-05 07:50:02"
122,16.75,"2023-09-05 07:55:02"
123,16.87,"2023-09-05 08:00:01"
124,16.75,"2023-09-05 08:05:01"
125,16.87,"2023-09-05 08:10:02"
126,16.87,"2023-09-05 08:15:02"
127,16.87,"2023-09-05 08:20:02"
128,16.87,"2023-09-05 08:25:02"
129,17.0,"2023-09-05 08:30:02"
130,17.0,"2023-09-05 08:37:18"
131,17.0,"2023-09-05 08:45:02"
132,17.12,"2023-09-05 08:50:01"
133,17.12,"2023-09-05 08:55:02"
134,17.12,"2023-09-05 09:00:02"
135,17.12,"2023-09-05 09:05:02"
136,17.12,"2023-09-05 09:10:02"
137,17.25,"2023-09-05 09:15:02"
138,17.25,"2023-09-05 09:20:02"
139,17.25,"2023-09-05 09:25:01"
140,17.25,"2023-09-05 09:30:02"
141,17.37,"2023-09-05 09:35:02"
142,17.37,"2023-09-05 09:40:01"
143,17.37,"2023-09-05 09:45:01"
144,17.5,"2023-09-05 09:50:02"
145,17.37,"2023-09-05 09:55:02"
146,17.37,"2023-09-05 10:00:02"
147,17.5,"2023-09-05 10:05:02"
148,17.5,"2023-09-05 10:10:02"
149,17.5,"2023-09-05 10:15:02"
150,17.5,"2023-09-05 10:20:02"
151,17.5,"2023-09-05 10:25:24"
152,17.5,"2023-09-05 10:30:02"
153,17.62,"2023-09-05 10:35:02"
154,17.62,"2023-09-05 10:40:02"
155,17.62,"2023-09-05 10:45:01"
156,17.62,"2023-09-05 10:50:01"
157,17.75,"2023-09-05 10:55:01"
158,17.75,"2023-09-05 11:00:01"
159,17.75,"2023-09-05 11:05:02"
160,17.75,"2023-09-05 11:10:02"
161,17.87,"2023-09-05 11:15:02"
162,17.87,"2023-09-05 11:20:02"
163,17.87,"2023-09-05 11:25:01"
164,17.87,"2023-09-05 11:30:01"
165,18.0,"2023-09-05 11:35:02"
166,17.87,"2023-09-05 11:40:02"
167,18.0,"2023-09-05 11:45:02"
1 id temperature Timestamp
2 1 13.25 2023-09-04 21:52:27
3 2 13.38 2023-09-04 21:54:24
4 3 13.38 2023-09-04 22:05:01
5 4 13.5 2023-09-04 22:07:01
6 5 13.5 2023-09-04 22:10:01
7 6 13.5 2023-09-04 22:15:02
8 7 13.63 2023-09-04 22:20:01
9 8 13.63 2023-09-04 22:25:02
10 9 13.75 2023-09-04 22:30:01
11 10 13.75 2023-09-04 22:35:02
12 11 13.88 2023-09-04 22:40:01
13 12 13.88 2023-09-04 22:45:01
14 13 14.0 2023-09-04 22:50:02
15 14 14.0 2023-09-04 22:55:01
16 15 14.0 2023-09-04 23:00:02
17 16 14.13 2023-09-04 23:05:02
18 17 14.13 2023-09-04 23:10:01
19 18 14.13 2023-09-04 23:15:02
20 19 14.13 2023-09-04 23:20:02
21 20 14.25 2023-09-04 23:25:01
22 21 14.25 2023-09-04 23:30:02
23 22 14.25 2023-09-04 23:35:01
24 23 14.38 2023-09-04 23:40:02
25 24 14.5 2023-09-04 23:45:02
26 25 14.38 2023-09-04 23:50:01
27 26 14.38 2023-09-04 23:55:02
28 27 14.5 2023-09-05 00:00:01
29 28 14.5 2023-09-05 00:05:02
30 29 14.63 2023-09-05 00:10:01
31 30 14.63 2023-09-05 00:15:01
32 31 14.63 2023-09-05 00:20:02
33 32 14.63 2023-09-05 00:25:02
34 33 14.75 2023-09-05 00:30:01
35 34 14.63 2023-09-05 00:35:02
36 35 14.75 2023-09-05 00:40:01
37 36 14.75 2023-09-05 00:45:01
38 37 14.75 2023-09-05 00:50:02
39 38 14.88 2023-09-05 00:55:01
40 39 14.88 2023-09-05 01:00:02
41 40 14.88 2023-09-05 01:05:01
42 41 14.88 2023-09-05 01:10:02
43 42 15.0 2023-09-05 01:15:02
44 43 14.88 2023-09-05 01:20:01
45 44 15.0 2023-09-05 01:25:02
46 45 15.0 2023-09-05 01:30:02
47 46 15.0 2023-09-05 01:35:01
48 47 15.13 2023-09-05 01:40:02
49 48 15.0 2023-09-05 01:45:02
50 49 15.13 2023-09-05 01:50:01
51 50 15.13 2023-09-05 01:55:02
52 51 15.13 2023-09-05 02:00:01
53 52 15.13 2023-09-05 02:05:02
54 53 15.13 2023-09-05 02:10:02
55 54 15.25 2023-09-05 02:15:01
56 55 15.25 2023-09-05 02:20:02
57 56 15.25 2023-09-05 02:25:01
58 57 15.25 2023-09-05 02:30:02
59 58 15.25 2023-09-05 02:35:02
60 59 15.38 2023-09-05 02:40:02
61 60 15.38 2023-09-05 02:45:01
62 61 15.38 2023-09-05 02:50:02
63 62 15.38 2023-09-05 02:55:01
64 63 15.38 2023-09-05 03:00:02
65 64 15.5 2023-09-05 03:05:02
66 65 15.5 2023-09-05 03:10:01
67 66 15.5 2023-09-05 03:15:02
68 67 15.63 2023-09-05 03:20:01
69 68 15.5 2023-09-05 03:25:01
70 69 15.63 2023-09-05 03:30:02
71 70 15.63 2023-09-05 03:35:01
72 71 15.63 2023-09-05 03:40:01
73 72 15.75 2023-09-05 03:45:01
74 73 15.75 2023-09-05 03:50:02
75 74 15.75 2023-09-05 03:55:01
76 75 15.75 2023-09-05 04:00:02
77 76 15.75 2023-09-05 04:05:01
78 77 15.75 2023-09-05 04:10:02
79 78 15.75 2023-09-05 04:15:02
80 79 15.75 2023-09-05 04:20:01
81 80 15.88 2023-09-05 04:25:02
82 81 15.88 2023-09-05 04:30:01
83 82 15.88 2023-09-05 04:35:01
84 83 15.88 2023-09-05 04:40:02
85 84 15.88 2023-09-05 04:45:02
86 85 16.0 2023-09-05 04:50:01
87 86 15.88 2023-09-05 04:55:01
88 87 15.88 2023-09-05 05:00:02
89 88 16.0 2023-09-05 05:05:01
90 89 16.0 2023-09-05 05:10:02
91 90 16.0 2023-09-05 05:15:02
92 91 16.0 2023-09-05 05:20:01
93 92 16.0 2023-09-05 05:25:02
94 93 16.12 2023-09-05 05:30:01
95 94 16.12 2023-09-05 05:35:02
96 95 16.12 2023-09-05 05:40:02
97 96 16.12 2023-09-05 05:45:01
98 97 16.12 2023-09-05 05:50:01
99 98 16.12 2023-09-05 05:55:02
100 99 16.25 2023-09-05 06:00:02
101 100 16.12 2023-09-05 06:05:01
102 101 16.25 2023-09-05 06:10:02
103 102 16.25 2023-09-05 06:15:02
104 103 16.25 2023-09-05 06:20:01
105 104 16.25 2023-09-05 06:25:02
106 105 16.37 2023-09-05 06:30:02
107 106 16.37 2023-09-05 06:35:01
108 107 16.37 2023-09-05 06:40:02
109 108 16.37 2023-09-05 06:45:01
110 109 16.5 2023-09-05 06:50:02
111 110 16.5 2023-09-05 06:55:02
112 111 16.5 2023-09-05 07:00:01
113 112 16.5 2023-09-05 07:05:02
114 113 16.62 2023-09-05 07:10:02
115 114 16.62 2023-09-05 07:15:01
116 115 16.62 2023-09-05 07:20:02
117 116 16.62 2023-09-05 07:25:02
118 117 16.62 2023-09-05 07:30:02
119 118 16.62 2023-09-05 07:35:02
120 119 16.62 2023-09-05 07:40:02
121 120 16.75 2023-09-05 07:45:02
122 121 16.75 2023-09-05 07:50:02
123 122 16.75 2023-09-05 07:55:02
124 123 16.87 2023-09-05 08:00:01
125 124 16.75 2023-09-05 08:05:01
126 125 16.87 2023-09-05 08:10:02
127 126 16.87 2023-09-05 08:15:02
128 127 16.87 2023-09-05 08:20:02
129 128 16.87 2023-09-05 08:25:02
130 129 17.0 2023-09-05 08:30:02
131 130 17.0 2023-09-05 08:37:18
132 131 17.0 2023-09-05 08:45:02
133 132 17.12 2023-09-05 08:50:01
134 133 17.12 2023-09-05 08:55:02
135 134 17.12 2023-09-05 09:00:02
136 135 17.12 2023-09-05 09:05:02
137 136 17.12 2023-09-05 09:10:02
138 137 17.25 2023-09-05 09:15:02
139 138 17.25 2023-09-05 09:20:02
140 139 17.25 2023-09-05 09:25:01
141 140 17.25 2023-09-05 09:30:02
142 141 17.37 2023-09-05 09:35:02
143 142 17.37 2023-09-05 09:40:01
144 143 17.37 2023-09-05 09:45:01
145 144 17.5 2023-09-05 09:50:02
146 145 17.37 2023-09-05 09:55:02
147 146 17.37 2023-09-05 10:00:02
148 147 17.5 2023-09-05 10:05:02
149 148 17.5 2023-09-05 10:10:02
150 149 17.5 2023-09-05 10:15:02
151 150 17.5 2023-09-05 10:20:02
152 151 17.5 2023-09-05 10:25:24
153 152 17.5 2023-09-05 10:30:02
154 153 17.62 2023-09-05 10:35:02
155 154 17.62 2023-09-05 10:40:02
156 155 17.62 2023-09-05 10:45:01
157 156 17.62 2023-09-05 10:50:01
158 157 17.75 2023-09-05 10:55:01
159 158 17.75 2023-09-05 11:00:01
160 159 17.75 2023-09-05 11:05:02
161 160 17.75 2023-09-05 11:10:02
162 161 17.87 2023-09-05 11:15:02
163 162 17.87 2023-09-05 11:20:02
164 163 17.87 2023-09-05 11:25:01
165 164 17.87 2023-09-05 11:30:01
166 165 18.0 2023-09-05 11:35:02
167 166 17.87 2023-09-05 11:40:02
168 167 18.0 2023-09-05 11:45:02

31
datenbank.py Executable file
View file

@ -0,0 +1,31 @@
import sqlite3
# SQLite-Datenbankverbindung herstellen oder erstellen (temperatursteuerung.db)
conn = sqlite3.connect('temperaturen.db')
cursor = conn.cursor()
# Tabelle "istwert" erstellen
cursor.execute('''
CREATE TABLE IF NOT EXISTS istwert (
id INTEGER PRIMARY KEY AUTOINCREMENT,
messstelle INTEGER,
temperatur REAL,
zeitstempel TIMESTAMP DEFAULT CURRENT_TIMESTAMP
)
''')
# Tabelle "sollwert" erstellen
cursor.execute('''
CREATE TABLE IF NOT EXISTS sollwert (
id INTEGER PRIMARY KEY AUTOINCREMENT,
messstelle INTEGER,
temperatur REAL,
zeitstempel TIMESTAMP DEFAULT CURRENT_TIMESTAMP
)
''')
# Änderungen in der Datenbank speichern
conn.commit()
# Die Datenbankverbindung schließen
conn.close()

5499
diagramm.svg Normal file

File diff suppressed because it is too large Load diff

After

Width:  |  Height:  |  Size: 210 KiB

30
import.py Normal file
View file

@ -0,0 +1,30 @@
#!/usr/bin/env python3
import sqlite3
import csv
# Pfad zur CSV-Datei
csv_file = 'data.csv'
# Pfad zur SQLite-Datenbank
db_path = '/home/divers/datenbank/temperaturen.db'
# Verbindung zur SQLite-Datenbank herstellen
conn = sqlite3.connect(db_path)
cursor = conn.cursor()
# CSV-Datei öffnen und Daten einfügen
with open(csv_file, 'r') as file:
csv_reader = csv.DictReader(file)
for row in csv_reader:
temperature = float(row['temperature']) # Temperaturwert aus der CSV-Datei
timestamp = row['Timestamp'] # Zeitstempel aus der CSV-Datei
# SQL-Abfrage zum Einfügen des Datensatzes in die Tabelle "istwert"
cursor.execute("INSERT INTO istwert (messstelle, temperatur, zeitstempel) VALUES (?, ?, ?)",
(1, temperature, timestamp))
# Änderungen in der Datenbank speichern
conn.commit()
# Datenbankverbindung schließen
conn.close()

1301
istwert_tank1.svg Normal file

File diff suppressed because it is too large Load diff

After

Width:  |  Height:  |  Size: 43 KiB

50
plotact.py Executable file
View file

@ -0,0 +1,50 @@
#!/usr/bin/env python3
import matplotlib.pyplot as plt
import sqlite3
# Pfad zur Datenbank
db_path = '/home/divers/datenbank/temperaturen.db'
# SQLite-Datenbankverbindung herstellen
conn = sqlite3.connect(db_path)
cursor = conn.cursor()
# SQL-Abfrage, um die letzten 10 Istwerte von Tank 1 abzurufen
cursor.execute("SELECT zeitstempel, temperatur FROM istwert WHERE messstelle = 1 ORDER BY zeitstempel ASC LIMIT 30")
rows_tank1_istwert = cursor.fetchall()
datetimes_tank1_istwert = [row[0] for row in rows_tank1_istwert]
temperaturen_tank1_istwert = [row[1] for row in rows_tank1_istwert]
# SQL-Abfrage, um die letzten 10 Istwerte von Tank 2 abzurufen
cursor.execute("SELECT zeitstempel, temperatur FROM istwert WHERE messstelle = 2 ORDER BY zeitstempel ASC LIMIT 30")
rows_tank2_istwert = cursor.fetchall()
datetimes_tank2_istwert = [row[0] for row in rows_tank2_istwert]
temperaturen_tank2_istwert = [row[1] for row in rows_tank2_istwert]
conn.close()
# Grafik erstellen
plt.figure(figsize=(12, 8))
# Plot für Istwert (Tank 1)
plt.plot(datetimes_tank1_istwert, temperaturen_tank1_istwert, label='Istwert Tank 1', color='blue')
# Plot für Istwert (Tank 2)
plt.plot(datetimes_tank2_istwert, temperaturen_tank2_istwert, label='Istwert Tank 2', color='green')
plt.xlabel('Zeitstempel')
plt.ylabel('Temperatur (°C)')
plt.title('Aktuelle Temperaturwerte von Tank 1 und Tank 2')
# Vertikale Ausrichtung der x-Achsenbeschriftung
plt.xticks(rotation='vertical')
plt.legend()
plt.grid(True)
# Speichern Sie die Grafik als SVG-Datei
plt.savefig('AktuellT1T2.svg', format='svg', bbox_inches='tight')
# Grafik anzeigen (optional)
plt.show()

54
plott1.py Executable file
View file

@ -0,0 +1,54 @@
#!/usr/bin/env python3
import matplotlib.pyplot as plt
import sqlite3
# Pfad zur Datenbank
db_path = '/home/divers/datenbank/temperaturen.db'
# SQLite-Datenbankverbindung herstellen
conn = sqlite3.connect(db_path)
cursor = conn.cursor()
# SQL-Abfrage, um die Zeitstempel und Temperaturen zu erhalten (Tabelle "istwert" für Tank 1)
cursor.execute("SELECT zeitstempel, temperatur FROM istwert WHERE messstelle = 1")
rows_istwert = cursor.fetchall()
# SQL-Abfrage, um die Zeitstempel und Temperaturen zu erhalten (Tabelle "sollwert" für Tank 1)
cursor.execute("SELECT zeitstempel, temperatur FROM sollwert WHERE messstelle = 1")
rows_sollwert = cursor.fetchall()
conn.close()
# Die Zeitstempel und Temperaturen in separate Listen aufteilen (Istwert)
datetimes_istwert = [row[0] for row in rows_istwert]
temperaturen_istwert = [row[1] for row in rows_istwert]
# Die Zeitstempel und Temperaturen in separate Listen aufteilen (Sollwert)
datetimes_sollwert = [row[0] for row in rows_sollwert]
temperaturen_sollwert = [row[1] for row in rows_sollwert]
# Grafik erstellen
plt.figure(figsize=(10, 8)) # Vergrößern Sie die Höhe des Grafikbereichs
# Plot für Istwert (Tank 1)
plt.plot(datetimes_istwert, temperaturen_istwert, label='Istwert Tank 1', color='blue')
# Plot für Sollwert (Tank 1)
plt.plot(datetimes_sollwert, temperaturen_sollwert, label='Sollwert Tank 1', color='red', linestyle='--')
plt.xlabel('Zeitstempel')
plt.ylabel('Temperatur (°C)')
plt.title('Temperaturverlauf Tank 1 (Istwert und Sollwert)')
# Vertikale Ausrichtung der x-Achsenbeschriftung
plt.xticks(rotation='vertical')
plt.legend()
plt.grid(True)
# Speichern Sie die Grafik als SVG-Datei
plt.savefig('Temperaturverlauf.svg', format='svg', bbox_inches='tight')
# Grafik anzeigen (optional)
plt.show()

52
plott2.py Executable file
View file

@ -0,0 +1,52 @@
#!/usr/bin/env python3
import matplotlib.pyplot as plt
import sqlite3
# Pfad zur Datenbank
db_path = '/home/divers/datenbank/temperaturen.db'
# SQLite-Datenbankverbindung herstellen
conn = sqlite3.connect(db_path)
cursor = conn.cursor()
# SQL-Abfrage, um die Zeitstempel und Temperaturen zu erhalten (Tabelle "istwert" für Tank 2)
cursor.execute("SELECT zeitstempel, temperatur FROM istwert WHERE messstelle = 2")
rows_istwert_tank2 = cursor.fetchall()
# SQL-Abfrage, um die Zeitstempel und Temperaturen zu erhalten (Tabelle "sollwert" für Tank 2)
cursor.execute("SELECT zeitstempel, temperatur FROM sollwert WHERE messstelle = 2")
rows_sollwert_tank2 = cursor.fetchall()
conn.close()
# Die Zeitstempel und Temperaturen in separate Listen aufteilen (Istwert und Sollwert Tank 2)
datetimes_istwert_tank2 = [row[0] for row in rows_istwert_tank2]
temperaturen_istwert_tank2 = [row[1] for row in rows_istwert_tank2]
datetimes_sollwert_tank2 = [row[0] for row in rows_sollwert_tank2]
temperaturen_sollwert_tank2 = [row[1] for row in rows_sollwert_tank2]
# Grafik erstellen
plt.figure(figsize=(10, 8)) # Vergrößern Sie die Höhe des Grafikbereichs
# Plot für Istwert (Tank 2)
plt.plot(datetimes_istwert_tank2, temperaturen_istwert_tank2, label='Istwert Tank 2', color='green')
# Plot für Sollwert (Tank 2)
plt.plot(datetimes_sollwert_tank2, temperaturen_sollwert_tank2, label='Sollwert Tank 2', color='orange', linestyle='--')
plt.xlabel('Zeitstempel')
plt.ylabel('Temperatur (°C)')
plt.title('Temperaturverlauf Tank 2 (Istwert und Sollwert)')
# Vertikale Ausrichtung der x-Achsenbeschriftung
plt.xticks(rotation='vertical')
plt.legend()
plt.grid(True)
# Speichern Sie die Grafik als SVG-Datei
plt.savefig('Temperaturverlauf_Tank2.svg', format='svg', bbox_inches='tight')
# Grafik anzeigen (optional)
plt.show()

72
plottemp.py Executable file
View file

@ -0,0 +1,72 @@
#!/usr/bin/env python3
import matplotlib.pyplot as plt
import sqlite3
# Pfad zur Datenbank
db_path = '/home/divers/datenbank/temperaturen.db'
# SQLite-Datenbankverbindung herstellen
conn = sqlite3.connect(db_path)
cursor = conn.cursor()
# SQL-Abfrage, um die Zeitstempel und Temperaturen zu erhalten (Tabelle "istwert" für Tank 1)
cursor.execute("SELECT zeitstempel, temperatur FROM istwert WHERE messstelle = 1")
rows_istwert_tank1 = cursor.fetchall()
# SQL-Abfrage, um die Zeitstempel und Temperaturen zu erhalten (Tabelle "sollwert" für Tank 1)
cursor.execute("SELECT zeitstempel, temperatur FROM sollwert WHERE messstelle = 1")
rows_sollwert_tank1 = cursor.fetchall()
# SQL-Abfrage, um die Zeitstempel und Temperaturen zu erhalten (Tabelle "istwert" für Tank 2)
cursor.execute("SELECT zeitstempel, temperatur FROM istwert WHERE messstelle = 2")
rows_istwert_tank2 = cursor.fetchall()
# SQL-Abfrage, um die Zeitstempel und Temperaturen zu erhalten (Tabelle "sollwert" für Tank 2)
cursor.execute("SELECT zeitstempel, temperatur FROM sollwert WHERE messstelle = 2")
rows_sollwert_tank2 = cursor.fetchall()
conn.close()
# Die Zeitstempel und Temperaturen in separate Listen aufteilen (Istwert und Sollwert Tank 1)
datetimes_istwert_tank1 = [row[0] for row in rows_istwert_tank1]
temperaturen_istwert_tank1 = [row[1] for row in rows_istwert_tank1]
datetimes_sollwert_tank1 = [row[0] for row in rows_sollwert_tank1]
temperaturen_sollwert_tank1 = [row[1] for row in rows_sollwert_tank1]
# Die Zeitstempel und Temperaturen in separate Listen aufteilen (Istwert und Sollwert Tank 2)
datetimes_istwert_tank2 = [row[0] for row in rows_istwert_tank2]
temperaturen_istwert_tank2 = [row[1] for row in rows_istwert_tank2]
datetimes_sollwert_tank2 = [row[0] for row in rows_sollwert_tank2]
temperaturen_sollwert_tank2 = [row[1] for row in rows_sollwert_tank2]
# Grafik erstellen
plt.figure(figsize=(10, 8)) # Vergrößern Sie die Höhe des Grafikbereichs
# Plot für Istwert (Tank 1)
plt.plot(datetimes_istwert_tank1, temperaturen_istwert_tank1, label='Istwert Tank 1', color='blue')
# Plot für Sollwert (Tank 1)
plt.plot(datetimes_sollwert_tank1, temperaturen_sollwert_tank1, label='Sollwert Tank 1', color='red', linestyle='--')
# Plot für Istwert (Tank 2)
plt.plot(datetimes_istwert_tank2, temperaturen_istwert_tank2, label='Istwert Tank 2', color='green')
# Plot für Sollwert (Tank 2)
plt.plot(datetimes_sollwert_tank2, temperaturen_sollwert_tank2, label='Sollwert Tank 2', color='orange', linestyle='--')
plt.xlabel('Zeitstempel')
plt.ylabel('Temperatur (°C)')
plt.title('Temperaturverlauf Tank 1 und Tank 2 (Istwert und Sollwert)')
# Vertikale Ausrichtung der x-Achsenbeschriftung
plt.xticks(rotation='vertical')
plt.legend()
plt.grid(True)
# Speichern Sie die Grafik als SVG-Datei
plt.savefig('Temperaturverlauf.svg', format='svg', bbox_inches='tight')
# Grafik anzeigen (optional)
plt.show()

22
show.py Executable file
View file

@ -0,0 +1,22 @@
#!/usr/bin/env python3
import sqlite3
# SQLite-Datenbankverbindung herstellen
conn = sqlite3.connect('temperaturen.db')
cursor = conn.cursor()
# Funktion zum Auslesen und Ausgeben der Werte
def read_and_print_table(table_name):
print(f"Auslesen der Tabelle '{table_name}':")
cursor.execute(f"SELECT * FROM {table_name}")
rows = cursor.fetchall()
for row in rows:
print(row)
# Tabellen "istwert" und "sollwert" auslesen und ausgeben
read_and_print_table("istwert")
read_and_print_table("sollwert")
# Die Datenbankverbindung schließen
conn.close()

24
temp.py Executable file
View file

@ -0,0 +1,24 @@
import sqlite3
# Pfad zur Datenbank
db_path = '/home/divers/datenbank/temperaturen.db'
# SQLite-Datenbankverbindung herstellen
conn = sqlite3.connect(db_path)
cursor = conn.cursor()
# SQL-Update-Statement zum Entfernen von "°C" aus der Temperaturspalte
update_query = """
UPDATE sollwert
SET temperatur = REPLACE(temperatur, '°C', '')
WHERE temperatur LIKE '%°C'
"""
# Führen Sie das Update-Statement aus
cursor.execute(update_query)
conn.commit()
# Die Datenbankverbindung schließen
conn.close()
print("°C-Symbole in der Temperaturspalte entfernt.")

BIN
temperaturen.db Normal file

Binary file not shown.

1564
temperaturverlauf.svg Normal file

File diff suppressed because it is too large Load diff

After

Width:  |  Height:  |  Size: 56 KiB

81
trend.py Executable file
View file

@ -0,0 +1,81 @@
#!/usr/bin/env python3
import cgi
import sqlite3
import mpld3
import matplotlib.pyplot as plt
from datetime import datetime, timedelta
import csv
from io import StringIO
# Parse the form data
form = cgi.FieldStorage()
# Get the current date and time
current_datetime = datetime.now()
# Calculate one day before and after the current date at 22:22
start_datetime_default = current_datetime - timedelta(days=1, hours=current_datetime.hour, minutes=current_datetime.minute, seconds=current_datetime.second)
start_datetime_default = start_datetime_default.replace(hour=22, minute=22, second=0)
end_datetime_default = current_datetime + timedelta(days=1, hours=1, minutes=38) # Assuming you want 24 hours + 1 hour and 38 minutes
end_datetime_default = end_datetime_default.replace(hour=22, minute=22, second=0)
# Get the selected start and end dates with times from the form, or use the defaults
start_datetime = form.getvalue("start_datetime", start_datetime_default.strftime("%Y-%m-%dT%H:%M"))
end_datetime = form.getvalue("end_datetime", end_datetime_default.strftime("%Y-%m-%dT%H:%M"))
# Establish a connection to the database (please adjust the database path)
conn = sqlite3.connect('/home/divers/datenbank/temperaturen.db')
cursor = conn.cursor()
# Create a function to generate the temperature plot and CSV data
def generate_temperature_plot_and_csv(start_datetime, end_datetime):
cursor.execute("SELECT zeitstempel, temperatur FROM istwert WHERE messstelle = 1 AND zeitstempel BETWEEN ? AND ?", (start_datetime, end_datetime))
rows = cursor.fetchall()
timestamps = [datetime.strptime(row[0], "%Y-%m-%d %H:%M:%S").strftime("%Y-%m-%d %H:%M:%S") for row in rows]
temperaturen = [row[1] for row in rows]
# Generate CSV data
csv_data = "Zeitstempel,Temperatur (°C)\n"
csv_data += "\n".join([f"{timestamps[i]},{temperaturen[i]}" for i in range(len(timestamps))])
plt.figure(figsize=(10, 5))
plt.plot(timestamps, temperaturen, marker='o', linestyle='-', color='b')
plt.xlabel('Zeitstempel')
plt.ylabel('Temperatur (°C)')
plt.title('Temperaturverlauf Tank 1')
plt.grid(True)
plot_html = mpld3.fig_to_html(plt.gcf())
plt.close()
return plot_html, csv_data
# Generate the temperature plot and CSV data
temperature_plot, csv_data = generate_temperature_plot_and_csv(start_datetime, end_datetime)
# Generate the HTML page with the temperature plot and CSV data
print("Content-type: text/html\n")
print("<html>")
print("<head>")
print("<title>Temperaturverlauf</title>")
print("</head>")
print("<body>")
print("<h1>Temperaturverlauf Tank 1</h1>")
print("<form method='POST'>")
print("Startdatum und Uhrzeit: <input type='datetime-local' name='start_datetime' value='{}'><br>".format(start_datetime))
print("Enddatum und Uhrzeit: <input type='datetime-local' name='end_datetime' value='{}'><br>".format(end_datetime))
print("<input type='submit' value='Anzeigen'>")
print("</form>")
print(temperature_plot)
print("<h2>Dargestellte Werte als CSV</h2>")
print("<pre>")
print(csv_data)
print("</pre>")
print("</body>")
print("</html>")
# Close the database connection
conn.close()