From 76b7d353c8a885ceef73d8bd0df0df98a2dc266e Mon Sep 17 00:00:00 2001 From: Nils Reiners Date: Thu, 17 Apr 2025 15:59:35 +0200 Subject: [PATCH] automatic reading of registers from excel --- main.py | 34 ++++++++++++++++++++++++++-------- requirements.txt | 3 ++- 2 files changed, 28 insertions(+), 9 deletions(-) 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