Viessmann heat pump Modbus: an installer's guide for 2026
Read Viessmann Modbus through the Vitogate 300: which Vitocal speaks Modbus, the dynamic register assignment, wiring step by step, plus COP and SG Ready over Modbus for installers.

Viessmann Modbus means reading a Vitocal heat pump's operating values locally through the Vitogate 300 gateway, so you can see the flow temperature, the active fault and the SG Ready state from your office or your own dashboard, without depending on the ViCare app. Unlike many brands, Viessmann does not put a Modbus module inside the indoor unit: the path to Modbus runs through a separate gateway, and the register number you read depends on how you configure that gateway. This guide shows which Vitocal generation speaks Modbus, why the Vitogate 300 numbers registers dynamically, how to wire and test the link, and how to derive COP and SG Ready from the data.
Updated: September 2026.
What this guide covers
- Which Viessmann heat pumps speak Modbus and through which gateway
- Vitogate 300 versus the new E3 generation (Vitocal 250-A on R290)
- Why the Vitogate 300 assigns register numbers dynamically, and how to fix that
- The Vitocal datapoints you read in practice
- Wiring and testing in eight steps, with cabling notes
- Reconstructing COP and consumption when Viessmann gives you no COP register
- SG Ready over Modbus for PV control and grid flexibility
Free: RS485 and Modbus RTU installation checklist (PDF)
The pre-commissioning checklist for every RS485 bus. Print it and take it to site.
- Wiring order: A/B polarity, GND and shielding
- Termination and biasing, with the multimeter checks
- Communication settings crib sheet (baud rate, parity, stop bits)
- The 10 most common faults and how to spot them
Which Viessmann heat pumps speak Modbus, and through which gateway?
A Viessmann heat pump does not speak Modbus out of the box. The Vitocal indoor unit communicates internally over the Viessmann bus (LON on the Vitotronic generation, CAN on the newer E3 generation), and only a gateway translates that to Modbus. For most installations an installer meets today, that gateway is the Vitogate 300 (type BN/MB), a DIN-rail device with RS-485, LAN, LON and USB that connects Vitotronic controllers to Modbus or BACnet (Viessmann Vitogate 300 installation instructions 5672 437).
The Vitogate 300 supports Vitotronic 200 heat pump controllers type WO1B and WO1C from 2009, plus various boilers. That covers the Vitocal 200-S, 222-S and 200-G among others. The new R290 generation (Vitocal 150-A and 250-A) is different, see the next section.
| Viessmann range | Modbus path | Transport | Use case |
|---|---|---|---|
| Vitocal 200-S, 222-S (Vitotronic 200 WO1C) | Vitogate 300 (BN/MB) | TCP or RTU | residential, most common |
| Vitocal 200-G, 300-G ground source | Vitogate 300 | TCP or RTU | ground source units |
| Vitocal 250-A, 150-A (E3 / One Base, R290) | CAN via Open3E or WAGO CAN-Modbus gateway | TCP (indirect) | new build 2025 onward |
| Vitocal 262-A (E3) | reads an ALE3D5F Modbus RTU meter for PV | RTU | PV surplus control |
| Commercial (several Vitotronic) | Vitogate 300 on the LON bus | TCP | building management |
Modbus TCP runs on port 502, Modbus RTU on 9600 baud, 8N1 over RS-485 (Vitogate 300 specification). The gateway exposes up to 64 holding and input registers plus up to 255 coil and status registers.
Vitogate 300 versus the E3 generation: why your generation matters
The Vitocal generation decides whether Modbus is simple or bespoke. Check it before you quote the job.
The Vitotronic generation (Vitocal 200-S and relatives) is the simple path: connect a Vitogate 300 to the LON bus and you have Modbus TCP or RTU. The E3 or One Base generation (Vitocal 150-A and 250-A, from the 2025 program) runs internally on a CAN bus and offers no ready-made Vitogate Modbus. Installers read that CAN bus with the open source Open3E project (to MQTT) or with a WAGO CAN-to-Modbus gateway. The Vitocal 262-A reverses it: it reads an external ALE3D5F Modbus RTU energy meter to steer on PV surplus (GitHub open3e and chbacher Vitocal-262-A-PV-Modbus-Emulator).
This distinction is commercially relevant. The Vitocal 250-A uses propane (R290) with a GWP of only 3, delivers flow up to 70 degrees C and reaches a COP of 4.7 to 5.1 (pv magazine, April 2025). If you fit a new Vitocal 250-A in 2026 and expect Modbus to work like the old 200-S, you will be caught out.
The Vitogate 300 register map and dynamic register assignment
The Vitogate 300 assigns Modbus register numbers dynamically. This is the number one Viessmann Modbus pitfall. Instead of a fixed factory map, the gateway assigns the register number based on which LON datapoints you select in the web interface, and in which order. Change the selection or the order and every register number shifts, so your dashboard points at the wrong value (Vitogate 300 supplementary documentation).
Work with a fixed, documented datapoint selection per project and record the exact order before you build dashboards. The Vitocal 200 datapoints below carry the most value in practice. The left column is the LON datapoint ID as the Vitogate shows it; the actual Modbus register number follows from your selection order (TapHome Vitogate 300 plus Vitocal 200 reference).
| LON ID | Type | Meaning | Unit |
|---|---|---|---|
| A:100 | Input | Supply (flow) temperature | °C (divide by 10) |
| A:88 | Input | Outdoor temperature (damped) | °C (divide by 10) |
| A:102 | Input | DHW cylinder temperature | °C (divide by 10) |
| A:54 | Input | Room temperature HC1 | °C (divide by 10) |
| A:126 | Input | Compressor frequency | Hz |
| A:162 | Input | Operating hours stage 1 | hours |
| H:12 | Holding | Room setpoint HC1 (10 to 30) | °C |
| H:29 | Holding | DHW setpoint | °C |
| H:33 | Holding | Operating program HC1 (7 modes) | enum |
| H:77 | Holding | Heating or cooling (0, 1, 2) | enum |
| C:200 | Status | General alarm (read only) | bool |
| D:8 | Status | Heating pump (read only) | bool |
Read input datapoints (A) with function code 04 and holding datapoints (H) with function code 03. Writing to a holding datapoint uses function code 06. The letters A, H, C and D denote the LON object type (analog, holding, coil, discrete). For what coils, holding and input registers mean, see Modbus register map explained.
Connecting Viessmann over Modbus, step by step
Connecting a Vitogate 300 is a wiring job and a software job. Allow two to four hours per gateway including configuration.
- 1Isolate the Vitocal indoor unit. Do not forget the separate breaker for the electric backup heater.
- 2Mount the Vitogate 300 on the DIN rail in the cabinet near the indoor unit and power it per the installation instructions.
- 3Connect the Vitogate 300 to the LON port of the Vitotronic controller with the LON cable (2x RJ45). Terminate the LON bus with the supplied terminator.
- 4For Modbus TCP, connect the LAN port to your network. For Modbus RTU, wire A to A and B to B with a shielded twisted pair, GND separately, and fit 120 ohm termination at both bus ends.
- 5Open the Vitogate web interface, assign a fixed IP address or Modbus slave address, and enable Modbus TCP (port 502) or RTU (9600 8N1).
- 6On the Modbus page, select the LON datapoints in a fixed, documented order. Record the assigned register number for each datapoint, because that order sets the numbering.
- 7Enable external communication on the Vitotronic controller so the datapoints are readable.
- 8Test with a Modbus client, for example
mbpoll -m tcp -t 4 -r 1 -c 4 (ip-address). If you get four plausible temperatures, the link is up.
Deriving COP and consumption from Viessmann Modbus data
Viessmann exposes no direct COP register, and by default the Vitogate 300 does not expose return temperature, flow rate or electrical power. So you cannot compute COP from four internal registers the way you can with some other brands. The honest installer approach is to add an external Modbus meter.
Fit a Modbus energy meter on the heat pump supply for electrical input power, and use a heat meter with Modbus for thermal output. Then compute server side:
COP_instant = Q_th_kW / P_el_kW (filter on compressor active)
SCOP_rolling_365 = sum(Q_th * dt) / sum(P_el * dt)
The Vitocal datapoints (supply temperature A:100, compressor frequency A:126, operating hours A:162) remain valuable as context and for fault detection, but the hard COP comes from the external meters. Performance test standards such as EN 14825 define SCOP, which is why a rolling annual figure is the one that matters.
For the installer, the payoff is that fault alerts arrive over Modbus on your own monitoring dashboard with alerts, often before the customer opens the ViCare app. Across a maintenance portfolio that saves several trips per month.
SG Ready over Modbus and steering on PV
SG Ready is a standard defined by the German BWP with four grid modes on two digital terminals. Viessmann Vitocal supports SG Ready; full four-mode control via digital inputs needs the Viessmann EA1 extension module. A Modbus master logs the resulting state, and through the operating program (H:33) you can influence behaviour.
Installers commonly pair this with an inverter or energy manager to steer on PV surplus or a dynamic tariff. See the solar inverter Modbus monitoring guide for the inverter side. Logging SG Ready events with a timestamp and mode builds the evidence trail for grid flexibility payments.
Regulation makes this urgent. The EU F-gas Regulation 2024/573 drives the switch to R290, and the EU EPBD recast 2024/1275 requires building automation and control systems in larger buildings. Continuous Modbus data is the simplest way to document this performance. German heat pump sales reached 193,000 units in 2024, down 46 percent year on year, at a market share of 26 percent (BWP Branchenstudie), so the installed base that needs monitoring keeps growing. The ModbusCloud Gateway reads a Viessmann installation and puts the data in your dashboard; see the current hardware on the product page.
Frequently asked questions about Viessmann Modbus
Does a Viessmann Vitocal have Modbus by default?
No. The Vitocal indoor unit communicates internally over the Viessmann bus, not over Modbus. For Modbus on the Vitotronic generation you need the Vitogate 300 gateway. The new E3 generation (Vitocal 250-A) runs on CAN and needs Open3E or a WAGO CAN-Modbus gateway.
What is the Vitogate 300 and what does it do?
The Vitogate 300 (type BN/MB) is a DIN-rail gateway that connects Vitotronic controllers over LON to Modbus TCP or BACnet. It exposes up to 64 holding and input registers plus 255 coil and status registers. You order it through a Viessmann partner or a technical wholesaler.
Why do my Viessmann Modbus register numbers no longer match?
The Vitogate 300 assigns register numbers dynamically based on the order in which you select LON datapoints. Change the selection and all numbers shift. Fix the datapoint order per project and record the assigned register number for each datapoint.
What baud rate and port does the Vitogate 300 use?
Modbus TCP runs on port 502. Modbus RTU over RS-485 defaults to 9600 baud, 8 data bits, no parity, 1 stop bit (8N1). Verify that every node on the same RS-485 bus shares that setting.
Can I connect a Viessmann heat pump to Home Assistant?
Yes. On the Vitotronic generation you connect the Vitogate 300 through the standard Modbus integration. On the E3 generation you read the CAN bus with Open3E to MQTT. See the separate Home Assistant Modbus integration guide for the configuration.
How do I calculate COP from a Viessmann heat pump?
Viessmann exposes no COP register and the Vitogate provides neither flow rate nor electrical power. Add a Modbus energy meter for electrical power and a heat meter for thermal power, then compute COP server side as thermal divided by electrical, filtered on compressor active.
Does SG Ready work on a Viessmann Vitocal over Modbus?
Yes. Vitocal supports the four SG Ready modes over two digital terminals; full control needs the EA1 extension module. A Modbus master logs the state, and through the operating program register you can steer behaviour, for example on PV surplus.
Does the Vitogate 300 support the new Vitocal 250-A?
Not as a standard Modbus path. The Vitocal 250-A belongs to the E3 or One Base generation on R290 and runs internally on CAN, not on the LON bus the Vitogate 300 uses. For those units choose Open3E or a WAGO CAN-to-Modbus gateway.
Question about your setup?
Ask it here. We think along with your project, and building a free integration is part of that.