summaryrefslogtreecommitdiff
path: root/plot_new.py
diff options
context:
space:
mode:
Diffstat (limited to 'plot_new.py')
-rw-r--r--plot_new.py128
1 files changed, 0 insertions, 128 deletions
diff --git a/plot_new.py b/plot_new.py
deleted file mode 100644
index 4a6ee16..0000000
--- a/plot_new.py
+++ /dev/null
@@ -1,128 +0,0 @@
-#!/usr/bin/python3
-import sys
-import sqlite3
-import matplotlib.pyplot as plt
-import numpy as np
-from datetime import datetime, timedelta
-import matplotlib.dates as mdates
-from PIL import Image
-
-# Funktion zum Lesen von Temperatur-, Luftfeuchtigkeits- und Zeitstempeldaten aus der SQLite-Datenbank
-def read_data_from_db(db_name):
- try:
- conn = sqlite3.connect(db_name)
- cursor = conn.cursor()
- cursor.execute("SELECT timestamp, temperature, humidity FROM sensor_data")
- data = cursor.fetchall()
- conn.close()
- return data
- except sqlite3.Error as e:
- print(f"Fehler beim Lesen aus der Datenbank: {e}")
- return []
-
-# Funktion zum Erstellen eines Diagramms für Temperatur und Luftfeuchtigkeit (800x200 Pixel)
-def create_temperature_humidity_plot(records, output_filename):
- if not records:
- print("Keine Daten gefunden.")
- return
-
- # Aktuelle Zeit und Filterzeitraum (letzte 24 Stunden)
- now = datetime.now()
- last_24_hours = now - timedelta(hours=24)
-
- # Filtern der Datensätze nach den letzten 24 Stunden
- filtered_records = [
- (datetime.strptime(timestamp, "%Y-%m-%d %H:%M:%S"), temperature, humidity)
- for timestamp, temperature, humidity in records
- if datetime.strptime(timestamp, "%Y-%m-%d %H:%M:%S") >= last_24_hours
- ]
- if not filtered_records:
- print("Keine Daten in den letzten 24 Stunden gefunden.")
- return
-
- # Extrahieren von Zeitstempeln, Temperaturen und Luftfeuchtigkeit
- times = [timestamp for timestamp, _, _ in filtered_records]
- temperatures = [temperature for _, temperature, _ in filtered_records]
- humidities = [humidity for _, _, humidity in filtered_records]
-
- # Grenzen für die y-Achsen basierend auf den Daten
- min_temp = np.floor(min(temperatures) / 5) * 5
- max_temp = np.ceil(max(temperatures) / 5) * 5
- min_humidity = np.floor(min(humidities) / 10) * 10
- max_humidity = np.ceil(max(humidities) / 10) * 10
-
- # Diagramm zeichnen (800x200 Pixel)
- fig, ax1 = plt.subplots(figsize=(8, 2), dpi=100)
-
- # Temperaturplot (linke Y-Achse)
- ax1.set_xlabel('Uhrzeit', color='white')
- ax1.set_ylabel('Temperatur (°C)', color='tab:red')
- ax1.plot(times, temperatures, color='tab:red', label='Temperatur')
- ax1.tick_params(axis='y', labelcolor='tab:red')
- ax1.tick_params(axis='x', colors='white')
- ax1.set_ylim(min_temp, max_temp)
- ax1.spines['top'].set_color('white')
- ax1.spines['bottom'].set_color('white')
- ax1.spines['left'].set_color('white')
- ax1.spines['right'].set_color('white')
-
- # Luftfeuchtigkeitsplot (rechte Y-Achse)
- ax2 = ax1.twinx()
- ax2.set_ylabel('Luftfeuchtigkeit (%)', color='tab:blue')
- ax2.plot(times, humidities, color='tab:blue', label='Luftfeuchtigkeit')
- ax2.tick_params(axis='y', labelcolor='tab:blue')
- ax2.set_ylim(min_humidity, max_humidity)
- ax2.spines['top'].set_color('white')
- ax2.spines['bottom'].set_color('white')
- ax2.spines['left'].set_color('white')
- ax2.spines['right'].set_color('white')
-
- # X-Achse formatieren
- ax1.xaxis.set_major_formatter(mdates.DateFormatter('%H:%M'))
- fig.tight_layout()
-
- # Diagramm speichern (transparent)
- plt.savefig(output_filename, transparent=True, bbox_inches='tight')
- plt.close()
-
-# Funktion zum Überlagern des Diagramms auf das Basisbild
-def overlay_plot_on_image(base_image_path, plot_image_path, output_image_path):
- try:
- base_image = Image.open(base_image_path)
- plot_image = Image.open(plot_image_path).resize((800, 200)) # Größe des Plots anpassen
-
- # Überlagern des Diagramms auf das Basisbild (mit Transparenz)
- base_image.paste(plot_image, (112, 0), plot_image) # Zentrieren: (1024 - 800) / 2 = 112
-
- # Kombiniertes Bild speichern
- base_image.save(output_image_path)
- print(f"Kombiniertes Bild gespeichert als {output_image_path}")
- except Exception as e:
- print(f"Fehler beim Überlagern des Diagramms: {e}")
-
-# Hauptfunktion
-def main():
- if len(sys.argv) != 3:
- print("Bitte geben Sie den Pfad zum Basisbild und den Pfad zum Ausgabebild an.")
- sys.exit(1)
-
- base_image_path = sys.argv[1]
- output_image_path = sys.argv[2]
-
- db_name = "/var/www/html/sensor_data.db"
-
- # Daten aus der Datenbank lesen
- records = read_data_from_db(db_name)
-
- # Temporäre Datei für das transparente Temperatur- und Feuchtigkeitsdiagramm
- plot_filename = "temperature_humidity_plot.png"
-
- # Diagramm erstellen und speichern
- create_temperature_humidity_plot(records, plot_filename)
-
- # Basisbild laden und Diagramm überlagern
- overlay_plot_on_image(base_image_path, plot_filename, output_image_path)
-
-if __name__ == "__main__":
- main()
-