auf binarypayloaddecoder umgestellt

This commit is contained in:
Nils Reiners
2025-04-17 15:30:27 +02:00
parent 9b7dd7d654
commit 00ba521345

14
main.py
View File

@@ -2,6 +2,9 @@ from pymodbus.client import ModbusTcpClient
import struct import struct
import time import time
from pymodbus.constants import Endian
from pymodbus.payload import BinaryPayloadDecoder
# Verbindung zur Wärmepumpe # Verbindung zur Wärmepumpe
ip = '10.0.0.10' ip = '10.0.0.10'
port = 502 port = 502
@@ -31,11 +34,12 @@ try:
continue continue
if reg_type == 'REAL': if reg_type == 'REAL':
reg_high = result.registers[0] decoder = BinaryPayloadDecoder.fromRegisters(
reg_low = result.registers[1] result.registers,
# Oder falls dein Gerät Low-Word zuerst sendet: byteorder=Endian.Big,
decoder = struct.pack('>HH', reg_low, reg_high) wordorder=Endian.Little # ← Das ist der Trick!
value = struct.unpack('>f', decoder)[0] )
value = decoder.decode_32bit_float()
else: else:
value = result.registers[0] value = result.registers[0]