influx data base added
This commit is contained in:
33
data_base_influx.py
Normal file
33
data_base_influx.py
Normal file
@@ -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"
|
||||||
|
)
|
||||||
9
main.py
9
main.py
@@ -1,11 +1,18 @@
|
|||||||
import time
|
import time
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
from data_base_csv import DataBaseCsv
|
from data_base_csv import DataBaseCsv
|
||||||
|
from data_base_influx import DataBaseInflux
|
||||||
from heat_pump import HeatPump
|
from heat_pump import HeatPump
|
||||||
|
|
||||||
interval = 10 # z.B. alle 10 Sekunden
|
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')
|
hp = HeatPump(ip_address='10.0.0.10')
|
||||||
|
|
||||||
while True:
|
while True:
|
||||||
|
|||||||
41
plot_data.py
Normal file
41
plot_data.py
Normal file
@@ -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()
|
||||||
Reference in New Issue
Block a user