Make your Viessmann heating locally available via MQTT while keeping Optolink/ViCare App & more!
This software is not affiliated with, endorsed by, or associated with Viessmann in any way. The terms Vitoconnect, Optolink, Vitocal and ViCare refer to Viessmann products and technologies. All product and brand names mentioned belong to their respective owners. Use this software at your own risk.
- Local Control and Cloud Capability โ Allow full local control and datapoint access while retaining the ability of Viessmann Cloud and App access.
- Viessmann Heating/Heat Pump Compatibility โ Works with Vitodens, Vitocal, Vitocrossal, and most other Optolink featured devices.
- Smart Home Ready โ Integrates with Home Assistant, ioBroker, Node-RED or any other system with MQTT Support.
- Version 1.2.0.0 is out! Check the changelog for details.
- Need VS1 / KW protocol support? Use the dedicated branch.
- Explore other feature branches, there might be something useful for you! ๐
- System Architecture
- Software Requirements
- Hardware Requirements
- Installation
- Getting Started
- Command Syntax: MQTT & TCP/IP
- Questions & Issues
- Printable Case
- Additional Images
- Enables both local monitoring/control and Viessmann's cloud services in parallel.
- Data accessible via MQTT or TCP/IP for smart home integration (e.g. Home Assistant).
- Supports VS2 and VS1/KW protocols with different branches.
- branch vs1test works as with VS1/KW protocol but only without Vitoconnect.
- for VS1/KW with Vitoconnect there is the viconn-listener available (beta state).
๐ฅ Introduction Video (German): Watch on YouTube
๐ Extended Setup Tutorial (German): Rustimation Blog
- Python >= 3.9:
- pyserial:
pip install pyserial
- MQTT:
pip install paho-mqtt
version >= 2.0
- pyserial:
- Virtual environments recommended (Guide).
- Raspberry Pi or a suitable system.
- Viessmann Optolink-compatible heating (Vitodens, Vitocal, Vitocrossal, etc.).
- Optolink r/w head:
- Original Viessmann model or self-made.
- Volkszรคhler-compatible versions may work if LED distance is adjusted (8โฌ option).
- To retain ViCare App functionality, use a USB-to-TTL adapter:
- Recommended: CP2102 chip (Example).
- Some newer Vitoconnect models may work with FTDI chips.
- Raspberry Pi UART voltage = 3.3V โ Set jumper accordingly!
git clone https://github.com/philippoo66/optolink-splitter.git
cd optolink-splitter
Using a virtual environment is recommended to keep dependencies isolated and avoid conflicts with system-wide packages. More details can be found in this guide.
python3 -m venv myvenv
python3 source myvenv/bin/activate # On Windows use: venv\Scripts\activate
pip install pyserial
pip install paho-mqtt # Only if MQTT is used
NOTE: After installation, the environment must be activated each time before running the script.
Modify settings_ini.py
according to your heating (/ datapoints):
- Refer to Wiki | Parameter Addresses, poll_list samples
- Refer to Wiki | ViessData21
python3 source myvenv/bin/activate # Make sure to activate the virtual environment. On Windows use: venv\Scripts\activate
python3 optolinkvs2_switch.py
For automatic startup, set up a service. See the Wiki Guide.
- Ensure the serial port is enabled and serial console is disabled (Guide).
- CP2102 Interface:
- Cross RX/TX lines.
- Set voltage jumper to 3.3V.
- Use
ttyAMA0
instead ofttyS0
for Raspberry Pi 3+ (Details).
To ensure proper communication with the system, follow the power-on sequence exactly:
- Connect all wires and plugs to the Raspberry Pi and Vitoconnect.
- Power on the Raspberry Pi.
- Run the script and wait for the prompt:
awaiting VS2...
. - Power on Vitoconnect 100 OPTO1.
The startup sequence for this device is not critical, as it will automatically reconnect without issues.
For more details on the command syntax, see the Wiki | Command Syntax Overview or go directly to the section on MQTT and TCP/IP requests.
-
read ambient temperature, scaled with sign:
- cmnd = read;0x0800;2;0.1;true
- resp: 1;2048;8.2
-
read DeviceIdent as raw:
- cmnd = read;0xf8;8
- resp: 1;248;20CB1FC900000114
-
write hotwater temperature setpoint:
- cmnd = write;0x6300;1;45
- resp: 1;25344;45
- Discussions & contact: GitHub Discussions
- Bug reports: GitHub Issues
Raspberry Pi2 and Pi3 case with CP board holder (Possibly for Pi 4 in future). Thanks to Kristian!
ref. #67