proxon-modbus
Gerätebibliothek für Proxon FWT 2.0 (Lüftungs-Wärmepumpe) und T300 (Warmwasser-Wärmepumpe) über Modbus RTU.
Die Bibliothek besitzt den Transport nicht. Anwendungen reichen eine
modbus_connection.ModbusUnit herein — Backend tmodbus oder pymodbus —
und bekommen dafür das Registerwissen der Anlage. Damit lässt sich sie ohne
Hardware testen und teilt sich eine Verbindung mit anderen Verbrauchern
desselben RS485-Strangs.
from modbus_connection import ModbusTcpParams
from modbus_connection.tmodbus import ModbusConnection
from proxon_modbus import ProxonDevice
conn = ModbusConnection(
ModbusTcpParams(host="192.0.2.10", port=502, framer="rtu"),
message_spacing=0.15, # Pause zwischen Blöcken
connect_delay=0.30, # Wartezeit nach Verbindungsaufbau
)
device = ProxonDevice(conn.for_unit(41))
await device.async_update()
print(device.t300_input.t21_behaelter_mitte) # 57.5
print(device.fwt_holding.bypass_min_frischluft) # 8.0
print([d.temperatur for d in device.nbe_temperatures.devices])
Warum eigene Feldtypen
Zwei Eigenheiten der Anlage kann modbus_connection nicht von sich aus:
Skalierung und Offset sind anders gemeint. Proxon rechnet
(roh + offset) / scale, die Bibliothek roh * scale + offset; Proxons
scale ist ein Divisor, ihrer ein Multiplikator. proxon_number() nimmt die
Proxon-Zahlen entgegen und rechnet um — Registerzeilen lassen sich also 1:1
aus der Anlagendokumentation übernehmen. Ohne diese Umrechnung liest der
Behälterfühler T21 statt 57,5 °C ganze −842,5 °C.
Fremde Frames müssen verworfen werden. Die USR-RS485-Bridge spiegelt den
gesamten Busverkehr in die TCP-Verbindung; einzelne Register enthalten dadurch
Werte anderer Geräte (klassisch: 128 °C Warmwasser). 46 der 94 Register tragen
deshalb einen gültigen Rohbereich. nan= der Bibliothek trifft nur einzelne
Werte, nicht Bereiche — RangedNumberField prüft min_raw/max_raw auf dem
vorzeichenbehafteten Rohwert und liefert sonst None.
Dazu kommt Latin1StringField: die Raumnamen liegen als zwei Latin-1-Bytes je
Register, das StringField der Bibliothek ist ASCII — „Küche" käme kaputt an.
Aufbau
| Baugruppe | Register |
|---|---|
FwtInput |
Input 0–51, 154–265 |
FwtHolding |
Holding 16–22, 41–143, 187, 438, 460, 467–469, 613–619 |
T300Input / T300Holding |
Input 811–900, Holding 2000–2025 |
NbeTemperatures |
Input 590 + n·3, sieben Geräte |
NbeSettingsBank |
Holding 213/233/253 + n |
RoomNames |
Holding 620 + n·10, acht Slots |
Namens-Slot 0 ist die HBDE und hat kein NBE-Gerät; Slot 1–7 gehören zu den
Geräten 0–6 (physical_index()).
Freischaltung
Register 438 = 55555 schaltet die vollen Modbus-Rechte frei. Ohne das antworten
460 und 467–469 nicht und Schreibzugriffe werden abgelehnt. ProxonDevice
erledigt das einmal je Verbindung — es ist ein Flash-Write im Gerät, gehört
also nicht in jeden Zyklus — und setzt es nach einem Verbindungsabriss neu.
Teilausfall
Einzelne Blöcke scheitern im Normalbetrieb, ohne dass die Anlage weg wäre.
async_update() gibt die Namen der gescheiterten Baugruppen zurück und lässt
deren zuletzt gelesene Werte stehen; ProxonUnreachable fliegt erst, wenn
keine Baugruppe gelesen werden konnte.
Tests
Vollständig ohne Hardware, über den Mock aus modbus_connection:
pip install -e ".[tmodbus,test]"
pytest
Die Testdaten sind echte Registerwerte, am 2026-09-02 von der Anlage gelesen.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file proxon_modbus-0.1.1.tar.gz.
File metadata
- Download URL: proxon_modbus-0.1.1.tar.gz
- Upload date:
- Size: 14.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8b5cc79d281d69d381202fea8e15b773f854c700e4b1e5c4bdb7cff48683fdae
|
|
| MD5 |
632b10270f73ae6bc27fb53ffa032b75
|
|
| BLAKE2b-256 |
ca2ea2a4472688180f572619af38ef83783837b983236cc000722dbe182d2f66
|
File details
Details for the file proxon_modbus-0.1.1-py3-none-any.whl.
File metadata
- Download URL: proxon_modbus-0.1.1-py3-none-any.whl
- Upload date:
- Size: 13.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9609fa4d04bd4a9a212813f6ae1ba7c3b787ba52f6cdffe6a0572b19bb611993
|
|
| MD5 |
109dda3d27f377d453cbc6257dd687ee
|
|
| BLAKE2b-256 |
99642bb9a4991985c13ae0aa0dc9212437116d44bb89da522b5c1e0675230933
|