UPDATE 09.12.2014
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
ACHTUNG ACHTUNG ACHTUNG ACHTUNG ACHTUNG ACHTUNG ACHTUNG ACHTUNG ACHTUNG ACHTUNG ACHTUNG
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Das Modul ist nun im allgemeinen FHEM Update Prozess
Das Modul musste leider umbenannt werden in
89_VCONTROL, da 99_* nicht commited werden konnte.
Wer das Modul also per Update einspielt muss das alte Modul aus dem FHEM Verzeichnis löschen!!!Ich habe das Modul somit hier aus dem ersten Post entfernt!!!
Es gibt nun eine Wiki Seite:
http://www.fhemwiki.de/wiki/Vitotronic_200_(Viessmann_Heizungssteuerung)!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
ACHTUNG ACHTUNG ACHTUNG ACHTUNG ACHTUNG ACHTUNG ACHTUNG ACHTUNG ACHTUNG ACHTUNG ACHTUNG
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
UPDATE ENDE
Hier möchte ich mein neues Modul zur Anbindung meiner Viessmann Heizung (Vitotronic 200 KW1) einmal vorstellen.
Hintergrund:
Ich habe bereits aus anderen Threads hier im Forum gelesen, dass es bereits mehrere Fhem User gibt,
die versuchen Ihre Viessmann Heizung anzubinden.
Die meisten nutzen wohl wie ich einen Optolink-Adapter wie er hier
http://openv.wikispaces.com/ beschrieben ist.
Ebenfalls nutzen die meisten die Tools vcontrol und vclient von dieser Seite.
Diese können zwar von Fhem aus aufgerufen werden, müssen dann aber über Outputdateien mühsam ausgewertet werden.
Da ich Fhem auf Windows betreibe musste ich auch noch cygwin nutzen, um diese Tools zu benutzen.
Das Modul:
Das neue Modul pollt nun direkt auf der Seriellen Schnittstelle über USB die Heizung
und schreibt die Werte in die Readings des Devices.
Als Adressen für die Schnittstelle/Protokoll wird die Belegung von
http://openv.wikispaces.com/aus der Spalte V200KW2 genutzt.
Bisher nutze ich das Tool wie bereits geschrieben auf Windows,
Ich hoffe, dass es auf Linux ohne weiteres lauffähig ist.
Update 09.03.2014:
Das Modul ist bereits mehrfach auf Linux lauffähig und auch eine Anbindung des LAN Moduls ist mittlerweile möglich.
Deshalb hier eine Aktualisierung, damit neue User auch das aktuelle Modul schnell finden.
Viele User haben bereits geholfen das Modul runder zu gestalten ( DANKE

)
So wird das Modul genutzt: ( Stand 24.05.14 V2.7)
(mein Konfigfile ebenfalls als Beispiel angehängt!):
Define:
define <name> VCONTROL <serial-device/LAN-Device:port> <configfile> [<intervall>]
Beispiele:
#serielle Schnittstelle über com4
#alle 3 Minuten wird gepollt
#configfile heisst 99_VCONTROL.cfg und liegt im fhem root Verzeichnis
define Heizung VCONTROL com4 99_VCONTROL.cfg 180
#auf Linux muss das dann wohl so aussehen
define Heizung VCONTROL /dev/ttyUSB3 99_VCONTROL.cfg 180
Attribute:
closedev 0,1 : Wenn das Attribut closedev mit 1 gesetzt ist,
wird die Verbindung nach jedem Poll Intervall kurz geschlossen.
Details:
<serial-device/LAN-Device:port> USB Port (z.B. com4, /dev/ttyUSB3) oder aber TCPIP:portnummer
<intervall> Anzahl Sekunden wie oft die Heizung ausgelesen werden soll
(default 180)
<configfile> Pfad wo die Konfigurationsdatei für das Modul zu finden ist
Im configfile hat man nun folgende Möglichkeiten:
- Zeilen die mit # beginnen sind Kommentar!
- Polling Commandos (POLL) zum Lesen von Werten können konfiguriert werden.
- Set Commandos (SET) zum setzen von Werten können konfiguriert werden.
Polling Commandos haben den folgenden Aufbau:POLL, ADDRESSE, PARSEMETHODE, DIVISOR, READING-NAME, KUMULATION
Beispiel:
POLL, 01F7080402, 2ByteS, 10 , Temp-WarmWasser-Ist , -
POLL, 01F7088A02, 2ByteU, 1 , BrennerStarts , day
Bisher mögliche Parsemethoden:
1ByteU : Empfangener Wert in 1 Byte ohne Vorzeichen (wenn Spalte Divisor state ist -> nur 0 / 1 also off / on)
1ByteS : Empfangener Wert in 1 Byte mit Vorzeichen (wenn Spalte Divisor state ist -> nur 0 / 1 also off / on)
2ByteS : Empfangener Wert in 2 Byte mit Vorzeichen
2ByteU : Empfangener Wert in 2 Byte ohne Vorzeichen
2BytePercent : Empfangener Wert in 2 Byte als Prozent Wert
4Byte : Empfangener Wert in 4 Byte
mode : Empfangener Wert ist der Betriebsstatus
timer : Empfangener Wert ist ein 8 Byte Timer Werte
date : Empfangener Wert ist ein 8 Byte Zeitstempel
Bei den Polling Commandos mit dem Wert day bei der Spalte KUMULATION werden Tageswerte Kumuliert.
Es werden dann jeweils nach 00:00 Uhr die Werte des letzten Tages ebenfalls als Readings im Device eingetragen,
so dass man die Werte pro Tag auch plotten oder auswerten kann.
Beim Readingnamen wird dann jeweils: DayStart,Today und LastDay angehangen!
POLL Commandos die die Parsemethode
timer enthalten werden nicht ständig gelesen,
sondern müssen mit einem GET Commando geholt werden
(bzw. in die Readings geschrieben werden):
GET <devicename> TIMER
Set Commandos haben den folgenden Aufbau:SET,SETCMD, ADRESSE, CONV, NEXT_CMD or DAY for timer
Beispiel:
SET, WW , 01F423010100, state , -
SET, S-ON , 01F423020101, state_spar , P-OFF
SET, WWTEMP , 01F4630001 , 1ByteU , -
SET, TIMER_2_MO, 01F4200008 , timer , MO
Die SETCMD sind die Commandos die man in FHEM zum setzen angeben muss
z.B. SET <devicename> WW zum setzen auf den Status nur Warm Wasser Aufbereitung
Bei den SETCMD bei denen man einen Wert mit angeben muss,
wie z.B. die Warm Wasser Temperatur muss man eine Conv Methode angeben,
wie die Heizung diesen Wert erwartet.
Bisher mögliche Convmethoden:
1ByteU : Zu sendender Wert in 1 Byte ohne Vorzeichen (wenn Spalte Divisor state ist -> nur 0 / 1 also off / on)
1ByteS : Zu sendender Wert in 1 Byte mit Vorzeichen (wenn Spalte Divisor state ist -> nur 0 / 1 also off / on)
2ByteS : Zu sendender Wert in 2 Byte mit Vorzeichen
2ByteU : Zu sendender Wert in 2 Byte ohne Vorzeichen
timer : Zu sendender Wert ist ein 8 Byte Timer Werte
date : Zu sendender Wert ist ein 8 Byte Zeitstempel
Beispiele:
1)
SET <devicename> TIMER_2_MO <times>
<times> 8 Uhrzeiten mit Komma getrennt. (AN1,AUS1,AN2,AUS2,AN3,AUS3,AN4,AUS4)
Keine Uhrzeit muss als -- angegeben werden.
Minuten der Uhrzeiten dürfen nur 00,10,20,30,40 oder 50 sein
2)
SET <devicename> SYSTIME 21.03.2014_21:35:00
(Bei date muss das Format DD.MM.YYYY_HH:MM:SS eingehalten werden)
3)
SET <devicename> WWTEMP 55
###Update 18.03.2014
Es fehlte noch eine Beschreibung für User, die bisher vcontrol als Linux Tool von
http://openv.wikispaces.com/ nicht benutzt haben,
Ihr Poll-Werte jedoch selber in der Konfi-Datei konfigurieren wollen:
Auf der Seite
http://openv.wikispaces.com/Adressen gibt es für die verschiedenen Heizungstypen diverse Adressen.
Diese sind aus meiner Sicht ohne Gewähr, aber was anderes gibt es nicht. Bei mir funktionieren auch nicht alle dokumentierten.
Wie bekomme ich die nun in das Modul, bzw. in die Konfig Datei ?
Ein Beispiel:
In der Tabelle steht:
Name | Addr | Values Factor | Bytes |
WW Oben ( Brauchwasser) | 0x010d | /10 | 2 |
Dann muss man das als Poll-Wert wie folgt umsetzen:
1. Die Zeile muss mit POLL beginnen
2. Die folgende Adresse muss mit 01F7 beginnen
3. danach folgt die Addr aus der Tabelle ohne den Präfix 0x, also 01F7010D
4. danach muss die Anzahl der Bytes noch an die Adresse angehängt werden, d.h. 02 für 2 , macht dann zusammen 01F7010D02
5. Es muss die entsprechende Parse Methode genutzt werden, falls vorhanden (siehe oben)
(Wenn nichts dabei ist muss man es erst implementieren

)
6. Danach setzt man aus der Spalte Values/Factor den Divisor, d.h. \10 ,macht dann 10
Sind nur Werte 0 und 1 erlaubt, wie z.B. beim Brennerstatus, kann man als Divisor state angeben.
Dann wird im Reading bei 0 ein off und bei 1 ein on geschrieben!
7. Man sucht sich einen passenden/gewünschten Readingnamen aus z.b. WW-Oben
8. setzt mann dann den letzten Wert auf day werden Tageswerte Kumuliert.
Es wird dann jeweils nach 00:00 Uhr die Werte des letzten Tages ebenfalls als Readings im Device eingetragen,
so dass man die Werte pro Tag auch plotten oder auswerten kann.
Beim Readingnamen wird dann jeweils: DayStart,Today und LastDay angehangen!
Wenn nicht gewünscht dann - eintragen
Das macht dann also zusammen:
POLL, 01F7010D02, 2ByteS, 10, WW-Oben, -
Wahrscheinlich sind nicht für alle Typen Parsemethoden implementiert, da meine Heizung diese nicht liefert.
Wenn Ihr da noch was benötigt und es selber rausgefunden habt, kann ich das in das Modul übernehmen!!
###Update Ende
###Update 24.03.2014
- In der Konfigdatei kann man nun auch selber SET Befehle konfigurieren
- Die Zeile muss mit SET beginnen.
- Danach kommt der Name den man bei einem set Befehl nutzen möchte.
- Danach kommt die Adresse der Heizung, die mit 01F4 beginnen muss,
gefolgt von den 2 Byte der eigentlichen Adresse
und 1 Byte Angabe wieviel Byte der zu setzende Wert hat
- Danach kommt die Angabe einer der Conv Methoden 1ByteConv,2ByteConv,DateConv
je nach Typ -> 1Byte oder 2Byte oder date
- Die letzte Spalte wird nicht genutzt und muss mit - angeben werden
So zwei Beispiele:
1. Setzen der Warm Wasser Soll Temperatur
Konfigdatei:
SET, WWTEMP , 01F4630001 , 1Byte , -
Aufruf in Fhemweb:
set <devicename> WWTEMP 55
2. Setzen der Systemzeit
Konfigdatei:
SET, SYSTIME , 01F4088E08 , date , -
Aufruf in Fhemweb:
set <devicename> SYSTIME 21.03.2014_21:35:00
(Bei date muss das Format DD.MM.YYYY_HH:MM:SS eingehalten werden)
- Der Monat in der Update-Time war bisher falsch, habe ich korrigiert
###Ende Update
###Update 24.07.2014
In der angehängten 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.
So wie ich die Dateien verstehe müsst Ihr wie folgt vorgehen:
In der Datei ecnEventTypeGroup.xml in der Spalte DataPointTypeID Euren Anlagen Typ finden. Also z.B. VPlusHO1
Dann mit teilen aus Spalte ID oder EventTypeID in der zweiten Datei ecnEventType.xml suchen.
1:1 findet man die Sachen leider nicht
###Ende Update
### Update 01.11.2014
Habe nun noch 3 Beipsiel CFG Dateien für verschiedene Heizungstypen angehängt.
Diese sind natürlich nicht vollständig, sondern nur mit allen bisher erarbeiteten Adressen gefüllt.
Für den Anfang spart es aber sicherlich dem einen oder anderen viel Zeit!
### Ende Update
Gruß
Adam