VCLIENT

Aus FHEMWiki
Zur Navigation springen Zur Suche springen
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