trend/plottemp.py

73 lines
2.8 KiB
Python
Raw Permalink Normal View History

2023-09-06 12:09:11 +02:00
#!/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()