automatic reading of registers from excel
This commit is contained in:
34
main.py
34
main.py
@@ -1,20 +1,38 @@
|
|||||||
from pymodbus.client import ModbusTcpClient
|
from pymodbus.client import ModbusTcpClient
|
||||||
|
import pandas as pd
|
||||||
import struct
|
import struct
|
||||||
import time
|
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
|
# 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
|
# # Liste von interessanten Holding-Register-Adressen
|
||||||
registers = {
|
# registers = {
|
||||||
210: {'desc': 'Puffertemperatur Kühlen in °C', 'type': 'REAL'},
|
# 210: {'desc': 'Puffertemperatur Kühlen in °C', 'type': 'REAL'},
|
||||||
300: {'desc': 'Außentemperatur in °C', 'type': 'REAL'},
|
# 300: {'desc': 'Außentemperatur in °C', 'type': 'REAL'},
|
||||||
170: {'desc': 'Puffertemperatur Heizung in °C', 'type': 'REAL'},
|
# 170: {'desc': 'Puffertemperatur Heizung in °C', 'type': 'REAL'},
|
||||||
160: {'desc': 'Trinkwarmwasserspiecher 2 oben (Ein) in °C', 'type': 'REAL'},
|
# 160: {'desc': 'Trinkwarmwasserspiecher 2 oben (Ein) in °C', 'type': 'REAL'},
|
||||||
161: {'desc': 'Trinkwarmwasserspiecher 2 unten (Aus) in °C', 'type': 'REAL'},
|
# 161: {'desc': 'Trinkwarmwasserspiecher 2 unten (Aus) in °C', 'type': 'REAL'},
|
||||||
}
|
#}
|
||||||
|
|
||||||
client = ModbusTcpClient(ip, port=port)
|
client = ModbusTcpClient(ip, port=port)
|
||||||
|
|
||||||
|
|||||||
@@ -1 +1,2 @@
|
|||||||
pymodbus~=3.8.6
|
pymodbus~=3.8.6
|
||||||
|
pandas
|
||||||
Reference in New Issue
Block a user