From 5a6cd00acfd8815b8a2b7c6f90de0af18313d5c3 Mon Sep 17 00:00:00 2001 From: Nils Reiners Date: Thu, 17 Apr 2025 14:34:25 +0200 Subject: [PATCH] initial commit --- .idea/.gitignore | 3 ++ .idea/inspectionProfiles/Project_Default.xml | 15 ++++++ .../inspectionProfiles/profiles_settings.xml | 6 +++ .idea/misc.xml | 6 +++ .idea/modules.xml | 8 +++ .idea/waermepumpen_logger.iml | 8 +++ main.py | 49 +++++++++++++++++++ 7 files changed, 95 insertions(+) create mode 100644 .idea/.gitignore create mode 100644 .idea/inspectionProfiles/Project_Default.xml create mode 100644 .idea/inspectionProfiles/profiles_settings.xml create mode 100644 .idea/misc.xml create mode 100644 .idea/modules.xml create mode 100644 .idea/waermepumpen_logger.iml create mode 100644 main.py diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..26d3352 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,3 @@ +# Default ignored files +/shelf/ +/workspace.xml diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml new file mode 100644 index 0000000..123c34a --- /dev/null +++ b/.idea/inspectionProfiles/Project_Default.xml @@ -0,0 +1,15 @@ + + + + \ No newline at end of file diff --git a/.idea/inspectionProfiles/profiles_settings.xml b/.idea/inspectionProfiles/profiles_settings.xml new file mode 100644 index 0000000..105ce2d --- /dev/null +++ b/.idea/inspectionProfiles/profiles_settings.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..2717756 --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..e251732 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/waermepumpen_logger.iml b/.idea/waermepumpen_logger.iml new file mode 100644 index 0000000..64998b2 --- /dev/null +++ b/.idea/waermepumpen_logger.iml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/main.py b/main.py new file mode 100644 index 0000000..c4d753a --- /dev/null +++ b/main.py @@ -0,0 +1,49 @@ +from pymodbus.client import ModbusTcpClient +import struct +import time + +# Verbindung zur Wärmepumpe +ip = '10.0.0.10' +port = 502 +unit_id = 1 + +# Liste von interessanten Holding-Register-Adressen +registers = { + 10: {'desc': 'Modus (0=OFF, 1=AUTO, 2=Sommer, ...)', 'type': 'UINT'}, + 51: {'desc': 'Solltemperatur WP in °C', 'type': 'REAL'}, + 71: {'desc': 'Solltemperatur HK1 in °C', 'type': 'REAL'}, + 91: {'desc': 'Solltemperatur HK2 in °C', 'type': 'REAL'} +} + +client = ModbusTcpClient(ip, port=port) + +try: + if not client.connect(): + print("Verbindung zur Wärmepumpe fehlgeschlagen.") + exit(1) + print("Verbindung zur Wärmepumpe erfolgreich.") + + while True: + print(f"\n--- Neue Abfrage --- {time.strftime('%Y-%m-%d %H:%M:%S')} ---") + for address, info in registers.items(): + reg_type = info['type'] + result = client.read_holding_registers(address, count=2 if reg_type == 'REAL' else 1)#, unit=unit_id) + + if result.isError(): + print(f"Fehler beim Lesen von Adresse {address}: {result}") + continue + + if reg_type == 'REAL': + decoder = struct.pack('>HH', result.registers[0], result.registers[1]) + value = struct.unpack('>f', decoder)[0] + else: + value = result.registers[0] + + print(f"Adresse {address} - {info['desc']}: {value}") + + time.sleep(10) + +except KeyboardInterrupt: + print("Beendet durch Benutzer (Ctrl+C).") +finally: + client.close()