VCLIENT
VCLIENT | |
---|---|
Zweck / Funktion | |
Modul für Viessman Vitotronic 200 | |
Allgemein | |
Typ | Gerätemodul |
Details | |
Dokumentation | EN / DE Thema |
Support (Forum) | Heizungssteuerung/Raumklima |
Modulname | 89_VCLIENT.pm |
Ersteller | Andies (Forum /Wiki) |
Wichtig: sofern vorhanden, gilt im Zweifel immer die (englische) Beschreibung in der commandref! |
VCLIENT ist ein Modul zur Darstellung der Daten einer Viessmann Vitotronic 200 Heizungssteuerung. Die Daten werden dabei über einen vcontrold Daemon gelesen (der seinerseits über einen Optolink Adapter auf die Heizungssteuerung zugreift).
Konfiguration
VCLIENT basiert auf dem (extern) laufenden Daemon vcontrold. Die Viessmann-Heizung wird ausschließlich durch vcontrold kontrolliert. Dieses Modul verbindet sich nur mit vcontrold und stellt gewissermaßen einen vcontrold-Klienten für FHEM dar. Wenn ein Befehl nicht das tut, was er soll, liegt es an vcontrold, nicht aber an VCLIENT. Zur Installation und Inbetriebnahme von vcontrold sowie dem dazugehörigen Optolink-Kabel siehe die Webseite https://github.com/openv/openv
Konfigurationsdatei
VCLIENT setzt eine Konfigurationsdatei voraus. In dieser Datei befinden sich zeilenweise Einträge. Jeder Eintrag ordnet einem vcontrold -Befehl einen Readingnamen zu. Wird der in der Zeile genannte Befehl ausgeführt, so wird das durch vcontrold erhaltene Ergebnis in das entsprechende Reading geschrieben. Ein typischer Abschnitt in der Konfigurationsdatei sieht wie folgt aus:
###### VCLIENT-Konfigurationsdatei ######### #Dies ist eine Kommentarzeile getTempA Aussentemperatur getTempBrennerstarts Brennerstarts getTempBrennerstarts BrennerstartsBisGestern daily getTimerWWMo Warmwasser_1Montag manually #bisher standen get-Befehle da, nun folgen set-Befehle setTimerWWMo WW_1Mo_spaet 08:00-10:00|12:00-12:30|| setTempWW WarmwasserTemp 70,65,60,55
Get-Befehle
Zuerst muss der vcontrold-Befehl in der Zeile stehen, er muss das Wort get enthalten (zB getTempWW). Die Rückgabe des vcontrold-Befehls "getTempA" wird dann in das VCLIENT-Reading Aussentemperatur geschrieben. Bitte für jeden Befehl eine eigene Zeile verwenden. Soll ein Kommando nur einmal am Tag ausgeführt werden, muss als weiteres (drittes) Wort in der cfg-Datei "daily" stehen. Soll ein Kommando nur manuell ausgeführt werden, so muss als weiteres (drittes) Wort in der cfg-Datei "manually" stehen. Das Format von Zeitbefehlen (so genannte timer) wird automatisch erkannt.
Set-Befehle
Zuerst muss der vcontrold-Befehl in der Zeile stehen, er muss das Wort set enthalten (zB setTempWW). Dann erfolgt der Name, der im FHEM-Set-Befehl auftauchen soll, hier WarmwasserTemp (der komplette FHEM-Befehl würde dann lauten set <name> WarmwasserTemp 65
). Zuletzt stehen die möglichen Auswahlen einer dropdown-Liste in der Zeile. Es ist unabdingbar, dass die auszuwählenden Werte kommagetrennt und ohne Leerzeichen geschrieben werden. Timer-Befehle machen hier eine Ausnahme. Wieder erfolgt zuerst der vcontrold-Befehl (hier setTimerWWMo), danach folgt der Befehl, mit dem die Angaben in FHEM ausgelöst werden (hier wäre das set <name> WW_1Mo_spaet). In FHEM werden die Zeiten aber nicht eingegeben, dies geschieht vielmehr in der cfg-Datei. Dazu werden die Zeiten, die an die Anlage zu senden sind, in der Datei eingetragen. Es muss sich um eine gerade Anzahl von Zeitangaben, höchstens acht, handeln. Die Zeitangaben sind durch genau drei Trennzeichen | voneinander zu separieren. Die Zeiten wiederum sind durch Angaben HH:MM-HH:MM zu notieren. Dabei sind nur Minuten zulässig, die Vielfache von 10 sind; weiter müssen die Zeitangaben von links nach rechts wachsen und dürfen nicht fallen. Die Zeitangaben wie auch der Set-Befehl dürfen keine Leerzeichen enthalten.
Definition
Das Gerät wird wie folgt definiert:
define <name> VCLIENT <host> <port> <configfilename> <interval>
- <host>
- ist der Host, auf dem vcontrold läuft.
- <port>
- ist der Port, unter dem vcontrold ansprechbar ist (sehr oft 3002).
- <configfilename>
- ist die vorbereitete Konfigurationsdatei, siehe hierzu oben.
- <interval>
- ist die Zeitspanne in Sekunden, in denen regelmäßige Abfragen erfolgen sollen. Der Wert 0 (nur manuelle Abfragen) ist möglich.
Set-Befehle
set <name> reload_command_file <configfilename>
Ändert den Namen und/oder Pfad der Konfigurationsdatei. Die Datei muss existieren, sonst erfolgt eine Fehlermeldung (vollständigen Pfad angeben).
set <name> <vcontrold/FHEM-Kommando> args
Es können mit dem set-Befehl auch vcontrold-Kommandos ausgeführt werden. Diese Kommandos müssen vorab in der cfg-Konfigurationsdatei definiert werden. Schaut man auf das obige Beispiel einer Konfigurationsdatei, so würde ein FHEM-Befehl der Form
set <name> WarmwasserTemp 70 intern
an die Heizung bzw. vcontrold den Befehl setTempWW 70 absetzen, der dann die Warmwassertemperatur auf 70 Grad Celsius setzt. Im Reading last_set_cmd muss ein OK erscheinen, wenn der Befehl erfolgreich ausgeführt wurde. Analog können komplexere Zeitangaben für Timer gesetzt werden. Leider ist es momentan wohl so, dass beim Setzen von timer-Angaben vcontrold eine Fehlermeldung zurückgibt - obwohl die Angaben korrekt übertragen wurden.
Get-Befehle
get <name> update
Führt die in der Konfigurationsdatei genannten vcontrold-Befehle aus und schreibt die Ergebnisse in die dort angegebenen Readings. Sind diese nicht vorhanden, so werden sie angelegt.
get <name> update_manually
Führt die in der Konfigurationsdatei genannten vcontrold-Befehle für sämtliche manuellen Einträge aus und schreibt die Ergebnisse in die dort angegebenen Readings. Sind diese nicht vorhanden, so werden sie angelegt.
Attribute
attr <name> <timeout> 1
Jeder Zugriff auf einen entfernten Host ist nicht blockierend, muss aber dennoch die Möglichkeit eines Abbruches beinhalten (falls partout keine Antwort erfolgt). Timeout beschreibt, nach wie vielen Sekunden die Abfrage erfolglos abgebrochen werden soll. In einem solchen Fall wird auch die gesamte Abfrageliste beendet. Unbedingt beachten: Ein zu kurzer Timeout ist problematisch, weil dann u.U. noch keine Rückmeldung von der Heizung erfolgen konnte. Voreinstellung (wenn kein Attribut gesetzt ist) ist 1 Sekunde.
attr <name> <internal_update_interval> 0.1
Hier handelt es sich um ein Attribut, das nur verwendet werden sollte, wenn trotz intensiver Suche immer noch Probleme bei der Ansteuerung der Anlage auftreten. Normalerweise ist es nicht nötig, dieses Attribut zu setzen.
Zwei verschiedene Kommandos können nicht gleichzeitig an die Anlage geschickt werden, weil dann bei einer Antwort nicht klar ist, auf welche Abfrage sich das Ergebnis bezieht. Dies wird intern so umgesetzt, indem VCLIENT darauf achtet, dass zwischen zwei Kommandos eine kleine Zeitspanne liegt. Diese Zeitspanne ist nun ein genaues Vielfaches von $internal_update_interval. $internal_update_interval ist intern auf 0.1 Sekunden eingestellt; dies sollte normalerweise genügen. $internal_update_interval muss größer als Null sein. Ein größerer Wert führt zu einer längeren Abfragedauer für alle Readings, ein kleinerer Wert verkürzt unter Umständen die gesamte Abfragedauer, könnte aber auch zu Instabilitäten führen.
Links
- Regelungsprogramm Vitotronic
- OpenV Wiki: Baupläne, Beschreibungen, Software, Informationen und Projekte rund um Viessmann Heizungssteuerungen
- vcontrold Projekt auf github