Connecting Viessmann Heat Pump via Modbus to Loxone
This guide covers integrating Viessmann heat pumps with Loxone home automation via Modbus using the Vitogate module.
System Architecture
Vitogate Configuration
Accessing Vitogate Web Interface
The Vitogate uses a link-local IP address by default:
- Connect PC directly to Vitogate via Ethernet
- Configure PC network adapter:
- IP: 169.254.0.10 (or any 169.254.0.x except .1)
- Subnet: 255.255.0.0
- Gateway: Leave blank
- Open browser to http://169.254.0.1
- Default credentials: admin / admin (change after setup)
Vitogate Network Settings
For Loxone integration, assign a static IP:
- Navigate to Network Settings
- Set static IP in your LAN subnet (e.g., 192.168.1.50)
- Set appropriate subnet mask and gateway
- Save and reboot Vitogate
- Reconnect your PC to regular network
- Access Vitogate at new IP address
Enabling Modbus TCP
- Navigate to Interfaces > Modbus
- Enable Modbus TCP Server
- Set port (default 502)
- Configure Unit ID (typically 1)
- Save configuration
Loxone Configuration
Adding Modbus Device
- Open Loxone Config
- Add Modbus Server peripheral
- Configure:
- IP Address: Vitogate IP (e.g., 192.168.1.50)
- Port: 502
- Unit ID: 1 (must match Vitogate)
Common Viessmann Modbus Registers
Note: Register addresses vary by Vitogate firmware and heat pump model. Consult Vitogate Modbus documentation for exact mapping.
| Function | Register Type | Typical Address | Data Type |
|---|
| Outside Temp | Input (3x) | 30001 | INT16 /10 |
| Supply Temp | Input (3x) | 30002 | INT16 /10 |
| Return Temp | Input (3x) | 30003 | INT16 /10 |
| DHW Temp | Input (3x) | 30004 | INT16 /10 |
| Operating Mode | Holding (4x) | 40001 | UINT16 |
| Room Setpoint | Holding (4x) | 40002 | INT16 /10 |
| DHW Setpoint | Holding (4x) | 40003 | INT16 /10 |
| Compressor Status | Input (3x) | 30010 | BOOL |
Creating Loxone Function Blocks
For analog values (temperatures):
- Add Modbus Input block
- Set register address
- Set data type (typically Signed 16-bit)
- Apply scaling (divide by 10 for temperatures)
For setpoints (writable):
- Add Modbus Output block
- Set register address (Holding register)
- Apply reverse scaling (multiply by 10)
Troubleshooting
Cannot Access Vitogate at 169.254.0.1
Check:
- Direct Ethernet connection (no switch)
- PC IP in 169.254.0.x range (not .1)
- Disable Wi-Fi on PC
- Try different browser
- Wait 60 seconds after power-up
Modbus Connection Refused
Check:
- Vitogate IP reachable (ping test)
- Modbus TCP enabled in Vitogate
- Port 502 not blocked by firewall
- Correct Unit ID in Loxone
Values Show Zero or Incorrect
Check:
- Register addresses match Vitogate documentation
- Correct data type (signed vs unsigned)
- Scaling factor applied (most temps are value/10)
- Byte order settings if values seem corrupted
Intermittent Communication
Check:
- Network stability
- Reduce polling rate (Vitogate has limited throughput)
- Check for IP conflicts
- Verify Vitogate firmware is current
Best Practices
Polling Rates
- Temperature values: 30-60 second intervals
- Status points: 10-30 second intervals
- Avoid polling faster than 5 seconds
Register Organization
- Group related registers to minimize transactions
- Use block reads where possible
- Prioritize critical values
Data Validation
- Implement range checking in Loxone
- Set reasonable min/max limits
- Alert on communication failures
Viessmann Documentation
For register mappings, obtain:
- Vitogate 200 Modbus documentation (from Viessmann)
- Data point list for your specific heat pump model
- Firmware release notes for any register changes
Note: Viessmann may require installer access or technical support contact to obtain detailed Modbus documentation.