Vitotronic 200 (Viessmann Heizungssteuerung): Unterschied zwischen den Versionen

Aus FHEMWiki
(Aufsplittung der Seite "Vitotronic 200 (Viessmann Heizungssteuerung" - Zwischenstand)
 
(37 dazwischenliegende Versionen von 5 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
{{Randnotiz|RNTyp=r|RNText=Die Verwendung des VCONTROL zur ''Ansteuerung'' eines Heizungssystems kann dieses bei unsachgemäßer Anwendung beschädigen. Für unmittelbare oder mittelbare Folgen, die sich aus dem Nachbau des Interfaces oder der Verwendung der hier zur Verfügung gestellten Information ergeben, übernimmt der Autor keine Haftung.}}
{{Todo|Ich bin gerade dabei, die Informationen von dieser Seite zu konsolidieren und modulspezifische Information auf die entsprechenden Modulseiten ([[VCONTROL]], [[VCONTROL300]], [[VCLIENT]]) zu verschieben. Das werde ich in den nächsten Tagen machen, bitte also vorerst keine Änderungen an dieser Seite durch andere Benutzer; bei dringendem Kommentarbedürfnis bitte auf die Diskussionsseite dieser Seite ausweichen). <br>Danke, --[[Benutzer:Ph1959de|Peter]] ([[Benutzer Diskussion:Ph1959de|Diskussion]]) 12:03, 3. Dez. 2019 (CET)}}
Eine angebundene [[Vitotronic 200 (Viessmann Heizungssteuerung)]] wird von FHEM über das Modul 89_VCONTROL.pm sowie das Modul 89_VCONTROL300.pm unterstützt.
{{Randnotiz|RNTyp=r|RNText=Die Verwendung von VCONTROL oder VCLIENT zur direkten ''Ansteuerung'' eines Heizungssystems kann dieses bei unsachgemäßer Anwendung beschädigen. Für unmittelbare oder mittelbare Folgen, die sich aus dem Nachbau des Interfaces oder der Verwendung der hier zur Verfügung gestellten Information ergeben, übernehmen die Autoren keine Haftung.}}
== Vitotronic 200 ==
Das Viessmann Regelungssystem / Regelungsprogramm Vitotronic 200 (witterungsgeführte Einkesselregelung) wird von FHEM über die folgenden Module unterstützt:
* [[VCONTROL]]
* [[VCONTROL300]]
* [[VCLIENT]]
* [[vitoconnect]]
Die VCONTROL-Module senden direkt an die Viessmann-Anlage, Modul VCLIENT (hier das {{Link2Forum|Topic=78101|LinkText=Forenthema}}), das auf dem Daemon vcontrold (siehe [https://github.com/openv/vcontrold diesen Link]) aufbaut und mit dem sich, wenn vcontrold läuft, ebenfalls die Anlage auslesen und steuern lässt. VCONTROL und VCONTROL300 benötigen den Daemon nicht.  


== Einleitung ==
Das Modul '''vitoconnect''' geht über das Viessmann-API, setzt also voraus, dass die Heizungssteuerung mit dem Viessmann Server kommuniziert, zusätzliche Hardware ist dafür nicht erforderlich.
<br clear=all>
 
{{Infobox Modul
Mit Hilfe verschiedener Zusatzgeräte ist es möglich, bei einer Viessmann-Heizung die Temperaturen, Timer, Verbrauch usw. auszulesen und verschiedene Heizungszustände  (Heizen, Warm Wasser, Spar Modus, Party Modus) zu steuern.
|ModPurpose=Anbindung einer Viessmann Heizung
|ModType=d
|ModCmdRef=VCONTROL und VCONTROL300
|ModFTopic=20280
|ModForumArea=Heizungssteuerung/Raumklima
|ModTechName=89_VCONTROL.pm
|ModOwner=adamwit ({{Link2FU|448|Forum}}/[[Benutzer Diskussion:Adam|Wiki]])
}}
Mit Hilfe verschiedener Zusatzgeräte ist es möglich, bei einer Viessmann-Heizung die Temperaturen, Timern, Verbrauch usw. auszulesen und verschiedene Heizungszustände  (Heizen, Warm Wasser, Spar Modus, Party Modus) zu steuern.


== Hardware ==
== Hardware ==
Bevor die Heizung an FHEM angebunden werden kann, muss eine entsprechende Hardware vorliegen. Die Vitotronic weist zwei LEDs sowie ein eingefrästes Viessmann-V auf, das Bestandteil der Steuerung ist. Eine der beiden Diode dient der Steuerung als Empfangsgerät, während die andere Diode Signale sendet. Durch das eingefräste V kann ein entsprechend konstruiertes Gerät passgenau an die Heizung angeschlossen werden. Derzeit sind folgende Geräte bekannt, die mit der Vitotronic kommunzieren können:
Bevor die Heizung an FHEM angebunden werden kann, muss eine entsprechende Hardware vorliegen. Die Vitotronic weist zwei LEDs sowie ein eingefrästes Viessmann-V auf, das Bestandteil der Steuerung ist. Eine der beiden Dioden dient der Steuerung als Empfangsgerät, während die andere Diode Signale sendet. Durch das eingefräste V kann ein entsprechend konstruiertes Gerät passgenau an die Heizung angeschlossen werden. Derzeit sind folgende Geräte bekannt, die mit der Vitotronic kommunzieren können:
* Optolink-Kabel (Originalbauteil, relativ teuer)
* Optolink-Kabel (Viessmann Originalbauteil Nr. 7856059, relativ teuer: Listenpreis ca. 100€, bei einigen Händlern ab ca. 70€ erhältlich)
* selbstgebaute Geräte (zum Teil kommerziell angeboten, Eigenbau ist sehr preiswert - erfordert aber Lötmaterialien)
* selbstgebaute Geräte (zum Teil kommerziell angeboten, Eigenbau ist sehr preiswert - erfordert aber Lötmaterialien)
:Der Eigenbau wird auf der eigens dazu eingerichteten Webseite [https://github.com/openv/openv/wiki/ openv]<ref>[https://github.com/openv/openv/wiki/Adapter-Eigenbau openv-Selbstbau-Anleitung]</ref> genauer beschrieben.
:Man muss sich beim Eigenbau insbesondere mit der Frage befassen, über welche Schnittstelle die Hardware dann mit FHEM kommuniziert. Derzeit sind folgende Schnittstellen realisiert, deren Einbindung nach Aussage verschiedener Forenteilnehmer auch geglückt ist:
:* USB
:* seriell (Anschluss an RPi, dort RxTx)
:* WLAN
:* LAN
:Die serielle Schnittstelle kann mit Hilfe des Programms [http://ser2net.sourceforge.net/ ser2net] auch auf eine LAN-Schnittstelle gemappt werden. Derzeit (Herbst 2017) entwickelt der Forumsteilnehmer {{Link2FU|309|PeMue}} ein allgemeines Modul, das sowohl per WLAN, USB als auch seriell an die Heizung angeschlossen werden kann: {{Link2Forum|Topic=51431|LinkText=Optolink Adapterplatine}}.
Bevor die Software angeschlossen wird, sollte man sich Informationen bezüglich der verwendeten Heizung sowie der entsprechenden Steuerung besorgen. Diese Angaben müssen bei der Definition des Gerätes sowie in der [[Konfiguration]] in FHEM angegeben werden.
== Einbindung in FHEM ==
=== VCONTROL* ===
VCONTROL und VCONTROL300 basieren auf dem gleichen Ansatz und benutzen eine Textdatei (*.cfg) zur Anpassung an die Details der verwendeten Heizungssteuerung. Details zu beiden Modulen finden sich auf der jeweiligen Beschreibungsseite. Da VCONTROL ursprüngliche Modul ist, sollte dessen Beschreibung als allgemeine Basis der Dokumentation angesehen, spezifische Unterschiede dann jeweils in der Beschreibung von VCONTROL300 erwähnt werden.


Der Eigenbau wird auf der eigens dazu errichteten Webseite [https://openv.wikispaces.com/ openv] genauer beschrieben.
=== VCLIENT ===
Man muss sich beim Eigenbau insbesondere mit der Frage befassen, über welche Schnittstelle die Hardware dann mit FHEM kommuniziert. Derzeit sind folgende Schnittstellen realisiert, deren Einbindung nach Aussage verschiedener Forenteilnehmer auch geglückt ist:
Das Modul VCLIENT setzt einen laufenden vcontrold-Daemon voraus, der die Kommunikation mit Viessmann übernimmt (siehe dazu dieses {{Link2Forum|Topic=78101|LinkText=Forenthema}}).  
* USB
* seriell (Anschluss an RPi, dort RxTx)
* WLAN
* LAN
Die serielle Schnittstelle kann mit Hilfe des Programms [http://ser2net.sourceforge.net/ ser2net] auch auf eine LAN-Schnittstelle gemappt werden. Derzeit (Herbst 2017) entwickelt der Forumsteilnehmer PeMue ein allgemeines Modul, das sowohl per WLAN, USB als auch seriell an die Heizung angeschlossen werden kann: {{Link2Forum|Topic=51431|LinkText=Optolink Adapterplatine}}.}}.


Bevor die Software angeschlossen wird, sollte man sich Informationen bezüglich der verwendeten Heizung sowie der entsprechenden Steuerung besorgen. Diese Angaben müssen bei der Definition des Gerätes in FHEM angegeben werden.
Alle weiteren Details sind der [[VCONTROL|Beschreibungsseite]] des Moduls zu entnehmen.


== Software (FHEM) ==
= Noch zu bearbeitender Bereich =
Es existieren momentan (2017) zwei verschiedene Module, die beide eine Einbindung der Heizung in FHEM sicherstellen: 89_VCONTROL.pm sowie 89_VCONTROL300.pm. Das zweite Modul scheint eine schnellere Kommunikation zu ermöglichen und wird anscheinend aktiv weiterentwickelt. Die Definition des Gerätes erfolgt typischerweise wie folgt.
Die Definition des Gerätes erfolgt bei den beiden ersten Modulen typischerweise wie folgt.
{{Randnotiz|RNText='''Weiterentwicklung'''
{{Randnotiz|RNText='''Weiterentwicklung'''
In {{Link2Forum|Topic=51167|LinkText=diesem Forenthread}} wird über Korrekturen und Bereinigungen im Modul berichtet. }}
In {{Link2Forum|Topic=51167|LinkText=diesem Forenthread}} wird über Korrekturen und Bereinigungen im Modul berichtet. }}
  defmod <name> VCONTROL300 <IP-Adresse>:3002 /opt/fhem/FHEM/VScotHO1_300.cfg 300 kw
  defmod <name> VCONTROL300 <IP-Adresse>:3002 /opt/fhem/FHEM/VScotHO1_300.cfg 300 kw
In dem hier vorliegenden Fall wird das Modul 89_VCONTROL300.pm verwendet. Dieses kommuniziert mit einer LAN-Schnittstelle auf Port 3002 mit der Hardware. Im Fall eines USB-Anschluss muss der entsprechende Pfad auf die USB-Schnittstelle angegeben werden. Es wird alle 300 Sekunden abgefragt, das verwendete Protokoll lautet kw (eine andere Option besteht darin, das neuere Protokoll 300 zu verwenden). Die Kommunikation erfolgt über bestimmte Speicher-Adressen, in denen die Angaben zur Heizung auszulesen und abzulegen sind. Im Internet findet man verschiedene Dokumente, die Angaben zu diesen Speicheradressen machen (siehe zum Beispiel) .
In dem hier vorliegenden Fall wird das Modul 89_VCONTROL300.pm verwendet. Dieses kommuniziert mit einer LAN-Schnittstelle auf Port 3002 an der angegebenen IP-Adresse mit der Hardware. Im Fall eines USB-Anschluss muss der entsprechende Pfad auf die USB-Schnittstelle angegeben werden. Es wird alle 300 Sekunden abgefragt, das verwendete Protokoll lautet kw (eine andere Option besteht darin, das neuere Protokoll 300 zu verwenden).  
Diese Speicher-Adressen werden durch das Modul mit Hilfe einer Konfigurationsdatei (oben /opt/fhem/FHEM/VScotHO1_300.cfg) eingelesen.
 
Informationen hierzu findet man ebenfalls im Forum http://openv.wikispaces.com/, in diesem Forum sind die Adressen teilweise als XML-Datei hinterlegt und müssen entsprechend übertragen werden. In der im Forum geposteten Datei Viessmann-Software-Config.zip sind XML Dateien der original Viessmann-Software enthalten. Diese können nützlich sein, um Adressen für den eigenen Heizungstyp zu finden.
== Konfiguration VCONTROL und VCONTROL300 ==
Zur Konfiguration wird die Datei /opt/fhem/FHEM/VScotHO1_300.cfg verwendet. Details zu dieser Datei und ihrer Funktion werden im nächsten Abschnitt erläutert.


* [http://forum.fhem.de/index.php?action=dlattach;topic=20280.0;attach=17498 Viessmann-Software-Config.zip]
Um die Heizung mit FHEM zu verbinden, müssen die Daten zwischen der Heizungssteuerung und dem Perl-Server ausgetauscht werden. Die Werte in der Heizungssteuerung werden an speziellen Speicheradressen (die durch vierstellige Hexadezimalzahlen beschrieben werden) gesichert, im Viessmann-device befinden sich die entsprechenden Werte dagegen in Readings. Beide Werte müssen nun eindeutig einander zugeordnet werden. Diese Zuordnung gelingt durch die im define genannte Konfigurationsdatei *.cfg, die sowohl die Speicheradressen als auch die Readingsnamen enthält. Die Datei ist zeilenweise aufgebaut (je Zeile eine Zuordnung). Dabei wird noch zwischen Lesezugriff und Schreibzugriff unterschieden, da möglicherweise verschiedene Speicheradressen involviert sind.


== Konfiguration ==
Informationen zu den Speicheradressen findet man ebenfalls im Forum https://github.com/openv/openv/issues, in diesem Forum sind die Adressen teilweise als XML-Datei hinterlegt und müssen entsprechend übertragen werden. In der im Forum geposteten Datei [http://forum.fhem.de/index.php?action=dlattach;topic=20280.0;attach=17498 Viessmann-Software-Config.zip] sind XML Dateien der original Viessmann-Software enthalten. Diese können nützlich sein, um Adressen für den eigenen Heizungstyp zu finden.
Die Konfiguration geschieht mit Hilfe einer cfg-Datei, die von FHEM eingelesen wird. Die Einträge in dieser Datei sind von folgendem Format (wir beschränken uns hier auf das Modul VCONTROL300, für das Modul VCONTROL sind die Einträge analog aufgebaut):
 
=== Daten lesen ===
Die Konfiguration geschieht mit Hilfe einer cfg-Datei, die von FHEM eingelesen wird. Die Einträge in dieser Datei sind von folgendem Format (wir beschränken uns hier auf das Modul VCONTROL300, für das Modul VCONTROL sind die Einträge analog aufgebaut - dort ist allerdings ein etwas erweitertes Adressformat zu verwenden):
  POLL, <adresse>, <parse-methode>, <divisor>, <reading>, <kumulationsmethode>
  POLL, <adresse>, <parse-methode>, <divisor>, <reading>, <kumulationsmethode>
Dies ist wie folgt zu verstehen. POLL zeigt an, dass Daten geholt werden. <adresse> ist die interne Viessmann-Adresse, die die zu holende Variable beherbergt. Dies ist typischerweise eine Hexadezimalzahl mit vier Stellen; beispielsweise findet man unter der Adresse 00F8 die Gerätekennung. <divisor> beschreibt, ob die Größe durch eben diesen Divisor dividiert werden soll (Temperaturangaben sind etwa in Zehntelgrad), <reading> nennt den Namen des FHEM-Readings. <kumulationsmethode> kennt die Einträge - (nicht kumulieren) und day (über den Tag hinweg addieren). <parse-methode> hat die folgenden Auswahlmöglichkeiten
Dies ist wie folgt zu verstehen. POLL zeigt an, dass Daten geholt werden. <adresse> ist die interne Viessmann-Adresse, die die zu holende Variable beherbergt. Dies ist typischerweise eine Hexadezimalzahl mit vier Stellen; beispielsweise findet man unter der Adresse 00F8 die Gerätekennung. Zum Teil können diese Adressen aus Dokumentation bezogen werden, ein Teil der Adressen ist auf der Webseite [https://github.com/openv/openv/wiki/Adressen von openv] dokumentiert. Nicht alle Adressen sind dabei korrekt, hier muss viel probiert werden.
* "1ByteS": Größe <leider dem Autor nicht klar, siehe Programmcode Zeile 1815ff.>
 
* "2ByteS": Größe
<divisor> beschreibt, ob die Größe durch eben diesen Divisor dividiert werden soll (Temperaturangaben sind etwa in Zehntelgrad), <reading> nennt den Namen des FHEM-Readings. <kumulationsmethode> kennt die Einträge - (nicht kumulieren) und "day" (über den Tag hinweg addieren). Im letzten Fall werden dann jeweils nach Mitternacht die Werte des letzten Tages ebenfalls als Readings in das Device eingetragen; bei den Readingnamen wird dann jeweils DayStart,Today und LastDay angehangen. Diese Bezeichnungen können mit Readings des Devices angepasst werden.
* "2ByteU": Größe
 
* "2ByteU_1stByte": Größe
<parse-methode> hat die folgenden Auswahlmöglichkeiten
* "2ByteU_2ndByte": Größe  
* "1ByteS": Größe 1 Byte mit Vorzeichen,  
*  "1ByteH": Größe 1 Byte, vermutlich (s.o.) hexadezimalkodiert
* "2ByteS": Größe 2 Byte mit Vorzeichen
*  "2ByteH": Größe 2 Byte, vermutlich (s.o.) hexadezimalkodiert
* "2ByteU": Größe 2 Byte ohne Vorzeichen
*  "2BytePercent": Größe als Prozentzahl
* "2ByteU_1stByte": Größe 2 Byte ohne Vorzeichen, 1.tes Byte (allerdings im Thread nicht angegeben)
* "2ByteU_2ndByte": Größe 2 Byte ohne Vorzeichen, 1.tes Byte
*  "1ByteH": Größe 1 Byte, vermutlich (im Thread nicht angegeben) hexadezimalkodiert
*  "2ByteH": Größe 2 Byte, vermutlich (im Thread nicht angegeben) hexadezimalkodiert
*  "2BytePercent": nicht implementiert
*  "4Byte": Größe 4 Byte
*  "4Byte": Größe 4 Byte
*  "mode": Wert aus einer vordefinierten Liste (Beispiel: on, off)
*  "mode": einer der beiden Werte on, off
*  "date": Größe datumsformatiert (Beispiel: Do,28.09.2017 17:01:12)
*  "date": 8 Byte Datumswert (Beispiel: Do,28.09.2017 17:01:12)
*  "timer": Größe wochentagsformatiert (Beispiel: Mo, Di, Mi...)
*  "timer": 8 Byte Timer Wert
   
   
Alle Größen, die mit timer kodiert sind, müssen mit einem expliziten Get-Befehl geholt werden und werden nicht automatisch gepollt. Ein User berichtet, dass diese Timerzeiten nur geholt werden konnten, nachdem das automatische Ausfüllen ("Mo-Fr automatic") in der Steuerung ausgeschaltet und jedem Tag ein individueller Wert zugewiesen wurde.
Ein Beispiel soll einen Eintrag in der cfg-Datei beschreiben:
POLL, 2306, 1ByteU, 1, Temperatur_Haus  , -
Die Viessmann-Steuerung enthält an der Speicheradresse 0x2306 den Wert für die Solltemperatur des Hauptheizkreises (oft als M1 bezeichnet). Dieser Wert hat die Größe eines unsignierten Bytes (deshalb 1ByteU). Der Wert soll in FHEM im Reading Temperatur_Haus gespeichert werden. Es soll nur der aktuelle Wert gespeichert werden, die Werte werden über den Tag hinweg nicht addiert/kumuliert (deshalb der Strich am Ende).
=== Daten schreiben ===
Will man Daten senden, so ist folgendes Kommando zu verwenden
SET, <adresse>, <adresstyp>, <multiplikator>, <setname>, <nextset oder day>
Dies ist wie folgt zu verstehen. SET zeigt an, dass Daten gesendet werden. <adresse> ist die interne Viessmann-Adresse (oft, aber nicht immer, sind die Adressen der SET-Kommandos read/write; hier muss man in den Dokumentationen nachschauen). Wieder ist dies eine Hexadezimalzahl mit vier Stellen. Adresstyp entspricht der <parse-methode> oben und gibt an, ob es sich um eine 2Byte-, eine 1Byte- oder was auch immer -Adresse handelt. Als <multiplikator> wird oft 1 verwendet; setzt man hier eine Zahl ein, so wird der zu sendende Wert mit eben diesem Multiplikator multipliziert. Beim Kennwort "mode" und "state" für <multiplikator> können auch Zustände gesendet werden (unklar, wie genau). <setname> ist der Name, mit dem in FHEMWEB auf den Wert zugegriffen wird.
Dazu ein Beispiel. Im Reading "Temperatur_Haus" wird die Soll-Temperatur des Hauses gespeichert, die dazugehörige Kodierung sei 2306. Der entsprechende POLL-Eintrag in der *.cfg würde dann lauten
POLL, 2306, 1ByteU, 1, Temperatur_Haus  , -
(sowohl die Adresse als auch die Übergabeform der Daten, hier 1ByteU, muss natürlich korrekt sein).  Nun soll innerhalb von FHEM durch ein Befehl der Form
set <Viessmanndevice> Temperatur_Haus 25 
versucht werden, die Temperatur auf 25 Grad einzustellen. Damit dies möglich ist, muss in der *.cfg folgende Zeile stehen (auch hier gilt: die Adresse muss korrekt sein und es muss möglich sein, in die Steuerung zu schreiben) 
SET, 2306, 1ByteU, 1, Temperatur_Haus, <nextset oder day>
Nextset bedeutet, dass nach diesem SET-Befehl unmittelbar ein weiterer Setbefehl ausgelöst wird (und zwar genau der, der an dieser Stelle zu finden ist). Day wird nur dann verwendet, wenn der Adresstyp "time" war. In diesem  Fall gibt day an, um welchen Wochentag, der einzustellen ist, es sich handelt. Hier sind nur Einträge der Form MO, DI bis SO möglich. Beispielsweise bedeutet
SET,  2028  ,  timer,      1, TIMER_Haus_SA        , SA
dass das Reading TIMER_Haus_SA die Zeiten für die Heizung Samstags enthält, es sich um den Adresstyp timer handelt, die Daten in der Adresse 2028 kodiert sind und die von FHEM gesendeten Daten für Samstag festgeschrieben werden. Der FHEM-Befehl sähe dann so aus
set Heizung TIMER_Haus_SA 08:00,23:00,--,--,--,--,--,--,
Auslesen kann man die Daten dann mit
POLL, 2028, timer,  1    , TIMER_Haus_SA            , -


Einige User haben bereits Ihre Heizungen mit der Hilfe diese Moduls angebunden:
Etwas umständlicher wird es, wenn eine Auswahlmöglichkeit mit vordefinierten Werten angegeben werden soll. Der Betriebszustand einer Vitotronic 100 HO1A beispielsweise kann nur die Werte 0 (nur_Warmwasser), 3 (Normalbetrieb) und 5 (Frostschutz) annehmen. Die entsprechende Adresse sei 3301. Ziel ist eine Dropdown-Liste in FHEM. Dies muss dann wie folgt in der cfg beschrieben werden
* [http://forum.fhem.de/index.php?action=dlattach;topic=20280.0;attach=20811 V200KW1.cfg]
SET,  3301,  mode, Betriebsart_Fussb , - 
* [http://forum.fhem.de/index.php?action=dlattach;topic=20280.0;attach=21727 VPlusHO1.cfg]
SET,  330100, 1ByteU, 1, nur_Warmwasser , -
* [http://forum.fhem.de/index.php?action=dlattach;topic=20280.0;attach=21728 VScotHO1.cfg]
SET,  330103, 1ByteU, 1, Normalbetrieb ,  -
* [http://forum.fhem.de/index.php?action=dlattach;topic=20280.0;attach=22863 V200WO1B.cfg]
SET,  330105, 1ByteU, 1, Frostschutz , -
* [http://forum.fhem.de/index.php?action=dlattach;topic=20280.0;attach=23767 V300KW3_V0002.cfg]
 
= Ende von Noch zu bearbeitender Bereich =


== Links ==
== Links ==
* [https://www.viessmann.de/de/technologie/regelung-mittelkessel-grosskessel.html Regelungsprogramm Vitotronic]
* Forenthema zur {{Link2Forum|Topic=51167|LinkText=Weiterentwicklung}} des Moduls
* Forenthema zur {{Link2Forum|Topic=51167|LinkText=Weiterentwicklung}} des Moduls
* neueste Version: [https://forum.fhem.de/index.php?action=profile;area=showposts;sa=attach;u=16142 hier]
* Forenthema/-umfrage {{Link2Forum|Topic=51431|LinkText=Optolink Adapterplatine}}
* Forenthema/-umfrage {{Link2Forum|Topic=51431|LinkText=Optolink Adapterplatine}}
* [http://www.haustechnikdialog.de/SHKwissen/341/Heizkurve Heizkennlinie erläutert]
* [http://www.haustechnikdialog.de/SHKwissen/341/Heizkurve Heizkennlinie erläutert]
* [https://www.haustechnikdialog.de/Forum/t/115412/FAQ-Vitotronic-200 wichtige Infos zu Viessmann]
== Quellen ==
<references />


[[Kategorie:Heizungssteuerung]]
[[Kategorie:Heizungssteuerung]]
[[Kategorie:Other Components]]
[[Kategorie:Other Components]]

Aktuelle Version vom 15. März 2021, 19:26 Uhr

Todo: Ich bin gerade dabei, die Informationen von dieser Seite zu konsolidieren und modulspezifische Information auf die entsprechenden Modulseiten (VCONTROL, VCONTROL300, VCLIENT) zu verschieben. Das werde ich in den nächsten Tagen machen, bitte also vorerst keine Änderungen an dieser Seite durch andere Benutzer; bei dringendem Kommentarbedürfnis bitte auf die Diskussionsseite dieser Seite ausweichen).
Danke, --Peter (Diskussion) 12:03, 3. Dez. 2019 (CET)
X mark.svgDie Verwendung von VCONTROL oder VCLIENT zur direkten Ansteuerung eines Heizungssystems kann dieses bei unsachgemäßer Anwendung beschädigen. Für unmittelbare oder mittelbare Folgen, die sich aus dem Nachbau des Interfaces oder der Verwendung der hier zur Verfügung gestellten Information ergeben, übernehmen die Autoren keine Haftung.

Vitotronic 200

Das Viessmann Regelungssystem / Regelungsprogramm Vitotronic 200 (witterungsgeführte Einkesselregelung) wird von FHEM über die folgenden Module unterstützt:

Die VCONTROL-Module senden direkt an die Viessmann-Anlage, Modul VCLIENT (hier das Forenthema), das auf dem Daemon vcontrold (siehe diesen Link) aufbaut und mit dem sich, wenn vcontrold läuft, ebenfalls die Anlage auslesen und steuern lässt. VCONTROL und VCONTROL300 benötigen den Daemon nicht.

Das Modul vitoconnect geht über das Viessmann-API, setzt also voraus, dass die Heizungssteuerung mit dem Viessmann Server kommuniziert, zusätzliche Hardware ist dafür nicht erforderlich.

Mit Hilfe verschiedener Zusatzgeräte ist es möglich, bei einer Viessmann-Heizung die Temperaturen, Timer, Verbrauch usw. auszulesen und verschiedene Heizungszustände (Heizen, Warm Wasser, Spar Modus, Party Modus) zu steuern.

Hardware

Bevor die Heizung an FHEM angebunden werden kann, muss eine entsprechende Hardware vorliegen. Die Vitotronic weist zwei LEDs sowie ein eingefrästes Viessmann-V auf, das Bestandteil der Steuerung ist. Eine der beiden Dioden dient der Steuerung als Empfangsgerät, während die andere Diode Signale sendet. Durch das eingefräste V kann ein entsprechend konstruiertes Gerät passgenau an die Heizung angeschlossen werden. Derzeit sind folgende Geräte bekannt, die mit der Vitotronic kommunzieren können:

  • Optolink-Kabel (Viessmann Originalbauteil Nr. 7856059, relativ teuer: Listenpreis ca. 100€, bei einigen Händlern ab ca. 70€ erhältlich)
  • selbstgebaute Geräte (zum Teil kommerziell angeboten, Eigenbau ist sehr preiswert - erfordert aber Lötmaterialien)
Der Eigenbau wird auf der eigens dazu eingerichteten Webseite openv[1] genauer beschrieben.
Man muss sich beim Eigenbau insbesondere mit der Frage befassen, über welche Schnittstelle die Hardware dann mit FHEM kommuniziert. Derzeit sind folgende Schnittstellen realisiert, deren Einbindung nach Aussage verschiedener Forenteilnehmer auch geglückt ist:
  • USB
  • seriell (Anschluss an RPi, dort RxTx)
  • WLAN
  • LAN
Die serielle Schnittstelle kann mit Hilfe des Programms ser2net auch auf eine LAN-Schnittstelle gemappt werden. Derzeit (Herbst 2017) entwickelt der Forumsteilnehmer PeMue ein allgemeines Modul, das sowohl per WLAN, USB als auch seriell an die Heizung angeschlossen werden kann: Optolink Adapterplatine.

Bevor die Software angeschlossen wird, sollte man sich Informationen bezüglich der verwendeten Heizung sowie der entsprechenden Steuerung besorgen. Diese Angaben müssen bei der Definition des Gerätes sowie in der Konfiguration in FHEM angegeben werden.

Einbindung in FHEM

VCONTROL*

VCONTROL und VCONTROL300 basieren auf dem gleichen Ansatz und benutzen eine Textdatei (*.cfg) zur Anpassung an die Details der verwendeten Heizungssteuerung. Details zu beiden Modulen finden sich auf der jeweiligen Beschreibungsseite. Da VCONTROL ursprüngliche Modul ist, sollte dessen Beschreibung als allgemeine Basis der Dokumentation angesehen, spezifische Unterschiede dann jeweils in der Beschreibung von VCONTROL300 erwähnt werden.

VCLIENT

Das Modul VCLIENT setzt einen laufenden vcontrold-Daemon voraus, der die Kommunikation mit Viessmann übernimmt (siehe dazu dieses Forenthema).

Alle weiteren Details sind der Beschreibungsseite des Moduls zu entnehmen.

Noch zu bearbeitender Bereich

Die Definition des Gerätes erfolgt bei den beiden ersten Modulen typischerweise wie folgt.

Info green.pngWeiterentwicklung In diesem Forenthread wird über Korrekturen und Bereinigungen im Modul berichtet.
defmod <name> VCONTROL300 <IP-Adresse>:3002 /opt/fhem/FHEM/VScotHO1_300.cfg 300 kw

In dem hier vorliegenden Fall wird das Modul 89_VCONTROL300.pm verwendet. Dieses kommuniziert mit einer LAN-Schnittstelle auf Port 3002 an der angegebenen IP-Adresse mit der Hardware. Im Fall eines USB-Anschluss muss der entsprechende Pfad auf die USB-Schnittstelle angegeben werden. Es wird alle 300 Sekunden abgefragt, das verwendete Protokoll lautet kw (eine andere Option besteht darin, das neuere Protokoll 300 zu verwenden).

Konfiguration VCONTROL und VCONTROL300

Zur Konfiguration wird die Datei /opt/fhem/FHEM/VScotHO1_300.cfg verwendet. Details zu dieser Datei und ihrer Funktion werden im nächsten Abschnitt erläutert.

Um die Heizung mit FHEM zu verbinden, müssen die Daten zwischen der Heizungssteuerung und dem Perl-Server ausgetauscht werden. Die Werte in der Heizungssteuerung werden an speziellen Speicheradressen (die durch vierstellige Hexadezimalzahlen beschrieben werden) gesichert, im Viessmann-device befinden sich die entsprechenden Werte dagegen in Readings. Beide Werte müssen nun eindeutig einander zugeordnet werden. Diese Zuordnung gelingt durch die im define genannte Konfigurationsdatei *.cfg, die sowohl die Speicheradressen als auch die Readingsnamen enthält. Die Datei ist zeilenweise aufgebaut (je Zeile eine Zuordnung). Dabei wird noch zwischen Lesezugriff und Schreibzugriff unterschieden, da möglicherweise verschiedene Speicheradressen involviert sind.

Informationen zu den Speicheradressen findet man ebenfalls im Forum https://github.com/openv/openv/issues, in diesem Forum sind die Adressen teilweise als XML-Datei hinterlegt und müssen entsprechend übertragen werden. In der im Forum geposteten Datei Viessmann-Software-Config.zip sind XML Dateien der original Viessmann-Software enthalten. Diese können nützlich sein, um Adressen für den eigenen Heizungstyp zu finden.

Daten lesen

Die Konfiguration geschieht mit Hilfe einer cfg-Datei, die von FHEM eingelesen wird. Die Einträge in dieser Datei sind von folgendem Format (wir beschränken uns hier auf das Modul VCONTROL300, für das Modul VCONTROL sind die Einträge analog aufgebaut - dort ist allerdings ein etwas erweitertes Adressformat zu verwenden):

POLL, <adresse>, <parse-methode>, <divisor>, <reading>, <kumulationsmethode>

Dies ist wie folgt zu verstehen. POLL zeigt an, dass Daten geholt werden. <adresse> ist die interne Viessmann-Adresse, die die zu holende Variable beherbergt. Dies ist typischerweise eine Hexadezimalzahl mit vier Stellen; beispielsweise findet man unter der Adresse 00F8 die Gerätekennung. Zum Teil können diese Adressen aus Dokumentation bezogen werden, ein Teil der Adressen ist auf der Webseite von openv dokumentiert. Nicht alle Adressen sind dabei korrekt, hier muss viel probiert werden.

<divisor> beschreibt, ob die Größe durch eben diesen Divisor dividiert werden soll (Temperaturangaben sind etwa in Zehntelgrad), <reading> nennt den Namen des FHEM-Readings. <kumulationsmethode> kennt die Einträge - (nicht kumulieren) und "day" (über den Tag hinweg addieren). Im letzten Fall werden dann jeweils nach Mitternacht die Werte des letzten Tages ebenfalls als Readings in das Device eingetragen; bei den Readingnamen wird dann jeweils DayStart,Today und LastDay angehangen. Diese Bezeichnungen können mit Readings des Devices angepasst werden.

<parse-methode> hat die folgenden Auswahlmöglichkeiten

  • "1ByteS": Größe 1 Byte mit Vorzeichen,
  • "2ByteS": Größe 2 Byte mit Vorzeichen
  • "2ByteU": Größe 2 Byte ohne Vorzeichen
  • "2ByteU_1stByte": Größe 2 Byte ohne Vorzeichen, 1.tes Byte (allerdings im Thread nicht angegeben)
  • "2ByteU_2ndByte": Größe 2 Byte ohne Vorzeichen, 1.tes Byte
  • "1ByteH": Größe 1 Byte, vermutlich (im Thread nicht angegeben) hexadezimalkodiert
  • "2ByteH": Größe 2 Byte, vermutlich (im Thread nicht angegeben) hexadezimalkodiert
  • "2BytePercent": nicht implementiert
  • "4Byte": Größe 4 Byte
  • "mode": einer der beiden Werte on, off
  • "date": 8 Byte Datumswert (Beispiel: Do,28.09.2017 17:01:12)
  • "timer": 8 Byte Timer Wert

Alle Größen, die mit timer kodiert sind, müssen mit einem expliziten Get-Befehl geholt werden und werden nicht automatisch gepollt. Ein User berichtet, dass diese Timerzeiten nur geholt werden konnten, nachdem das automatische Ausfüllen ("Mo-Fr automatic") in der Steuerung ausgeschaltet und jedem Tag ein individueller Wert zugewiesen wurde.

Ein Beispiel soll einen Eintrag in der cfg-Datei beschreiben:

POLL, 2306, 1ByteU, 1, Temperatur_Haus  , -

Die Viessmann-Steuerung enthält an der Speicheradresse 0x2306 den Wert für die Solltemperatur des Hauptheizkreises (oft als M1 bezeichnet). Dieser Wert hat die Größe eines unsignierten Bytes (deshalb 1ByteU). Der Wert soll in FHEM im Reading Temperatur_Haus gespeichert werden. Es soll nur der aktuelle Wert gespeichert werden, die Werte werden über den Tag hinweg nicht addiert/kumuliert (deshalb der Strich am Ende).

Daten schreiben

Will man Daten senden, so ist folgendes Kommando zu verwenden

SET, <adresse>, <adresstyp>, <multiplikator>, <setname>, <nextset oder day>

Dies ist wie folgt zu verstehen. SET zeigt an, dass Daten gesendet werden. <adresse> ist die interne Viessmann-Adresse (oft, aber nicht immer, sind die Adressen der SET-Kommandos read/write; hier muss man in den Dokumentationen nachschauen). Wieder ist dies eine Hexadezimalzahl mit vier Stellen. Adresstyp entspricht der <parse-methode> oben und gibt an, ob es sich um eine 2Byte-, eine 1Byte- oder was auch immer -Adresse handelt. Als <multiplikator> wird oft 1 verwendet; setzt man hier eine Zahl ein, so wird der zu sendende Wert mit eben diesem Multiplikator multipliziert. Beim Kennwort "mode" und "state" für <multiplikator> können auch Zustände gesendet werden (unklar, wie genau). <setname> ist der Name, mit dem in FHEMWEB auf den Wert zugegriffen wird.

Dazu ein Beispiel. Im Reading "Temperatur_Haus" wird die Soll-Temperatur des Hauses gespeichert, die dazugehörige Kodierung sei 2306. Der entsprechende POLL-Eintrag in der *.cfg würde dann lauten

POLL, 2306, 1ByteU, 1, Temperatur_Haus  , -

(sowohl die Adresse als auch die Übergabeform der Daten, hier 1ByteU, muss natürlich korrekt sein). Nun soll innerhalb von FHEM durch ein Befehl der Form

set <Viessmanndevice> Temperatur_Haus 25   

versucht werden, die Temperatur auf 25 Grad einzustellen. Damit dies möglich ist, muss in der *.cfg folgende Zeile stehen (auch hier gilt: die Adresse muss korrekt sein und es muss möglich sein, in die Steuerung zu schreiben)

SET, 2306, 1ByteU, 1, Temperatur_Haus, <nextset oder day>

Nextset bedeutet, dass nach diesem SET-Befehl unmittelbar ein weiterer Setbefehl ausgelöst wird (und zwar genau der, der an dieser Stelle zu finden ist). Day wird nur dann verwendet, wenn der Adresstyp "time" war. In diesem Fall gibt day an, um welchen Wochentag, der einzustellen ist, es sich handelt. Hier sind nur Einträge der Form MO, DI bis SO möglich. Beispielsweise bedeutet

SET,  2028  ,  timer,      1, TIMER_Haus_SA         , SA

dass das Reading TIMER_Haus_SA die Zeiten für die Heizung Samstags enthält, es sich um den Adresstyp timer handelt, die Daten in der Adresse 2028 kodiert sind und die von FHEM gesendeten Daten für Samstag festgeschrieben werden. Der FHEM-Befehl sähe dann so aus

set Heizung TIMER_Haus_SA 08:00,23:00,--,--,--,--,--,--,

Auslesen kann man die Daten dann mit

POLL, 2028, timer,  1     , TIMER_Haus_SA            , -

Etwas umständlicher wird es, wenn eine Auswahlmöglichkeit mit vordefinierten Werten angegeben werden soll. Der Betriebszustand einer Vitotronic 100 HO1A beispielsweise kann nur die Werte 0 (nur_Warmwasser), 3 (Normalbetrieb) und 5 (Frostschutz) annehmen. Die entsprechende Adresse sei 3301. Ziel ist eine Dropdown-Liste in FHEM. Dies muss dann wie folgt in der cfg beschrieben werden

SET,  3301,   mode, Betriebsart_Fussb , -  
SET,  330100, 1ByteU, 1, nur_Warmwasser , -
SET,  330103, 1ByteU, 1, Normalbetrieb ,  -
SET,  330105, 1ByteU, 1, Frostschutz , - 

Ende von Noch zu bearbeitender Bereich

Links

Quellen