initial commit

This commit is contained in:
Nils Reiners
2025-04-17 14:34:25 +02:00
commit 5a6cd00acf
7 changed files with 95 additions and 0 deletions

3
.idea/.gitignore generated vendored Normal file
View File

@@ -0,0 +1,3 @@
# Default ignored files
/shelf/
/workspace.xml

View File

@@ -0,0 +1,15 @@
<component name="InspectionProjectProfileManager">
<profile version="1.0">
<option name="myName" value="Project Default" />
<inspection_tool class="PyPackageRequirementsInspection" enabled="true" level="WARNING" enabled_by_default="true">
<option name="ignoredPackages">
<value>
<list size="2">
<item index="0" class="java.lang.String" itemvalue="pandas" />
<item index="1" class="java.lang.String" itemvalue="Pyomo" />
</list>
</value>
</option>
</inspection_tool>
</profile>
</component>

View File

@@ -0,0 +1,6 @@
<component name="InspectionProjectProfileManager">
<settings>
<option name="USE_PROJECT_PROFILE" value="false" />
<version value="1.0" />
</settings>
</component>

6
.idea/misc.xml generated Normal file
View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="Black">
<option name="sdkName" value="Python 3.12 (waermepumpen_logger)" />
</component>
</project>

8
.idea/modules.xml generated Normal file
View File

@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/.idea/waermepumpen_logger.iml" filepath="$PROJECT_DIR$/.idea/waermepumpen_logger.iml" />
</modules>
</component>
</project>

8
.idea/waermepumpen_logger.iml generated Normal file
View File

@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="PYTHON_MODULE" version="4">
<component name="NewModuleRootManager">
<content url="file://$MODULE_DIR$" />
<orderEntry type="jdk" jdkName="Python 3.12 (waermepumpen_logger)" jdkType="Python SDK" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>

49
main.py Normal file
View File

@@ -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()