Getting Started¶
This guide takes you from zero to seeing live boiler telemetry on your MQTT broker.
Prerequisites¶
| Requirement | Details |
|---|---|
| Python | ≥ 3.14 |
| Optolink adapter | USB-to-serial adapter connected to the Vitodens 200-W service port |
| MQTT broker | Any MQTT 3.1.1+ broker — e.g., Mosquitto |
| uv | Recommended Python package manager (docs) |
No hardware? No problem
You can run vito2mqtt in dry-run mode with a fake adapter — no serial port or boiler needed. Great for exploring the MQTT topic structure.
Installation¶
From PyPI¶
From source¶
Minimal Configuration¶
vito2mqtt reads settings from environment variables or a .env file in the working
directory. Create a .env file with the minimum required settings:
# Required — serial port for the Optolink adapter
VITO2MQTT_SERIAL_PORT=/dev/ttyUSB0
# Required — MQTT broker connection
VITO2MQTT_MQTT__HOST=localhost
VITO2MQTT_MQTT__PORT=1883
# Optional — MQTT authentication
# VITO2MQTT_MQTT__USERNAME=vito2mqtt
# VITO2MQTT_MQTT__PASSWORD=secret
Nested delimiter
MQTT settings use __ (double underscore) as a nested delimiter — e.g.,
VITO2MQTT_MQTT__HOST maps to the mqtt.host setting. This follows the
pydantic-settings
convention.
See the Configuration Reference for all available settings.
First Run¶
With hardware¶
vito2mqtt connects to the Optolink adapter, initializes the P300 protocol, and starts polling telemetry. You should see log output indicating successful connection and first data reads.
Dry-run mode (no hardware)¶
Dry-run mode uses a fake adapter that returns simulated values. This is useful for:
- Testing your MQTT broker setup
- Exploring the topic structure
- Developing Home Assistant configurations
Verifying Output¶
Subscribe to the telemetry topics to see data flowing:
You should see JSON payloads for each signal group:
{
"outdoor_temperature": 8.5,
"outdoor_temperature_lowpass": 8.3,
"outdoor_temperature_damped": 8.4
}
{
"boiler_temperature": 42.1,
"boiler_temperature_lowpass": 41.8,
"boiler_temperature_setpoint": 45.0,
"exhaust_temperature": 52.3,
"burner_modulation": 67,
"burner_starts": 14523,
"burner_hours_stage1": 8241.5,
"plant_power_output": 72.5
}
{
"error_status": 0,
"error_history_1": { "error": "Flame failure", "timestamp": "2026-01-15T14:30:00" },
"error_history_2": { "error": "Flow sensor fault", "timestamp": "2025-12-03T08:15:00" }
}
Next Steps¶
- Configuration Reference — tune polling intervals, legionella settings, signal language
- MQTT Signal Reference — full list of 88 signals with addresses, types, and access modes
- Guides — Home Assistant integration, Docker deployment, common recipes