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