diff --git a/main.py b/main.py index 6b9e417..caf067e 100644 --- a/main.py +++ b/main.py @@ -1,20 +1,38 @@ from pymodbus.client import ModbusTcpClient +import pandas as pd import struct import time +# Excel-Datei mit den Input-Registerinformationen +excel_path = "data/ModBus TCPIP 1.17(1).xlsx" +xls = pd.ExcelFile(excel_path) +df_input_registers = xls.parse('04 Input Register') + +# Relevante Spalten bereinigen +df_clean = df_input_registers[['MB Adresse', 'Variable', 'Beschreibung', 'Variabel Typ']].dropna() +df_clean['MB Adresse'] = df_clean['MB Adresse'].astype(int) + +# Dictionary aus Excel erzeugen +registers = { + row['MB Adresse']: { + 'desc': row['Beschreibung'], + 'type': 'REAL' if row['Variabel Typ'] == 'REAL' else 'INT' + } + for _, row in df_clean.iterrows() +} # Verbindung zur Wärmepumpe ip = '10.0.0.10' port = 502 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'}, -} +# # 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) diff --git a/requirements.txt b/requirements.txt index ba9d538..cbda898 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1 +1,2 @@ -pymodbus~=3.8.6 \ No newline at end of file +pymodbus~=3.8.6 +pandas \ No newline at end of file