diff --git a/data_base_influx.py b/data_base_influx.py new file mode 100644 index 0000000..a7109bb --- /dev/null +++ b/data_base_influx.py @@ -0,0 +1,33 @@ +from influxdb_client import InfluxDBClient, Point, WritePrecision +from datetime import datetime + +class DataBaseInflux: + def __init__(self, url: str, token: str, org: str, bucket: str): + self.url = url + self.token = token + self.org = org + self.bucket = bucket + self.client = InfluxDBClient(url=self.url, token=self.token, org=self.org) + self.write_api = self.client.write_api(write_options=None) + + def store_data(self, data: dict): + measurement = "messungen" # Fest auf "messungen" gesetzt + + point = Point(measurement) + + # Alle Key/Value-Paare als Fields speichern + for key, value in data.items(): + point = point.field(key, value) + + # Zeitstempel automatisch auf jetzt setzen + point = point.time(datetime.utcnow(), WritePrecision.NS) + + # Punkt in InfluxDB schreiben + self.write_api.write(bucket=self.bucket, org=self.org, record=point) + +db = DataBaseInflux( + url="http://localhost:8086", + token="Cw_naEZyvJ3isiAh1P4Eq3TsjcHmzzDFS7SlbKDsS6ZWL04fMEYixWqtNxGThDdG27S9aW5g7FP9eiq5z1rsGA==", + org="allmende", + bucket="allmende_db" +) \ No newline at end of file diff --git a/main.py b/main.py index dcfb5d3..bc5d29b 100644 --- a/main.py +++ b/main.py @@ -1,11 +1,18 @@ import time from datetime import datetime from data_base_csv import DataBaseCsv +from data_base_influx import DataBaseInflux from heat_pump import HeatPump interval = 10 # z.B. alle 10 Sekunden -db = DataBaseCsv('modbus_log.csv') +#db = DataBaseCsv('modbus_log.csv') +db = DataBaseInflux( + url="http://localhost:8086", + token="Cw_naEZyvJ3isiAh1P4Eq3TsjcHmzzDFS7SlbKDsS6ZWL04fMEYixWqtNxGThDdG27S9aW5g7FP9eiq5z1rsGA==", + org="allmende", + bucket="allmende_db" +) hp = HeatPump(ip_address='10.0.0.10') while True: diff --git a/plot_data.py b/plot_data.py new file mode 100644 index 0000000..0b3a8a2 --- /dev/null +++ b/plot_data.py @@ -0,0 +1,41 @@ +# Neu laden nach Code-Reset +import pandas as pd +import matplotlib.pyplot as plt + +# Pfad zur neu hochgeladenen Datei +file_path = "modbus_log.csv" +df_new = pd.read_csv(file_path) + +# Zeitstempel in datetime konvertieren +df_new['Zeit'] = pd.to_datetime(df_new['Zeit']) + +# Spaltenbezeichnungen für den Plot +registers = [ + '10 - Gebäudeseite Wärmepumpe Vorlauf/Austritt (Warm)', + '11 - Gebäudeseite Wärmepumpe Rücklauf/Eintritt (Kalt)', + '12 - Umweltseite/Quelle Wärmepumpe Eintritt (Warm)', + '13 - Umweltseite/Quelle Wärmepumpe Austritt (Kalt)', + '50 - Rücklauftemperatur Direkterheizkreis oder Puffertemperatur', + '70 - Vorlauftemperatur Mischerkreis 1', + '150 - Trinkwarmwasserspiecher oben (Ein)', + '153 - Trinkwarmwasserspiecher unten (Aus)' +] +all_registers = ['300 - Aussentemperatur'] + registers + +# Plot erzeugen +plt.figure(figsize=(14, 8)) + +for reg in all_registers: + plt.plot(df_new['Zeit'], df_new[reg], label=reg) + +plt.title("Temperaturverläufe inkl. Außentemperatur (neue Daten)") +plt.xlabel("Zeit") +plt.ylabel("Temperatur (°C)") +plt.grid(True) +plt.tight_layout() + +# Legende außerhalb des Plots platzieren +plt.legend(loc='center left', bbox_to_anchor=(1.0, 0.5)) +plt.subplots_adjust(right=0.75) + +plt.show()