Viessmann vcontrold: 4 Jahre falsche Adressen und zu viel Taktung

Beim Aufräumen meiner Grafana-Dashboards ist mir aufgefallen dass meine Viessmann Vitoladens 300-C viel zu oft taktet: 17-52 Brennerstarts pro Tag, durchschnittlich nur 9 Minuten pro Lauf. Das ist viel zu kurz für einen Öl-Brennwertkessel. Also bin ich tiefer eingestiegen und hab dabei einen massiven Bug in meiner vcontrold-Config gefunden. Seit 2022 las und schrieb ich Heizkreis 1 statt Heizkreis 2. Alle Kennlinien-Änderungen gingen ins Leere, alle geloggten Werte waren Phantomdaten.

Seit 2019 logge ich die Heizung über vcontrold, seitdem laufen die Daten in InfluxDB und ich kann im Grafana sehen was die Anlage macht. Hat immer funktioniert, dachte ich.

Wie ich den Bug fand

Ich hab am Heizungs-Display testweise die Kennlinien-Neigung von 1.4 auf 1.6 geändert. vcontrold las weiterhin 1.2. Das kann nicht sein, entweder liest vcontrold falsch oder das Display zeigt Müll. Also hab ich die vito.xml gecheckt: Alle Heizkreis-Commands verwendeten 2xxx-Adressen (Heizkreis 1). Meine Anlage hat aber nur Heizkreis 2 mit Mischer M2. Der läuft auf 3xxx-Adressen.

Meine Tests mit einer temporären Config bestätigten dass die HK2-Adressen exakt die Display-Werte liefern. HK1-Adressen zeigten frozen defaults. Seit 2022 hab ich Ghost-Daten geloggt.

Viessmann Optolink Adress-Schema

Heizkreise haben unterschiedliche Adressbereiche:

Heizkreis | Adressbereich | Kennlinie | Betrieb | Timer
HK1 (ohne Mischer) | 2xxx | 27D3/27D4 | 2323 | 2000-2030
HK2 (mit Mischer) | 3xxx | 37D3/37D4 | 3323 | 3000-3030
HK3 (Mischer M3) | 4xxx | analog | analog | analog

Globale Adressen (Kessel, Warmwasser, Solar, Brenner) bleiben bei 0xxx, 5xxx, 6xxx, 7xxx, 8xxx.

Die große Adress-Korrektur

Alle Heizkreis-Commands von HK1 auf HK2 umgezogen:

Command | Alt (HK1) | Neu (HK2)
KennlinieNeigung | 27D3 | 37D3
KennlinieNiveau | 27D4 | 37D4
Betriebsart | 2323 | 3323
RaumNorSoll | 2306 | 3306
RaumRedSoll | 2307 | 3307
VLSoll | 2544 | 3544
Timer Mo-So | 2000-2030 | 3000-3030

Zusätzlich hab ich die OpenV Referenz-XML gecheckt und noch mehr kaputte Adressen gefunden:

Sensor | Alt | Neu | Problem
Speicherladepumpe | 6513 | 6513 | Bleibt korrekt (0845 war falsch, revertiert)
Zirkulationspumpe | 6515 | 6515 | Bleibt korrekt (0846 war falsch, revertiert)
Brennerstatus | 55DE | 0842 | Zeigte nie AN
DrehzahlPumpeIntern | 7663 (CO) | 7663 (PC) | Unit-Korrektur

Sensoren die konstant 20°C oder ? zurückgaben hab ich entfernt (WWAuslauf, RaumHK, Umschaltventil, BrennerStufe). Die Anlage hat diese Fühler nicht.

Das Taktungs-Problem

Mit den korrekten Adressen konnte ich jetzt echte Daten sehen. Analyse der letzten Monate:

Außentemperatur | Ø Starts/Tag | Ø Laufzeit/Tag | Ø min/Start
-5° bis 0° | 52 | 9.9h | 11.5 min
0° bis 5° | 45 | 7.7h | 10.2 min
5° bis 10° | 34 | 5.1h | 9.1 min
10° bis 15° | 17 | 2.5h | 9.2 min

9 Minuten pro Start ist zu kurz. Ziel für Brennwertbetrieb: 20+ Minuten. Die Live-Logs zeigten dass in der Übergangszeit das Takten hauptsächlich von Warmwasser-Ladung kommt, nicht vom Heizkreis. Der Brenner heizt den Kessel (55L Inhalt) von ~48°C auf 65-70°C für WW, erreicht schnell die Abschalthysterese, schaltet ab. Dann startet der nächste Zyklus.

Codieradresse 9F: Der Game Changer

Recherche in Viessmann Community-Threads ergab: Codieradresse 9F steuert die Differenztemperatur zwischen Kessel und Heizkreis mit Mischer. Werkswert ist 8K, also heizt der Kessel 8°C über VL-Soll. Bei 9F=8 steht der Mischer nie ganz offen. Die Wärme bleibt im 55L-Kessel statt in die Heizkörper zu fließen.

Also hab ich 9F auf 0 gesetzt. Dadurch steht der Mischer beim Brennerstart ganz offen, voller Volumenstrom fließt durch die Heizkörper. Die gesamte Heizkörper- und Wandmasse dient als Wärmesenke und der Brenner läuft länger.

Erfahrungen aus dem Forum zeigten dass dadurch die Starts um 22% sinken (31->24/Tag) und die Laufzeit um 21% steigt (5.7->6.9 min).

Zugang Codierebene 2

Codierebene 2 am Vitotronic 200 Display:

Menü + OK gleichzeitig ~2 Sek. -> Codierebene 1

Nochmal Menü + OK gleichzeitig -> Codierebene 2 (Service)

Mit Hoch/Runter Codieradresse wählen -> OK -> Wert ändern -> OK

Gruppen: 00=Schema, 02-33=Kessel, 55-75=WW, 7F-95=Allgemein, A0-FF=Heizkreis (9F sitzt hier).

Alle Änderungen vom 16. April 2026

Einstellung | Vorher | Nachher | Effekt
9F (Cod.2) | 8 | 0 | ~20% weniger Starts
Kennlinie Neigung | 1.4 | 1.0 | Niedrigere VL-Temp
vcontrold Adressen | HK1 (2xxx) | HK2 (3xxx) | Echte Werte
Flamme-Adresse | 55DE | 0842 | Brennerstatus sichtbar
Sampling | 3 min | 1 min | Takte besser erfassen

Zusätzlich hab ich die Kennlinien-Neigung von 1.4 auf 1.0 gesenkt. Niedrigere Vorlauftemperaturen bedeuten weniger Öl und weniger aggressive Taktung.

Ausblick

Jetzt sammle ich 2-3 Tage Daten mit 9F=0 und Neigung 1.0. Wenn die Brennerstarts unter 25/Tag fallen und die Laufzeiten über 12 Minuten steigen, war's erfolgreich. Im Winter teste ich dann noch Codieradressen C5, C6 und 06 um VL und Kesseltemp weiter zu begrenzen.

Die große Lehre: Immer die Display-Werte mit den geloggten Werten abgleichen. Sonst optimierst du 4 Jahre lang Ghost-Daten.

[[img:1]]