automatic reading of registers from excel

This commit is contained in:
Nils Reiners
2025-04-17 15:59:35 +02:00
parent 6b4328f5ee
commit 76b7d353c8
2 changed files with 28 additions and 9 deletions

34
main.py
View File

@@ -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)

View File

@@ -1 +1,2 @@
pymodbus~=3.8.6
pandas