Wärmemengenzähler
Ich habe im Zuge meiner WP-Installation (Vitocal 250-A) September 2024 zwei C5-IUF 2,5 130mm 4s Mbus von Zenner einbauen lassen, einen zwischen Innen- und Außeneinheit und einen hin zu den Radiatoren.
Diese Zähler liefern (nach dem Dekodieren) so einen Datensatz: {„MANUFACTURER“: „ZRI“, „01 FABRICATION_NO“: „11315xxx“, „02 ENERGY_WH [Wh]“: 16338000, „07 DATE [date]“: „2025-04-01“, „08 ENERGY_WH [Wh]“: 15243000, „09 VOLUME [m^3]“: 5094.723, „10 FLOW_TEMPERATURE [C]“: 35.17, „11 RETURN_TEMPERATURE [C]“: 30.48, „12 TEMPERATURE_DIFFERENCE [K]“: 4.69, „13 POWER_W [W]“: 6700, „14 VOLUME_FLOW [m^3_h]“: 1.242, „15 DATE_TIME_GENERAL [date time]“: „2025-04-21T14:12“, „16 OPERATING_TIME [seconds]“: 20235600, „17 ERROR_FLAGS“: „0“}.
Die Temperaturen und Temperaturdifferenzen werden also auf hundertstel Grad geliefert, Volumina litergenau, Volumenströmen auf l/h genau.
Schwachpunkte dieser Zähler, die mir aufgefallen sind, sind dass Leistungsangaben nur in 100W-Schritten verfügbar sind, Energiesalden nur in 1000Wh-Schritten, und Laufzeit nur in Schritten von 3600 Sekunden. Außerdem werden negative Temperaturdifferenzen (z.B. Abtauleistung aus Inneneinheit zurück zur Außeneinheit) nur als 0K und entsprechend negative Leistungen nur als 0W gemeldet und saldiert. Da ist dann leider ein wenig händische Leistungsberechnung (aus der Differenz der Temperaturen und dem Volumenstrom) und Saldierung nötig.
Für mich interessant war, dass diese Zähler wohl aus dem Mbus mit Strom versorgt werden, und also einerseits sehr häufig abgefragt werden können (bei mir alle zehn Sekunden), andererseits dabei aber (hoffentlich) die interne Batterie nicht verbraucht wird. Außerdem haben sie einen geringen Druckverlust, reduzieren den Volumenstrom (der zwischen Innen- und Außeneinheit der Wärmepumpe auch größer als 1500l/h werden kann) also nicht erheblich.
Gekauft habe ich die Zähler zusammen mit den entsprechenden Einbausets bei spewa.de. Die haben auch anstandslos einen dritten Zähler zurückgenommen, der eigentlich für die Warmwasserbereitung gedacht war, als mein HB die fehlende Trinkwasserzulassung monierte.
Die Auswertung mache ich mit einem Raspberry Pi über einen USB-Mbus-Master (https://www.amazon.de/dp/B0CP1TK1KN?tag=pvforum-21, ich hatte keine Lust an der Stelle auch noch zu basteln). Das Python-Skript benutzt die Bibliothek pyMeterBus 0.8.4 und pyserial 3.5 (und paho-mqtt 2.1.0 für die Kommunikation mit meinem MQTT-Broker) und ist recht simpel:
#!/home/vito/mbus/.venv/bin/python # -*- coding: utf-8 -*- import meterbus import serial import time import json from decimal import Decimal import paho.mqtt.client as mqtt meters = {0:"meter-wp",1:"meter-hz"} mc = mqtt.Client(mqtt.CallbackAPIVersion.VERSION2) mc.connect("192.168.9.1") mc.loop_start() ibt = meterbus.inter_byte_timeout(2400) with serial.serial_for_url("/dev/ttyUSB0",2400,8,'E',1,inter_byte_timeout=ibt,timeout=1) as ser: while True: for addr in meters: meterbus.send_request_frame(ser,addr) frame = meterbus.load(meterbus.recv_frame(ser,meterbus.FRAME_DATA_LENGTH)) # print(frame.interpreted) data = {'MANUFACTURER':frame.manufacturer} idx = 0 for rec in frame.records: idx += 1 if idx in range(3,7) or rec.value is None: continue key = '%02d %s'%(idx,rec.interpreted['type'].split('.')[1]) value = rec.value if rec.unit!='none': key = "%s [%s]"%(key,rec.unit) # meterbus Decimals are funny, refer https://github.com/ganehag/pyMeterBus/issues/41 if isinstance(rec.value,Decimal): value = round(float(value),3) else: if isinstance(rec.value,Decimal): value = str(value) key = key.replace('/','_') data[key] = value topic = 'vito/%s'%meters[addr] data = json.dumps(data) # print((topic,data)) mc.publish(topic,data) time.sleep(10)
Es stellt sich anhand der WMZ-Daten zu diesem Zeitpunkt des Winters heraus, dass unser EFH wohl doch etwas weniger als die vom Energieberater prognostizierten 7kW@-10°C benötigt, eher so bei knapp 6kW@-10°C.
