storing data in csv added
This commit is contained in:
55
main.py
55
main.py
@@ -2,6 +2,8 @@ from pymodbus.client import ModbusTcpClient
|
|||||||
import pandas as pd
|
import pandas as pd
|
||||||
import struct
|
import struct
|
||||||
import time
|
import time
|
||||||
|
import csv
|
||||||
|
import os
|
||||||
|
|
||||||
# Excel-Datei mit den Input-Registerinformationen
|
# Excel-Datei mit den Input-Registerinformationen
|
||||||
excel_path = "data/ModBus TCPIP 1.17(1).xlsx"
|
excel_path = "data/ModBus TCPIP 1.17(1).xlsx"
|
||||||
@@ -20,20 +22,16 @@ registers = {
|
|||||||
}
|
}
|
||||||
for _, row in df_clean.iterrows()
|
for _, row in df_clean.iterrows()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# CSV-Datei vorbereiten
|
||||||
|
csv_filename = "modbus_log.csv"
|
||||||
|
csv_exists = os.path.isfile(csv_filename)
|
||||||
|
|
||||||
# Verbindung zur Wärmepumpe
|
# Verbindung zur Wärmepumpe
|
||||||
ip = '10.0.0.10'
|
ip = '10.0.0.10'
|
||||||
port = 502
|
port = 502
|
||||||
unit_id = 1
|
unit_id = 1
|
||||||
|
|
||||||
# # Liste von interessanten Holding-Register-Adressen
|
|
||||||
# registers = {
|
|
||||||
# 210: {'desc': 'Puffertemperatur Kühlen in °C', 'type': 'REAL'},
|
|
||||||
# 300: {'desc': 'Außentemperatur in °C', 'type': 'REAL'},
|
|
||||||
# 170: {'desc': 'Puffertemperatur Heizung in °C', 'type': 'REAL'},
|
|
||||||
# 160: {'desc': 'Trinkwarmwasserspiecher 2 oben (Ein) in °C', 'type': 'REAL'},
|
|
||||||
# 161: {'desc': 'Trinkwarmwasserspiecher 2 unten (Aus) in °C', 'type': 'REAL'},
|
|
||||||
#}
|
|
||||||
|
|
||||||
client = ModbusTcpClient(ip, port=port)
|
client = ModbusTcpClient(ip, port=port)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
@@ -42,23 +40,34 @@ try:
|
|||||||
exit(1)
|
exit(1)
|
||||||
print("Verbindung zur Wärmepumpe erfolgreich.")
|
print("Verbindung zur Wärmepumpe erfolgreich.")
|
||||||
|
|
||||||
while True:
|
with open(csv_filename, mode='a', newline='') as file:
|
||||||
print(f"\n--- Neue Abfrage --- {time.strftime('%Y-%m-%d %H:%M:%S')} ---")
|
writer = csv.writer(file)
|
||||||
for address, info in registers.items():
|
if not csv_exists:
|
||||||
reg_type = info['type']
|
header = ['Zeit'] + [f"{address} - {info['desc']}" for address, info in registers.items()]
|
||||||
result = client.read_input_registers(address, count=2 if reg_type == 'REAL' else 1)#, unit=unit_id)
|
writer.writerow(header)
|
||||||
if result.isError():
|
|
||||||
print(f"Fehler beim Lesen von Adresse {address}: {result}")
|
|
||||||
continue
|
|
||||||
|
|
||||||
if reg_type == 'REAL':
|
while True:
|
||||||
value = result.registers[0] / 10.0
|
print(f"\n--- Neue Abfrage --- {time.strftime('%Y-%m-%d %H:%M:%S')} ---")
|
||||||
else:
|
row = [time.strftime('%Y-%m-%d %H:%M:%S')]
|
||||||
value = result.registers[0]
|
for address, info in registers.items():
|
||||||
|
reg_type = info['type']
|
||||||
|
result = client.read_input_registers(address, count=2 if reg_type == 'REAL' else 1)
|
||||||
|
if result.isError():
|
||||||
|
print(f"Fehler beim Lesen von Adresse {address}: {result}")
|
||||||
|
row.append('Fehler')
|
||||||
|
continue
|
||||||
|
|
||||||
print(f"Adresse {address} - {info['desc']}: {value}")
|
if reg_type == 'REAL':
|
||||||
|
value = result.registers[0] / 10.0
|
||||||
|
else:
|
||||||
|
value = result.registers[0]
|
||||||
|
|
||||||
time.sleep(10)
|
print(f"Adresse {address} - {info['desc']}: {value}")
|
||||||
|
row.append(value)
|
||||||
|
|
||||||
|
writer.writerow(row)
|
||||||
|
file.flush()
|
||||||
|
time.sleep(10)
|
||||||
|
|
||||||
except KeyboardInterrupt:
|
except KeyboardInterrupt:
|
||||||
print("Beendet durch Benutzer (Ctrl+C).")
|
print("Beendet durch Benutzer (Ctrl+C).")
|
||||||
|
|||||||
Reference in New Issue
Block a user