initial commit
This commit is contained in:
3
.idea/.gitignore
generated
vendored
Normal file
3
.idea/.gitignore
generated
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
# Default ignored files
|
||||
/shelf/
|
||||
/workspace.xml
|
||||
15
.idea/inspectionProfiles/Project_Default.xml
generated
Normal file
15
.idea/inspectionProfiles/Project_Default.xml
generated
Normal 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>
|
||||
6
.idea/inspectionProfiles/profiles_settings.xml
generated
Normal file
6
.idea/inspectionProfiles/profiles_settings.xml
generated
Normal 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
6
.idea/misc.xml
generated
Normal 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
8
.idea/modules.xml
generated
Normal 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
8
.idea/waermepumpen_logger.iml
generated
Normal 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
49
main.py
Normal 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()
|
||||
Reference in New Issue
Block a user