Da mir das Ereignisprotokoll mit das Wichtigste am ViGuide war, habe ich mithilfe AI ein Open-Source-Tool entwickelt, das die Events über die Viessmann Developer API wieder zugänglich macht.
ViEventLog ist ein lokaler Webserver mit Timeline-Visualisierung, der zeigt wann eure Anlage heizt, Warmwasser bereitet und wie häufig sie taktet - Informationen die Viessmann
selbst nicht anzeigt.
Installation: Binary herunterladen, entpacken, starten und im Browser http://localhost:5000 öffnen.
https://github.com/mschneider82/vieventlog
Hinweis: Ihr benötigt eine eigene Client-ID aus dem Viessmann Developer Portal. Anleitung steht in der README.
Feedback und Bugs bitte über die GitHub Issues melden.
viel spaß euch, ich freu mich auf eure Testberichte! Man kann auch mehrere Accounts hinzufügen (da Viessman ein 2 Anlagen limit pro account hat), endlich kann ich damit alle event logs meiner 3 anlagen sehen ohne immer den viguide zugang wechseln zu müssen.
NEU: jetzt auch mit DASHBOARD und Einstellmöglichkeiten um div. settings zu ändern!
Bei mir wird die Raumtemperatur Normal korrekt ausgelesen. Steht aktuell auf 21°C.
Die Heizkurve liegt aber 1 Grad unter der tatsächlichen Heizkurve für 21°C.
In der Formel, die im Diagramm der Heizkurve angezeigt wird, steht 2x der Wert 20 drin. Das müsste aber die Raumtemperatur Normal ein.
Wenn ich die Raumtemperatur Normal auf 24°C ändere, muss sich die Heizkurve verändern, tut sie aber nicht.
Neuer Fehler:
Raumtemperatur Normal auf 26°C verstellt.
Heizung korrekt auf 26°C eingestellt.
Jetzt Raumtemperatur auf einen kleineren Wert z.B. 22°C eingestellt.
Heizung wird korrekt umgestellt aber ViEventLog zeigt weiter 26°C an.
Man könnte es wie folgt umbenennen:
ViOpen
ViFree
ViWeb
nur so als Idee. Im prinzip ist es egal.
Gruß Peter
Neuer Fehler:
Raumtemperatur Normal auf 26°C verstellt.
Heizung korrekt auf 26°C eingestellt.
Jetzt Raumtemperatur auf einen kleineren Wert z.B. 22°C eingestellt.
Heizung wird korrekt umgestellt aber ViEventLog zeigt weiter 26°C an.
Es kann passieren, dass hier noch der alte Wert zurück kommt, es wird 2 sekunden nach dem übermitteln einer Konfig einstellung gewartet und die Werte neu ausgelesen. Falls das passiert kann man einfach den Aktualisieren button drücken dann sollte es korrekt dargestellt werden, aufgrund der API limits möchte ich nicht zu viele Anfragen schicken.
@D-S-M schrieb:Bei mir wird die Raumtemperatur Normal korrekt ausgelesen. Steht aktuell auf 21°C.
Die Heizkurve liegt aber 1 Grad unter der tatsächlichen Heizkurve für 21°C.
In der Formel, die im Diagramm der Heizkurve angezeigt wird, steht 2x der Wert 20 drin. Das müsste aber die Raumtemperatur Normal ein.
Wenn ich die Raumtemperatur Normal auf 24°C ändere, muss sich die Heizkurve verändern, tut sie aber nicht.
Ich habe 20°C und 6 Niveau, daher ist 26°C start der heizkurve:
sobald ich Raumtemp auf 24°C stelle ist die kurve geändert:
Hast du die neuste version, bzw du mir bitte screenshot schicken damit ich sehe was du meinst?
Danke!
@D-S-M da du ja docker verwendest, nicht vergessen "docker pull" auf das latest image zu machen, da er sonst immer die alte version started der er lokal gecached hat.
Zwei Sachen zur Optimierung vielleicht, @mschneider82 .
1. Die Drehzahl-Prozente werden nur aktiv, wenn ich nach Wechsel zum Dashboard die via Einstellungen (gepeicherten) Vorgaben (min/max U/Min) noch einmal speichere. Ginge das prinzipiell automatisch, wenn min/max bereits angegeben ?
2. Im Dashboard zuckt der Bildschirm hin und wieder, ein Refresh der Werte ist damit aber nicht verbunden. Das passiert dann, wenn man den Button "Aktualisieren" klickt. Kann man hier auch ein "Auto-Refresh An/Aus" implementieren ?
Ansonsten, bin ich weiterhin begeistert, wie schön das funktioniert, so schnell, so agil, so continuous delivery - sehr, sehr gut ! VIELEN DANK !
PS: für zukünftige Erweiterungen - falls dir langweilig wird, keinesfalls ein Muss ... 😉
Die API stellt ja einige Verbrauchs-Werte in kWh für Tag/Woche/Monat/Jahr etc. bereit, einerseits für die WP, bei mir auch für die E3_Vitocharge_*. Diese Werte zusätzlich anzuzeigen, wäre auch recht nett.
an der Statistik bin ich schon dran
witzigerweise musste ich viguide debugen und bin auf einen parameter gestoßen um die werte von der api zu erhalten..
GROSSARTIG ! 😎
Docker gerade aktualisiert.
pi@EDSM2:~ $ cd /opt/vieventlog/
pi@EDSM2:/opt/vieventlog $ docker pull ghcr.io/mschneider82/vieventlog:latest
latest: Pulling from mschneider82/vieventlog
Digest: sha256:baf026b47b8e2c844b93fcbfd1d4f41909f6b86b30e1f7c18c093c341c4219f3
Status: Image is up to date for ghcr.io/mschneider82/vieventlog:latest
ghcr.io/mschneider82/vieventlog:latest
pi@EDSM2:/opt/vieventlog $ docker compose down && docker compose up -d
WARN[0000] /opt/vieventlog/docker-compose.yml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion
[+] Running 2/2
✔ Container vieventlog Removed 0.2s
✔ Network vieventlog_default Removed 0.2s
WARN[0000] /opt/vieventlog/docker-compose.yml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion
[+] Running 2/2
✔ Network vieventlog_default Created 0.0s
✔ Container vieventlog Started 0.2s
pi@EDSM2:/opt/vieventlog $
Meine Raumtempertur Normal steht aktuell auf 16°C.
Hi @D-S-M
Die Heizkurven-Formel verwendet einen hartcodierten Fallback von 20°C, wenn die Raumtemperatur vom aktiven Programm nicht geladen werden kann.
- Dashboard öffnen (nicht neu laden!)
- Browser DevTools öffnen (F12)
- Console-Tab öffnen
- Screenshots von diesen Log-Zeilen:
🔍 Active program for heating curve: [???]
🔍 Found program feature: [???]
✅ Using room temp setpoint from active program ... : ...°C
ODER
⚠️ Could not find temperature for active program, using default 20°C
Im Dashboard:
"Betriebsprogramm Aktiv": Welcher Wert steht dort? (normal, normalHeating, comfort, etc.)
gerne im geräte Debug (alle geräte anzeigen) die vitocal json öffnen und schauen ob du den wert dort findest
1. Aktives Programm (WICHTIGSTE INFO!)
"heating.circuits.0.operating.programs.active": {
"properties": {
"value": {
"value": "???" // <- DIESEN WERT!!
}
}
}
Mögliche Werte: "normal", "normalHeating", "comfort", "comfortHeating", "reduced", "reducedHeating", "standby", "eco"
---
2. Das Normal-Programm (mit Temperatur)
Je nach aktivem Programm von oben, suchen nach:
Variante A:
"heating.circuits.0.operating.programs.normal": {
"properties": {
"temperature": {
"value": 16 // <- SOLLTE 16 sein!
}
}
}
Variante B:
"heating.circuits.0.operating.programs.normalHeating": {
"properties": {
"temperature": {
"value": 16
}
}
}
---
3. Alle Program-Features durchsuchen
Suchen nach Pattern: "heating.circuits.0.operating.programs."
Alle Features auflisten die so beginnen und deren Struktur zeigen!
---
4. Heizkreis-Info (zur Sicherheit)
"heating.circuits.0.operating.modes.active": {
"properties": {
"value": {
"value": "???" // dhw, dhwAndHeating, heating, standby, etc.
}
}
}
---
Beispiel was ich brauche:
{
"heating.circuits.0.operating.programs.active": { "value": "normal" },
"heating.circuits.0.operating.programs.normal": {
"temperature": { "value": 16 }
},
"heating.circuits.0.operating.programs.comfort": {
"temperature": { "value": 20 }
}
}
Leider bekomme ich nur total sinnlose werte von der API zu den Verbrauchs und Stromdaten zurück, wenn ich den API call mit dem viguide portal key mache (das kann man im browser nach dem einloggen extrahieren) dann sehe ich die werte (klar, das portal zeigt sie ja auch an).
Unser eigener generierter DEV key hat die verbrauchswerte leider nicht:
heating.compressors.0.power.consumption.dhw"
heating.compressors.0.power.consumption.heating
heating.compressors.0.power.consumption.current
heating.compressors.0.power.consumption.total
heating.compressors.0.heat.production.dhw
heating.compressors.0.heat.production.heating
das ist mal wieder fiesmann.
Ich habe auch gestern Abend beim ersten Wurf die Werte als komisch empfunden, bin aber noch nicht ins Detail gegangen.
Ich hatte da vorher mal Werte gesehen in der API, wo die genau hin gehören, weiss ich allerdings (noch) nicht.
Wenn ich es schaffe, schaue ich heute Abend noch einmal ins Debug-Json, was da angeboten wird und verifiziere das mal mit den Anzeigen an der WP. Vielleicht kann ich da etwas input liefern.
Also, ich habe das mal geprüft, muss aber etwas ausholen.
Ich habe ja hier einige Stromzähler und ein Excelsheet, wo ich monatliche Werte dieser Zähler, dem EMS lt. ViCare-App, der "Wärme"-Analyse lt. ViCare-App und den Displays meiner Geräte (HMI) einfliessen lasse.
Zwischen diesen Werten ergeben sich über das Jahr Unterschiede ...
Dabei liegen die Werte der "Wärme-" Analyse und dem HMI noch am nächsten an dem gemessenen Wert.
Man sollte jetzt vorsichtig sein - die EMS-ViCare-App und -ViGuide-Werte sind jenseits irgend einer brauchbaren Genauigkeit.
Ich habe jetzt vermutet, die API muss die HMI-Werte irgendwie darstellen, also die Werte, die das Gerät auch anzeigt.
Dafür sind wohl die folgenden features zuständig:
a) "heating.heat.production.summary.dhw", -- thermisch WW
b) "heating.heat.production.summary.heating", -- thermisch Heizung
c) "heating.heat.production.summary.cooling", -- thermisch Kühlung (verwende ich nicht)
d) "heating.power.consumption.dhw", -- Verbrauch WW
e) "heating.power.consumption.heating", -- Verbrauch Heizung
f) "heating.power.consumption.cooling", -- Verbrauch Kühlung
g) "heating.power.consumption.summary.dhw", -- Summe Verbrauch WW
h) "heating.power.consumption.summary.heating", -- Summe Verbrauch Heizung
i) "heating.power.consumption.summary.cooling", -- Summe Verbrauch Kühlung
j) "heating.power.consumption.total", -- Summer Verbrauch über alles
Tatsächlich kann ich die Werte, die im HMI angezeigt werden, größtenteils hier im Debug-Json wiederfinden. Allerdings scheint hier eine gewisse Aktualität der Werte eine Rolle zu spielen, die im Falle von d, e und f mit den Tags (hier anhand des Beispiels von e) ...
"day": {
"type": "array",
"unit": "kilowattHour",
"value": [
1.5,
10.3,
10.2,
14.2,
11.9,
15.3,
8.7,
6.9
]
},
"dayValueReadAt": {
"type": "string",
"value": "2025-10-06T12:56:45.707Z"
},
bzw. monthValueReadAt, weekValueReadAt, yearValueReadAt wohl mit dem Zeitstempel in Verbindung steht. So sind z.B. bei der Tagesliste mit diesem Zeitstempel der erste Eintrag (1,5) vom exakt "2025-10-06T12:56:45.707Z", der zweite Eintrag vom Vortag, also dem 05.10.2025 u.s.w., ab dem die Werte dann auch stimmig sind mit der HMI-Anzeige und (nahe an) der "Wärme"-Analyse.
Wie diese *ReadValueAt zustande kommen, weiss ich nat. nicht.
Kann man die Daten iwie aktualisieren durch eine spezielle Abfrage ?
Ähnliches scheint auch bei z.B. h der Fall zu sein. Hier stimmen die Werte zu last*, zu current* spielt wohl wieder der Zeitstempel rein, z.B. "2025-10-09T09:59:54.072Z" - hier sind die Werte wohl nur bis 09:59:54 aktuell.
Ich hoffe, du kannst damit etwas anfangen, und vor allen Dingen, man kann die Werte irgendwie ganz aktuell abfragen. Sollte dies möglich sein, so hat man zumindest diese Statistik.
Ach ja, das Json habe ich um ca. 17:30 Uhr heute gezogen.
Ich bekomme übrigens für heute im Dashboard angezeigt ...
... was dem Wert wie im Beispiel oben entspricht, der allerdings zum 2025-10-06T12:56:45.707Z aktuell sein dürfte ...
Moin,
ich habe auch bei mir mal die Werte verglichen:
ViEventLog048:
ViGuide:
Das sieht für mich erst mal stimmig aus.
Bei der Heizkurve fällt mir aber etwas auf. Ich habe ab 21:00 als Nachtabsenkung 3 Grad eingestellt. Das sieht man in ViCare und Viguide.
Heizkurve unter ViGuide:
Und hier die Heizkurve unter ViEventLog048:
Die Kurve rutscht hier bei der Nachtabsenkung viel zu weit nach unten. Da erkennt man bei null Grad Außentemperatur einen Vorlauf von ca. 33 Grad, in ViGuide sind es aber richtigerweise 36 Grad. Wenn es morgens aus der Nachtabsenkung in den Normalmodus geht ist alles wieder richtig.
Gruß Peter
Danke für dieses super tool!!!
Sehr schön gemacht, die graphische Darstellung auf der Zeitachse ist besonders hilfreich.
Das Auslesen des Eventlogs ist ist ein absolutes key Feature, genau so etwas würde ich von Viessmann erwarten.
Danke für deine Zeit.
Hi Peter,
hier wäre etwas mehr vom screenshot gut zum debugen. es wird immer die heizkurve vom Aktiven Programm angezeigt, also wenn du abends Reduziert aktiv hast, sollte die Basis die eingestellte temperatur von Reduziert sein. Am besten die ganze kachel screenshoten.
bei der Statistik kannst du probehalber andere tage noch vergleichen? Also z.b. gestern und vorgestern oder letzter monat.
Danke
Matthias
Hallo Matthias,
ich stelle heute Abend einen neuen Screenshot rein, wenn er wieder in die Nachtabsenkung geht.
Bis dahin erst mal vielen Dank für deine Aktivitäten und ein ganz großes Lob. Das Tool ist inzwischen so weit, dass man auf ViGuide gut und gerne verzichten kann.
Gruß Peter
Hallo Matthias,
wie versprochen, hier die Screenshots.
So sieht es tagsüber aus:
Um 21:00 geht die Anlage in die Nachtabsenkung / Reduziert.. Da habe ich 3 Grad eingestellt, quasi nur Frostschutz. Es fällt auch auf, dass hier bei Reduzier 10 Grad steht. In ViGuide und ViApp sieht man aber die 3 Grad. So sieht es also nach 21:00 aus:
Ich hoffe, du kannst damit etwas anfangen. Tagsüber steht die Heizkurve für 0 Grad Außentemperatur bei 36 Grad Vorlauf. Nach 21:00 steht sie bei etwa 33 Grad. Das ist deutlich weniger.
Gruß Peter
Lol ... ich sehe gerade, da scheinen genau die features implementiert, die ich vorab rausgesucht habe, richtig ?
Das blöde ist, die werden in meinem Fall zumindest nicht aktualisiert. Ich habe hier immer noch die Anzeige vom "value": "2025-10-06T12:56:45.707Z".
Bist du noch dran ? Gibt es eine Chance die Werte mit aktuellem Datum abzufragen ?
Übrigens werden die Drehzahl-% jetzt immer direkt angezeigt - vielen Dank ! 😎