rohdaten plotten

This commit is contained in:
Nils Reiners
2025-04-17 15:39:56 +02:00
parent 1a848f9261
commit 1f2483258e

16
main.py
View File

@@ -2,9 +2,6 @@ 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
@@ -33,13 +30,14 @@ try:
print(f"Fehler beim Lesen von Adresse {address}: {result}") print(f"Fehler beim Lesen von Adresse {address}: {result}")
continue continue
print(f"Adresse {address} - Rohdaten: {result.registers}")
if reg_type == 'REAL': if reg_type == 'REAL':
decoder = BinaryPayloadDecoder.fromRegisters( reg_high = result.registers[0]
result.registers, reg_low = result.registers[1]
byteorder=Endian.BIG, # Oder falls dein Gerät Low-Word zuerst sendet:
wordorder=Endian.LITTLE # ← Das ist der Trick! decoder = struct.pack('>HH', reg_low, reg_high)
) value = struct.unpack('>f', decoder)[0]
value = decoder.decode_32bit_float()
else: else:
value = result.registers[0] value = result.registers[0]