From 00ba5213454ca171d47709a950b8eb2a6d56383e Mon Sep 17 00:00:00 2001 From: Nils Reiners Date: Thu, 17 Apr 2025 15:30:27 +0200 Subject: [PATCH] auf binarypayloaddecoder umgestellt --- main.py | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/main.py b/main.py index 0d33382..ae50b13 100644 --- a/main.py +++ b/main.py @@ -2,6 +2,9 @@ from pymodbus.client import ModbusTcpClient import struct import time +from pymodbus.constants import Endian +from pymodbus.payload import BinaryPayloadDecoder + # Verbindung zur Wärmepumpe ip = '10.0.0.10' port = 502 @@ -31,11 +34,12 @@ try: continue if reg_type == 'REAL': - reg_high = result.registers[0] - reg_low = result.registers[1] - # Oder falls dein Gerät Low-Word zuerst sendet: - decoder = struct.pack('>HH', reg_low, reg_high) - value = struct.unpack('>f', decoder)[0] + decoder = BinaryPayloadDecoder.fromRegisters( + result.registers, + byteorder=Endian.Big, + wordorder=Endian.Little # ← Das ist der Trick! + ) + value = decoder.decode_32bit_float() else: value = result.registers[0]