From 8642a057f0c7ed1ae37ef57459005cd58cc4e288 Mon Sep 17 00:00:00 2001 From: Nils Reiners Date: Tue, 6 Jan 2026 17:01:50 +0100 Subject: [PATCH] excel sheet for heat pump registers now in template form. tested with script that was also added in folder. sg-ready testing file was also added. --- .../heat_pump_connection_read_data.py | 7 + .../heat_pump_connection_sg_ready.py | 49 +++++ heat_pump.py | 203 ++++++++++++++---- .../_modbus_register_template.xlsx | Bin 0 -> 8235 bytes modbus_registers/heat_pump_registers.xlsx | Bin 40520 -> 12658 bytes .../heat_pump_registers.xlsx | Bin 0 -> 40520 bytes 6 files changed, 214 insertions(+), 45 deletions(-) create mode 100644 component_test_connectors/heat_pump_connection_read_data.py create mode 100644 component_test_connectors/heat_pump_connection_sg_ready.py create mode 100644 modbus_registers/_modbus_register_template.xlsx create mode 100644 modbus_registers/raw_register_tables/heat_pump_registers.xlsx diff --git a/component_test_connectors/heat_pump_connection_read_data.py b/component_test_connectors/heat_pump_connection_read_data.py new file mode 100644 index 0000000..c9ef06f --- /dev/null +++ b/component_test_connectors/heat_pump_connection_read_data.py @@ -0,0 +1,7 @@ +from heat_pump import HeatPump + +hp_master = HeatPump(device_name='hp_master', ip_address='10.0.0.10', port=502, excel_path="../modbus_registers/heat_pump_registers.xlsx") + +state = hp_master.get_state() + +print(state) \ No newline at end of file diff --git a/component_test_connectors/heat_pump_connection_sg_ready.py b/component_test_connectors/heat_pump_connection_sg_ready.py new file mode 100644 index 0000000..8dff783 --- /dev/null +++ b/component_test_connectors/heat_pump_connection_sg_ready.py @@ -0,0 +1,49 @@ +from pymodbus.client import ModbusTcpClient + +def switch_sg_ready_mode(ip, port, mode): + """ + Register 300: 1=BUS 0= Hardware Kontakte + Register 301 & 302: + 0-0= Kein Offset + 0-1 Boiler und Heizung Offset + 1-1 Boiler Offset + E-Einsatz Sollwert Erhöht + 1-0 SG EVU Sperre + :param ip: + :param mode: + 'mode1' = [True, False, False] => SG Ready deactivated + 'mode2' = [True, False, True] => SG ready activated for heatpump only + 'mode3' = [True, True, True] => SG ready activated for heatpump and heat rod + :return: + """ + client = ModbusTcpClient(ip, port=port) + if not client.connect(): + print("Verbindung zur Wärmepumpe fehlgeschlagen.") + return + + mode_code = None + if mode == 'mode1': + mode_code = [True, False, False] + elif mode == 'mode2': + mode_code = [True, False, True] + elif mode == 'mode3': + mode_code = [True, True, True] + else: + print('Uncorrect or no string for mode!') + + try: + response_300 = client.write_coil(300, mode_code[0]) + response_301 = client.write_coil(301, mode_code[1]) + response_302 = client.write_coil(302, mode_code[2]) + + # Optional: Rückmeldungen prüfen + for addr, resp in zip([300, 301, 302], [response_300, response_301, response_302]): + if resp.isError(): + print(f"Fehler beim Schreiben von Coil {addr}: {resp}") + else: + print(f"Coil {addr} erfolgreich geschrieben.") + + finally: + client.close() + +if '__name__' == '__main__': + switch_sg_ready_mode(ip='10.0.0.10', port=502, mode='mode2') diff --git a/heat_pump.py b/heat_pump.py index 773e84a..6a29f5e 100644 --- a/heat_pump.py +++ b/heat_pump.py @@ -1,64 +1,177 @@ from pymodbus.client import ModbusTcpClient import pandas as pd import time +import struct +import math + class HeatPump: - def __init__(self, device_name: str, ip_address: str, port: int=502): + def __init__(self, device_name: str, ip_address: str, port: int = 502, + excel_path: str = "modbus_registers/heat_pump_registers_modbus.xlsx", + sheet_name: str = "Register_Map"): self.device_name = device_name self.ip = ip_address self.port = port - self.client = None - self.connect_to_modbus() - self.registers = None - self.get_registers() + self.client = ModbusTcpClient(self.ip, port=self.port) - def connect_to_modbus(self): - port = self.port - self.client = ModbusTcpClient(self.ip, port=port) + self.excel_path = excel_path + self.sheet_name = sheet_name + self.registers = self.get_registers() + + # ------------- + # Connection + # ------------- + def connect(self) -> bool: + ok = self.client.connect() + if not ok: + print("Verbindung zur Wärmepumpe fehlgeschlagen.") + return ok + + def close(self): try: - if not self.client.connect(): - print("Verbindung zur Wärmepumpe fehlgeschlagen.") - exit(1) - print("Verbindung zur Wärmepumpe erfolgreich.") - except KeyboardInterrupt: - print("Beendet durch Benutzer (Ctrl+C).") - finally: self.client.close() + except Exception: + pass - def get_registers(self): - # Excel-Datei mit den Input-Registerinformationen - excel_path = "modbus_registers/heat_pump_registers.xlsx" - xls = pd.ExcelFile(excel_path) - df_input_registers = xls.parse('04 Input Register') + # ------------- + # Excel parsing + # ------------- + def get_registers(self) -> dict: + df = pd.read_excel(self.excel_path, sheet_name=self.sheet_name) + df = df[df["Register_Type"].astype(str).str.upper() == "IR"].copy() - # 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) + df["Address"] = df["Address"].astype(int) + df["Length"] = df["Length"].astype(int) + df["Data_Type"] = df["Data_Type"].astype(str).str.upper() + df["Byteorder"] = df["Byteorder"].astype(str).str.upper() - # Dictionary aus Excel erzeugen - self.registers = { - row['MB Adresse']: { - 'desc': row['Beschreibung'], - 'type': 'REAL' if row['Variabel Typ'] == 'REAL' else 'INT' + df["Scaling"] = df.get("Scaling", 1.0) + df["Scaling"] = df["Scaling"].fillna(1.0).astype(float) + + df["Offset"] = df.get("Offset", 0.0) + df["Offset"] = df["Offset"].fillna(0.0).astype(float) + + regs = {} + for _, row in df.iterrows(): + regs[int(row["Address"])] = { + "length": int(row["Length"]), + "data_type": row["Data_Type"], + "byteorder": row["Byteorder"], + "scaling": float(row["Scaling"]), + "offset": float(row["Offset"]), + "tag": str(row.get("Tag_Name", "")).strip(), + "desc": "" if pd.isna(row.get("Description")) else str(row.get("Description")).strip(), } - for _, row in df_clean.iterrows() - } + return regs - def get_state(self): - data = {} - data['Zeit'] = time.strftime('%Y-%m-%d %H:%M:%S') - for address, info in self.registers.items(): - reg_type = info['type'] - result = self.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}") - continue + # ------------- + # Byteorder handling + # ------------- + @staticmethod + def _registers_to_bytes(registers: list[int], byteorder_code: str) -> bytes: + """ + registers: Liste von uint16 (0..65535), wie pymodbus sie liefert. + byteorder_code: AB, ABCD, CDAB, BADC, DCBA (gemäß Template) + Rückgabe: bytes in der Reihenfolge, wie sie für struct.unpack benötigt werden. + """ + code = (byteorder_code or "ABCD").upper() - if reg_type == 'REAL': - value = result.registers[0] / 10.0 - else: - value = result.registers[0] + # Pro Register: 16-bit => zwei Bytes (MSB, LSB) + words = [struct.pack(">H", r & 0xFFFF) for r in registers] # big endian pro Wort + + if len(words) == 1: + w = words[0] # b'\xAA\xBB' + if code in ("AB", "ABCD", "CDAB"): + return w + if code == "BADC": # byte swap + return w[::-1] + if code == "DCBA": # byte swap (bei 16-bit identisch zu BADC) + return w[::-1] + return w + + # 32-bit (2 words) oder 64-bit (4 words): Word/Byte swaps abbilden + # words[0] = high word bytes, words[1] = low word bytes (in Modbus-Reihenfolge gelesen) + if code == "ABCD": + ordered = words + elif code == "CDAB": + # word swap + ordered = words[1:] + words[:1] + elif code == "BADC": + # byte swap innerhalb jedes Words + ordered = [w[::-1] for w in words] + elif code == "DCBA": + # word + byte swap + ordered = [w[::-1] for w in (words[1:] + words[:1])] + else: + ordered = words + + return b"".join(ordered) + + @staticmethod + def _decode_by_type(raw_bytes: bytes, data_type: str): + dt = (data_type or "").upper() + + # struct: > = big endian, < = little endian + # Wir liefern raw_bytes bereits in der richtigen Reihenfolge; daher nutzen wir ">" konsistent. + if dt == "UINT16": + return struct.unpack(">H", raw_bytes[:2])[0] + if dt == "INT16": + return struct.unpack(">h", raw_bytes[:2])[0] + if dt == "UINT32": + return struct.unpack(">I", raw_bytes[:4])[0] + if dt == "INT32": + return struct.unpack(">i", raw_bytes[:4])[0] + if dt == "FLOAT32": + return struct.unpack(">f", raw_bytes[:4])[0] + if dt == "FLOAT64": + return struct.unpack(">d", raw_bytes[:8])[0] + + raise ValueError(f"Unbekannter Data_Type: {dt}") + + def _decode_value(self, registers: list[int], meta: dict): + raw = self._registers_to_bytes(registers, meta["byteorder"]) + val = self._decode_by_type(raw, meta["data_type"]) + return (val * meta["scaling"]) + meta["offset"] + + # ------------- + # Reading + # ------------- + def get_state(self) -> dict: + data = {"Zeit": time.strftime("%Y-%m-%d %H:%M:%S")} + + if not self.connect(): + data["error"] = "connect_failed" + return data + + try: + for address, meta in self.registers.items(): + count = int(meta["length"]) + result = self.client.read_input_registers(address, count=count) + if result.isError(): + print(f"Fehler beim Lesen von Adresse {address}: {result}") + continue + + try: + value = self._decode_value(result.registers, meta) + except Exception as e: + print(f"Decode-Fehler an Adresse {address} ({meta.get('tag','')}): {e}") + continue + + # Optional filter + # if self._is_invalid_sentinel(value): + # continue + + desc = meta.get("desc") or "" + label = f"{address} - {desc}".strip(" -") + + data[label] = value + tag = meta.get("tag") + if tag: + data[tag] = value + + print(f"Adresse {address} - {desc}: {value}") + + finally: + self.close() - print(f"Adresse {address} - {info['desc']}: {value}") - data[f"{address} - {info['desc']}"] = value return data diff --git a/modbus_registers/_modbus_register_template.xlsx b/modbus_registers/_modbus_register_template.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..9184dc1e95cb4df3858004391837ef04c38a024d GIT binary patch literal 8235 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 E0Yqs%YXATM literal 0 HcmV?d00001 diff --git a/modbus_registers/heat_pump_registers.xlsx b/modbus_registers/heat_pump_registers.xlsx index b9dff626eb9c4d640ee86f2f0222c6d34e7b955f..c9ea342f51b399c99a9b9f0f8477c1edba1d662a 100644 GIT binary patch literal 12658 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 diff --git a/modbus_registers/raw_register_tables/heat_pump_registers.xlsx b/modbus_registers/raw_register_tables/heat_pump_registers.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..b9dff626eb9c4d640ee86f2f0222c6d34e7b955f GIT binary patch literal 40520 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 literal 0 HcmV?d00001