Files
allmende_ems/main.py
2025-04-17 15:17:46 +02:00

47 lines
1.3 KiB
Python

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 = {
300: {'desc': 'Außentemperatur 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()