Viessmann Heizung steuern

Homematic-, TCL- und Shell-Script, Toolchain, C, etc.

Moderator: Co-Administratoren

painless
Beiträge: 37
Registriert: 18.06.2011, 14:59

Viessmann Heizung steuern

Beitrag von painless » 14.06.2014, 19:56

Hallo Zusammen,

ich steuere meine Viessmann Therme Vitotronic über das original USB Optolink Interface und die im Forum http://openv.wikispaces.com/ enthaltenen Informationen.

Jetzt möchte ich die Steuerung auf die Homematic verlegen um die wichtigsten Funktionen Party/Urlaub/Warmwasser/Normal direkt darüber zu regeln.

Meine Frage: Hat dies schon jemand realisiert ?

Im Optolink USB Adapter befindet sich ein FTDI Chip FT232RL und die Signale werden über einen virtuellen COM-Port der Windows-Software verfügbar gemacht.

Wie könnte man dies unter der Homematic ansteuern ? Heizung und Homematic sind zu weit von einander entfernt, erste Versuche mit USB-Server und Zugriff per Telnet auf das Optolink Interface sind gescheitert.

Im Voraus vielen Dank für Eure Hilfe

painless

Regensburger
Beiträge: 18
Registriert: 03.03.2013, 17:28

Re: Viessmann Heizung steuern

Beitrag von Regensburger » 15.06.2014, 11:45

Hallo painless,

ich plane z.Z. das gleiche. Habe mir auch schon den original USB Optolink Adapter besorgt und kann via Windows Notebook die Viessmann Heizung auslesen.
Ziel ist es aber den Optolink Adapter an HM anzubinden.
Architektur plane ich wie folgt:
Hardware: Optolink Adapter <--> USB <--> RPi <--> IP <--> CCUx.
Software:
- Installiere vcontrold auf RPI wie hier beschrieben http://openv.wikispaces.com/vcontrold+mit+Raspberry+Pi
- Auswerten von vcontrold mit bash Script auf RPi (muss noch erstellt werden) und via Port 8181 in HM SysVar schreiben.
- oder noch eleganter vcontrold via ccu.io Skript/Adapter (existiert m.W. noch nicht) auf RPi auswerten.

Das ganze ist bei mir für die kalte Jahreszeit geplant. Jetzt kommt erstmal die Gartenbewässerung 'dran.

Gruß Regensburger

Gesendet von meinem SM-P605 mit Tapatalk

tomazmla
Beiträge: 15
Registriert: 26.04.2010, 18:56

Re: Viessmann Heizung steuern

Beitrag von tomazmla » 15.06.2014, 21:54

Hello

I'm using USB Optolink connected to RPI to control my Viessmann heating. On the RPI I use PHP web site to control Optolink using shell commands like this:
<?php $output = exec('/home/vcontrold/vclient-arm -h 127.0.0.1:3002 -f ./vc-off.txt -t ./off.tmpl.htm -x ./off.htm'); ?>

Regards,
Tomaz

painless
Beiträge: 37
Registriert: 18.06.2011, 14:59

Re: Viessmann Heizung steuern

Beitrag von painless » 20.06.2014, 09:04

Dear Both

thanks for your reply. I followed your advices and rpi/vcontrol is running well.
For the ccu.io i must learned how it works and how to connect to homematic and vcontrol.
I will come back later on.



regards
painlesss

painless
Beiträge: 37
Registriert: 18.06.2011, 14:59

Viessmann Heizung steuern

Beitrag von painless » 01.10.2014, 21:51

Dear Tomaz,

i've restarted this project: So far i'm nearly finished. There is only one issue: vclient seems not to follow same rules as vcontrold on rpi.
For example: setBetriebM1 ABSCHALT works fine on vcontrold but not over vclient.

Can you give me an example for vc-off.txt as mentioned above ? I assume the content of this txt-file will stop the heating.

thanks in advance

painless

Regensburger
Beiträge: 18
Registriert: 03.03.2013, 17:28

Re: Viessmann Heizung steuern

Beitrag von Regensburger » 05.10.2014, 11:38

Hello painless,

What happens if you use

Code: Alles auswählen

 vclient -h 127.0.0.1:3002 -c 'setBetriebM1 ABSCHALT' 
Best regards,
Regensburger

painless
Beiträge: 37
Registriert: 18.06.2011, 14:59

Re: Viessmann Heizung steuern

Beitrag von painless » 13.10.2014, 05:02

Hallo Regensburger,

mittlerweile funktioniert alles. Verbesserungen in Form von Fehlerauswertung der stdout Rueckmeldung muss ich noch einpflegen. Es kommt immer mal vor, dass vclient sich bei einzelnen Befehlen 'verschluckt'.
Aber im grossen und ganzen bin ich zufrieden. Wenn Interesse besteht, kann ich dir weitere Info's geben.

VG

painless

Regensburger
Beiträge: 18
Registriert: 03.03.2013, 17:28

Re: Viessmann Heizung steuern

Beitrag von Regensburger » 14.10.2014, 22:15

Hallo painless,

ja, ich würde mich über weitere Informationen sehr freuen. vcontrold und vclient funktionieren jetzt bei mir. Zur Zeit passe ich die vito.xml an meine Heizung an.

VG
Regensburger

painless
Beiträge: 37
Registriert: 18.06.2011, 14:59

Re: Viessmann Heizung steuern

Beitrag von painless » 15.10.2014, 20:40

Hallo regensburger,

ich beschreibe das mal in Kurzform. Denke Du hast genug Wissen, um die Lücken zu schließen:

Hab eine VitoControl mit KW Protokoll. Kennung 2098

1. In der Homematic gibt es eine Systemvariable 'Heizung' mit den Zuständen 'Normal','Warmwasser','Party,'Urlaub'. Steuerung über PocketControl HM

2. Bei Änderung von 'Heizung' wird bidcos-wired 50- bei mir die id 4467- gedrückt.

3. Das ccu.io script sieht so aus:

Code: Alles auswählen

subscribe({id:4467, change:'ne'}, function (obj) {
  // var Heizmodus = getState(4467);

  if (obj.newState.value == 0) {
    // execCmd('/home/pi/openv/vcontrold-code/vcontrold/vclient -h 127.0.0.1:3002 -f /opt/ccu.io/scripts/vc-normal.txt -t /opt/ccu.io/scripts/off.tmpl.htm -x /opt/ccu.io/scripts/off.htm');
    execCmd('/home/pi/openv/vcontrold-code/vcontrold/vclient -h 127.0.0.1:3002 -f /opt/ccu.io/scripts/vc-normal.txt',function (err,stdout,stderr) {
      if (!err) { 
        log('Normalbetrieb M1/M2 ='+stdout);
      } 
      else {
        log ('error in Normalbetrieb ='+err);
      }
    });
    log('Heizungsmodus Normal');
  } 

  if (obj.newState.value == 1) {
     execCmd('/home/pi/openv/vcontrold-code/vcontrold/vclient -h 127.0.0.1:3002 -f /opt/ccu.io/scripts/vc-warmwasser.txt',function (err,stdout,stderr) {
      if (!err) { 
        log('Warmwasser M1/M2 ='+stdout);
      } 
      else {
        log ('error in Warmwasser ='+err);
      }
    });
    log('Heizungmodus Warmwasser');
  } 

  if (obj.newState.value == 2) {
    execCmd('/home/pi/openv/vcontrold-code/vcontrold/vclient -h 127.0.0.1:3002 -f /opt/ccu.io/scripts/vc-party.txt',function (err,stdout,stderr) {
     if (!err) { 
        log('Partybetrieb M1/M2 ='+stdout);
      } 
      else {
        log ('error in Partybetrieb ='+err);
      }
    });
    log('Heizungmodus Party');
  } 

  if (obj.newState.value == 3) {
    execCmd('/home/pi/openv/vcontrold-code/vcontrold/vclient -h 127.0.0.1:3002 -f /opt/ccu.io/scripts/vc-urlaub.txt',function (err,stdout,stderr) {
     if (!err) { 
        log('Urlaubsbetrieb M1/M2 ='+stdout);
      } 
      else {
        log ('error in Urlaubsbetrieb ='+err);
      }
    });
    log('Heizungmodus Urlaub');
  }
});
4. Exemplarisch für den Urlaubsbetrieb der Inhalt von vc-urlaub.txt:

Code: Alles auswählen

setBetriebPartyM1 0
setBetriebPartyM2 0
setBetriebArtM1 ABSCHALT
setBetriebArtM2 ABSCHALT
5. Die vcontrold.xml so:

Code: Alles auswählen

<?xml version="1.0"?>
<V-Control xmlns:vcontrol="http://www.openv.de/vcontrol">
  <unix>
     <config>
	<serial>
		<tty>/dev/vitoir0</tty>
	</serial>
	<net>
		<port>3002</port>
		<allow ip='127.0.0.1'/>
		<allow ip='192.168.x.x/24'/>

	</net>
	<logging>
		<file>/tmp/vcontrold.log</file>
		<syslog>n</syslog>
		<debug>y</debug>
	</logging>
	<device ID="2098"/>
     </config>
  </unix>
  <units>
	<unit name='Temperatur'>
	   <abbrev>UT</abbrev>
	   <calc get='V/10' set='V*10'/>
	   <type>short</type>
	   <entity>Grad Celsius</entity>
	</unit>
	<unit name='Temperatur100'>
	   <abbrev>UTH</abbrev>
	   <calc get='V/100' set='V*100'/>
	   <type>short</type>
	   <entity>Grad Celsius</entity>
	</unit>
	<unit name='Neigung'>
	   <abbrev>UN</abbrev>
	   <calc get='V/10' set='V*10'/>
	   <type>short</type>
	   <entity></entity>
	</unit>	
	<unit name='Temperatur 1Byte'>
          <abbrev>UT1</abbrev>
          <calc get='V/2' set='V*2'/>
          <type>char</type>
          <entity>Grad Celsius</entity>
        </unit>
	<unit name='Temperatur 1Byte unsigned'>
          <abbrev>UT1U</abbrev>
          <calc get='V/2' set='V*2'/>
          <type>uchar</type>
          <entity>Grad Celsius</entity>
        </unit>
	<unit name='Temperatur 1Byte ganzzahlig'>
          <abbrev>UTI</abbrev>
          <calc get='V' set='V'/>
          <type>uchar</type>
          <entity>Grad Celsius</entity>
        </unit>
	<unit name='Status'>
	   <abbrev>ST</abbrev>
	   <calc get='V' set='V'/>
	   <type>char</type>
	   <entity></entity>
	</unit>
	<unit name='Counter'>
	   <abbrev>CO</abbrev>
	   <calc get='V' set='V'/>
	   <type>int</type>
	   <entity></entity>
	</unit>
<unit name='Counter liter'>
	   <abbrev>COL</abbrev>
	   <calc get='V/1000' set='V*1000'/>
	   <type>int</type>
	   <entity>Liter</entity>
</unit>
	<unit name='Prozent'>
	   <abbrev>PR</abbrev>
	   <calc get='V/2' set='V*2'/>
	   <type>short</type>
	   <entity>%</entity>
	</unit>
	<unit name='Prozent 1 Byte ganzzahlig'>
	   <abbrev>PR1</abbrev>
	   <calc get='V' set='V'/>
	   <type>uchar</type>
	   <entity>%</entity>
	</unit>
	<unit name='Prozent zweites Byte ganzzahlig (Pumpe)'>
	   <abbrev>PR2</abbrev>
	   <calc get='B1' set='B1'/>
	   <type>uchar</type>
	   <entity>%</entity>
	</unit>
	<unit name='Prozent erstes Byte'>
	   <abbrev>PR3</abbrev>
	   <calc get='V/2' set='V*2'/>
	   <type>uchar</type>
	   <entity>%</entity>
	</unit>
	<unit name='Prozent Pumpe'>
	   <abbrev>PP</abbrev>
	   <calc get='(100*B1)/255' set='V'/>
	   <type>uchar</type>
	   <entity>%</entity>
	</unit>	
	
	<unit name='CounterS'>
	   <abbrev>CS</abbrev>
	   <calc get='V/3600' set='V*3600'/>
	   <type>uint</type>
	   <entity>Stunden</entity>
	</unit>
	<unit name='CycleTime'>
	   <abbrev>CT</abbrev>
	   <type>cycletime</type>
	</unit>
	<unit name='ReturnStatus'>
	   <abbrev>RT</abbrev>
	   <type>enum</type>
	   <enum bytes='00' text='0'/>
	   <enum bytes='01' text='1'/>
	   <enum text='NOT OK'/>
	</unit>
	<unit name='BetriebsArt'>
	   <abbrev>BA</abbrev>
	   <type>enum</type>
	   <enum bytes='00' text='WW'/>
	   <enum bytes='01' text='RED'/>
	   <enum bytes='02' text='NORM'/>
	   <enum bytes='04' text='H+WW FS'/>
	   <enum bytes='03' text='H+WW'/>
	   <enum bytes='05' text='ABSCHALT'/>
	   <enum text='UNKNOWN'/>
	</unit>	   
	 <unit name='SetReturnStatus'>
           <abbrev>SR</abbrev>
           <type>enum</type>
           <enum bytes='00' text='OK'/>
           <enum bytes='05' text='SYNC (NOT OK)'/>
           <enum text='NOT OK'/>
     </unit>
     <unit name='SystemTime'>
	   <abbrev>TI</abbrev>
	   <type>systime</type>
	</unit>
	<unit name='ErrorState'>
	   <abbrev>ES</abbrev>
	   <type>errstate</type>
	   <enum bytes='00' text='Regelbetrieb (kein Fehler)'/>
	   <enum bytes='0F' text='Wartung (fuer Reset Codieradresse 24 auf 0 stellen)'/>
	   <enum bytes='10' text='Kurzschluss Aussentemperatursensor'/>
	   <enum bytes='18' text='Unterbrechung Aussentemperatursensor'/>
	   <enum bytes='20' text='Kurzschluss Vorlauftemperatursensor'/>
	   <enum bytes='21' text='Kurzschluss Ruecklauftemperatursensor'/>
	   <enum bytes='28' text='Unterbrechung Aussentemperatursensor'/>
	   <enum bytes='29' text='Unterbrechung Ruecklauftemperatursensor'/>
	   <enum bytes='30' text='Kurzschluss Kesseltemperatursensor'/>
	   <enum bytes='38' text='Unterbrechung Kesseltemperatursensor'/>
	   <enum bytes='40' text='Kurzschluss Vorlauftemperatursensor M2'/>
	   <enum bytes='42' text='Unterbrechung Vorlauftemperatursensor M2'/>
	   <enum bytes='50' text='Kurzschluss Speichertemperatursensor'/>
	   <enum bytes='58' text='Unterbrechung Speichertemperatursensor'/>
	   <enum bytes='92' text='Solar: Kurzschluss Kollektortemperatursensor'/>
	   <enum bytes='93' text='Solar: Kurzschluss Sensor S3'/>
	   <enum bytes='94' text='Solar: Kurzschluss Speichertemperatursensor'/>
	   <enum bytes='9A' text='Solar: Unterbrechung Kollektortemperatursensor'/>
	   <enum bytes='9B' text='Solar: Unterbrechung Sensor S3'/>
	   <enum bytes='9C' text='Solar: Unterbrechung Speichertemperatursensor'/>
	   <enum bytes='9F' text='Solar: Fehlermeldung Solarteil (siehe Solarregler)'/>
	   <enum bytes='A7' text='Bedienteil defekt'/>
	   <enum bytes='B0' text='Kurzschluss Abgastemperatursensor'/>
	   <enum bytes='B1' text='Kommunikationsfehler Bedieneinheit'/>
	   <enum bytes='B4' text='Interner Fehler (Elektronik)'/>
	   <enum bytes='B5' text='Interner Fehler (Elektronik)'/>
	   <enum bytes='B6' text='Ungueltige Hardwarekennung (Elektronik)'/>
	   <enum bytes='B7' text='Interner Fehler (Kesselkodierstecker)'/>
	   <enum bytes='B8' text='Unterbrechung Abgastemperatursensor'/>
	   <enum bytes='B9' text='Interner Fehler (Dateneingabe wiederholen)'/>
	   <enum bytes='BA' text='Kommunikationsfehler Erweiterungssatz fuer Mischerkreis M2'/>
	   <enum bytes='BC' text='Kommunikationsfehler Fernbedienung Vitorol, Heizkreis M1'/>
	   <enum bytes='BD' text='Kommunikationsfehler Fernbedienung Vitorol, Heizkreis M2'/>
	   <enum bytes='BE' text='Falsche Codierung Fernbedienung Vitorol'/>
	   <enum bytes='C1' text='Externe Sicherheitseinrichtung (Kessel kuehlt aus)'/>
	   <enum bytes='C2' text='Kommunikationsfehler Solarregelung'/>
	   <enum bytes='C5' text='Kommunikationsfehler drehzahlgeregelte Heizkreispumpe, Heizkreis M1'/>
	   <enum bytes='C6' text='Kommunikationsfehler drehzahlgeregelte Heizkreispumpe, Heizkreis M2'/>
	   <enum bytes='C7' text='Falsche Codierung der Heizkreispumpe'/>
	   <enum bytes='C9' text='Stoermeldeeingang am Schaltmodul-V aktiv'/>
	   <enum bytes='CD' text='Kommunikationsfehler Vitocom 100 (KM-BUS)'/>
	   <enum bytes='CE' text='Kommunikationsfehler Schaltmodul-V'/>
	   <enum bytes='CF' text='Kommunikationsfehler LON Modul'/>
	   <enum bytes='D1' text='Brennerstoerung'/>
	   <enum bytes='D4' text='Sicherheitstemperaturbegrenzer hat ausgeloest oder Stoermeldemodul nicht richtig gesteckt'/>
	   <enum bytes='DA' text='Kurzschluss Raumtemperatursensor, Heizkreis M1'/>
	   <enum bytes='DB' text='Kurzschluss Raumtemperatursensor, Heizkreis M2'/>
	   <enum bytes='DD' text='Unterbrechung Raumtemperatursensor, Heizkreis M1'/>
	   <enum bytes='DE' text='Unterbrechung Raumtemperatursensor, Heizkreis M2'/>
	   <enum bytes='E4' text='Fehler Versorgungsspannung'/>
	   <enum bytes='E5' text='Interner Fehler (Ionisationselektrode)'/>
	   <enum bytes='E6' text='Abgas- / Zuluftsystem verstopft'/>
	   <enum bytes='F0' text='Interner Fehler (Regelung tauschen)'/>
	   <enum bytes='F1' text='Abgastemperaturbegrenzer ausgeloest'/>
	   <enum bytes='F2' text='Temperaturbegrenzer ausgeloest'/>
	   <enum bytes='F3' text='Flammensigal beim Brennerstart bereits vorhanden'/>
	   <enum bytes='F4' text='Flammensigal nicht vorhanden'/>
	   <enum bytes='F7' text='Differenzdrucksensor defekt'/>
	   <enum bytes='F8' text='Brennstoffventil schliesst zu spaet'/>
	   <enum bytes='F9' text='Geblaesedrehzahl beim Brennerstart zu niedrig'/>
	   <enum bytes='FA' text='Geblaesestillstand nicht erreicht'/>
	   <enum bytes='FD' text='Fehler Gasfeuerungsautomat'/>
	   <enum bytes='FE' text='Starkes Stoerfeld (EMV) in der Naehe oder Elektronik defekt'/>
	   <enum bytes='FF' text='Starkes Stoerfeld (EMV) in der Naehe oder interner Fehler'/>
	   <enum text='UNKNOWN'/>
	</unit>
	<unit name='DeviceType'>
           <abbrev>DT</abbrev>
           <type>enum</type>
           <enum bytes='20 53 01 2B' text='V200WB2 ID=2053 Protokoll:GWG_VBEM'/>
		   <enum bytes='20 98' text='V200KW2 ID=2098 Protokoll:KW'/>
           <enum bytes='20 CB' text='VScotHO1 ID=20CB Protokoll:KW,300'/>
 	       <enum bytes='20 94' text='V200KW1 ID=2094 Protokoll:KW'/>
           <enum text='UNKNOWN'/>
	</unit>
	<unit name='Brenner Stunden'>
           <abbrev>BH</abbrev>
           <type>uchar</type>
	   <calc get='(B1 * 100)+B0'/>
	   <entity>h</entity>
	</unit>
	
	
	
	
	<unit name='ErrorStateGWG'>
	   <abbrev>ESG</abbrev>
	   <type>enum</type>
	   <enum bytes='00' text='Keine Stoerung'/>
	   <enum bytes='02' text='Fehler Sicherheitskette'/>
	   <enum bytes='04' text='Brennerstoerung 04'/>
	   <enum bytes='05' text='Brennerstoerung 05'/>
	   <enum bytes='07' text='Brennerstoerung 07'/>
	   <enum bytes='08' text='Brennerstoerung 09'/>
	   <enum bytes='08' text='Brennerstoerung 09'/>
	   <enum bytes='0A' text='Brennerstoerung 10'/>
	   <enum  text='UNKNOWN'/>
	</unit>
	<unit name='Bitstatus'>
           <abbrev>BST</abbrev>
           <type>uchar</type>
           <icalc get="(B0 & (0x01<<BP))>> BP"/>
           <enum bytes='00' text='0'/>
           <enum bytes='01' text='1'/>
           <enum text='UNKNOWN'/>
        </unit>
	<unit name='HKP Pumpentyp'>
           <abbrev>HKT</abbrev>
           <type>uchar</type>
           <icalc get="(B0 & (0x01<<BP))>> BP"/>
           <enum bytes='00' text='stufig'/>
           <enum bytes='01' text='drehzahlgeregelt'/>
           <enum text='UNKNOWN'/>
        </unit>
	<unit name='Umschaltventil Stellung'>
	   <abbrev>USV</abbrev>
	   <type>enum</type>
	   <enum bytes='00' text='UNDEV'/>
	   <enum bytes='01' text='Heizen'/>
	   <enum bytes='02' text='Mittelstellung'/>
	   <enum bytes='03' text='Warmwasser'/>
	   <enum text='UNKNOWN'/>
	</unit>
</units>
  <protocols>
      <protocol name='KW2'>
	  <macros>
		<macro name='SYNC'>
		    <command>SEND 04;WAIT 05</command>
		</macro>
		<macro name='GETADDR'>
		    <command>SEND 01 F7</command>
		</macro>
		<macro name='SETADDR'>
		    <command>SEND 01 F4</command>
		</macro>
	  </macros>
	  <commands>

 
		<command name="getaddr">
		     <retry>3</retry>
		     <recvTimeout>300</recvTimeout>
		     <send>SYNC;GETADDR $addr $hexlen;RECV $len $unit</send>
		</command>
		<command name="setaddr">
		     <send>SYNC;SETADDR $addr $hexlen;SEND BYTES $unit;RECV 1 SR</send>
		</command>
        <command name="gettestaddr">
				<retry>3</retry>
				<recvTimeout>1500</recvTimeout>
                <send>SYNC;GETADDR;SEND BYTES;SEND 02;RECV 02</send>
        </command>

	  </commands>
	 
	</protocol>
	<!-- 300,KW2 ergaenzt Ceteris paribus 13.10.2012 Details nicht verifiziert -->  
	
	        <protocol name='300,KW2'>
	  <macros>
		<macro name='SYNC'>
		    <command>SEND 04;WAIT 05</command> 
		</macro>
		<macro name='GETADDR'>
		    <command>SEND 01 F7</command>
		</macro>
		<macro name='SETADDR'>
		    <command>SEND 01 F4</command>
		</macro>
	  </macros>
	  <commands>
 
		<command name="getaddr">
		     <retry>3</retry>
		     <recvTimeout>300</recvTimeout>
		     <send>SYNC;GETADDR $addr $hexlen;RECV $len $unit</send>
		</command>
		<command name="setaddr">
		     <send>SYNC;SETADDR $addr $hexlen;SEND BYTES $unit;RECV 1 SR</send>
		</command>
        <command name="gettestaddr">
				<retry>3</retry>
				<recvTimeout>5000</recvTimeout>
                <send>SYNC;GETADDR;SEND BYTES;SEND 02;RECV 02</send>
        </command>
	  </commands>
      </protocol>

      <protocol name='GWG'>
	  <macros>
		<macro name='SYNC'>
		    <command>SEND 04;WAIT 05</command>
		</macro>
		<macro name='GETADDR'>
		    <command>SEND 01 CB</command>
		</macro>
                <macro name='GETBADDR'>
                    <command>SEND 01 9E</command>
                </macro>
		<macro name='GETVADDR'>
                    <command>SEND 01 C7</command>
                </macro>
                <macro name='GETPADDR'>
                    <command>SEND 01 6E</command>
                </macro>
                <macro name='GETEADDR'>
                    <command>SEND 01 AE</command>
                </macro>
                <macro name='GETXADDR'>
                    <command>SEND 01 C5</command>
                </macro>
                <macro name='GETKMADDR'>
                    <command>SEND 01 43</command>
                </macro>
	  </macros>
	  <commands>
		<command name="getaddr">
		     <retry>3</retry>
		     <recvTimeout>300</recvTimeout>
	   	     <send>SYNC;GETADDR $addr $hexlen 04;RECV $len $unit</send>
		</command>
		<command name="gettestaddr">
		     <retry>3</retry>
		     <recvTimeout>300</recvTimeout>
	   	     <send>SYNC;GETADDR;SEND BYTES;SEND 01 04;RECV 1</send>
		</command>
		<command name="getbaddr">
		     <retry>3</retry>
		     <recvTimeout>300</recvTimeout>
                     <send>SYNC;GETBADDR $addr $hexlen 04;RECV $len $unit</send>
                </command>
                <command name="getbtestaddr">
		     <retry>3</retry>
		     <recvTimeout>300</recvTimeout>
                     <send>SYNC;GETBADDR;SEND BYTES;SEND 01 04;RECV 1</send>
                </command>
               <command name="getpaddr">
		     <retry>3</retry>
		     <recvTimeout>300</recvTimeout>
                     <send>SYNC;GETPADDR $addr $hexlen 04;RECV $len $unit</send>
                </command>
                <command name="getptestaddr">
		     <retry>3</retry>
		     <recvTimeout>300</recvTimeout>
                     <send>SYNC;GETPADDR;SEND BYTES;SEND 01 04;RECV 1</send>
                </command>
		 <command name="getvaddr">
		     <retry>3</retry>
		     <recvTimeout>300</recvTimeout>
                     <send>SYNC;GETVADDR $addr $hexlen 04;RECV $len $unit</send>
                </command>
		<command name="getvtestaddr">
		     <retry>3</retry>
		     <recvTimeout>300</recvTimeout>
	   	     <send>SYNC;GETVADDR;SEND BYTES;SEND 01 04;RECV 1</send>
		</command>
		 <command name="geteaddr">
		     <retry>3</retry>
		     <recvTimeout>300</recvTimeout>
                     <send>SYNC;GETEADDR $addr $hexlen 04;RECV $len $unit</send>
                </command>
		<command name="getetestaddr">
		     <retry>3</retry>
		     <recvTimeout>150</recvTimeout>
	   	     <send>SYNC;GETEADDR;SEND BYTES;SEND 01 04;RECV 1</send>
		</command>
		 <command name="getxaddr">
		     <retry>3</retry>
		     <recvTimeout>150</recvTimeout>
                     <send>SYNC;GETXADDR $addr $hexlen 04;RECV $len $unit</send>
                </command>
		<command name="getxtestaddr">
		     <retry>3</retry>
		     <recvTimeout>300</recvTimeout>
	   	     <send>SYNC;GETXADDR;SEND BYTES;SEND 01 04;RECV 1</send>
		</command>
		 <command name="getkmaddr">
                     <send>SYNC;GETKMDDR $addr $hexlen 04;RECV $len $unit</send>
		     <retry>3</retry>
		     <recvTimeout>300</recvTimeout>
                </command>
		<command name="getkmtestaddr">
		     <retry>3</retry>
		     <recvTimeout>300</recvTimeout>
	   	     <send>SYNC;GETKMADDR;SEND BYTES;SEND 01 04;RECV 1</send>
		</command>
                <command name="init">
                     <send>SEND 16 00 00;PAUSE 100;SEND 16 00 00;PAUSE 100;SEND 16 00 00;PAUSE 100;SEND 16 00 00;PAUSE 100;SEND 16 00 00;PAUSE 100;SEND 16 00 00;PAUSE 100;SEND 16 00 00;PAUSE 100;SEND 16 00 00;PAUSE 100</send>
                <retry>3</retry>
		</command>
		<command name="setaddr">
		     <send>SYNC;SETADDR $addr $hexlen;SEND BYTES $unit;RECV 1 SR</send>
		</command>
	  </commands>
      </protocol>
  </protocols>
  <extern xmlns:xi="http://www.w3.org/2003/XInclude">
     <xi:include href="vito.xml" parse="xml"/>
  </extern>
</V-Control>
6. Die vito.xml so:

Code: Alles auswählen

- <!--  Getestet auf V200KW1 Oel Vitola 200 und VScotHO1 GAS Vitodens 200B2B September 2011 
  --> 
- <!--  Ohne Gewaehr ceteris paribus 2012
  --> 
- <!--  Befehl 'setVentilStatus' sprechend analog Viessmann ergaenzt von ceteris paribus 04.10.2012 
  --> 
- <!--  Befehle 'SetTempRaum...Soll... ergaenzt von ceteris paribus 13.10.2012 
  --> 
- <!--  Devices ergaenzt von ceteris paribus 13.10.2012 
  --> 
- <!--  Befehle K90 Daempfung sprechend und Viessmann ergaenzt von ceteris paribus 27.10.2012 
  --> 
- <vito>
- <devices>
  <device ID="2053" name="GWG_VBEM" protocol="GWG" /> 
  <device ID="20A4" name="V200GW1" protocol="KW2" /> 
  <device ID="2094" name="V200 KW1" protocol="KW2" /> 
  <device ID="2098" name="V200 KW2" protocol="KW2" /> 
  <device ID="20B4" name="V050 HK1M" protocol="KW2" /> 
  <device ID="20AC" name="V050 HK1S" protocol="KW2" /> 
  <device ID="20AA" name="V050 HK1W" protocol="KW2" /> 
  <device ID="20AD" name="V050 HK3S" protocol="KW2" /> 
  <device ID="20AB" name="V050 HK3W" protocol="KW2" /> 
  <device ID="20A0" name="V100 GC1" protocol="KW2" /> 
  <device ID="2091" name="V100 KC2" protocol="KW2" /> 
  <device ID="2092" name="V150 KB1" protocol="KW2" /> 
  <device ID="20A4" name="V200 GW1" protocol="KW2" /> 
  <device ID="20A5" name="V300 GW2" protocol="KW2" /> 
  <device ID="209C" name="V300 KW23" protocol="KW2" /> 
  <device ID="20B8" name="V333 MW1" protocol="300,KW2" /> 
  <device ID="20B9" name="V333 MW1S" protocol="300,KW2" /> 
  <device ID="20BA" name="V333 MW2" protocol="300,KW2" /> 
  <device ID="20C0" name="VDensHC1" protocol="300,KW2" /> 
  <device ID="20C1" name="VDensHC2" protocol="300,KW2" /> 
  <device ID="20C2" name="VDensHO2" protocol="300,KW2" /> 
  <device ID="20C3" name="VDensHC1" protocol="300,KW2" /> 
  <device ID="20C4" name="VDensHC2" protocol="300,KW2" /> 
  <device ID="20C5" name="VPendHO1" protocol="300,KW2" /> 
  <device ID="20C6" name="VPlusHC1" protocol="300,KW2" /> 
  <device ID="20C7" name="VPlusHC2" protocol="300,KW2" /> 
  <device ID="20C8" name="VPlusHO1" protocol="300,KW2" /> 
  <device ID="20C9" name="VPlusHC1" protocol="300,KW2" /> 
  <device ID="20CA" name="VPlusHC2" protocol="300,KW2" /> 
  <device ID="20CB" name="VScotHO1" protocol="300,KW2" /> 
  <device ID="2047" name="VBC700_AW" protocol="300,KW2" /> 
  <device ID="2047" name="VBC700_BW_WW" protocol="300,KW2" /> 
  <device ID="2032" name="VBC700_BW_WW" protocol="300,KW2" /> 
  <device ID="2033" name="VBC550P" protocol="300,KW2" /> 
  </devices>
- <commands>
- <!--  AUSSENTEMPERATUR 
  --> 
- <command name="getTempA" protocmd="getaddr">
  <addr>0800</addr> 
  <len>2</len> 
  <unit>UT</unit> 
  <description>Ermittle die Aussentemperatur in Grad C</description> 
- <device ID="2053">
  <addr>6F</addr> 
  <unit>UT1</unit> 
  <len>1</len> 
  </device>
  </command>
- <command name="getTempAtp" protocmd="getaddr">
  <addr>5525</addr> 
  <len>2</len> 
  <unit>UT</unit> 
  <description>Ermittle die Aussentemperatur in Grad C (Tiefpass)</description> 
  <device ID="2053" /> 
  </command>
- <command name="getTempAged" protocmd="getaddr">
  <addr>5527</addr> 
  <len>2</len> 
  <unit>UT</unit> 
  <description>Ermittle die Aussentemperatur in Grad C (Gedaempft)</description> 
  <device ID="2053" /> 
  </command>
- <!--  WARMWASSER 
  --> 
- <command name="getTempWWist" protocmd="getaddr">
  <addr>0804</addr> 
  <len>2</len> 
  <unit>UT</unit> 
  <description>Ermittle die Warmwassertemperatur in Grad C</description> 
  </command>
- <command name="getTempWWsoll" protocmd="getaddr">
  <addr>6300</addr> 
  <len>1</len> 
  <unit>UTI</unit> 
  <description>Ermittle die Warmwassersolltemperatur in Grad C</description> 
  </command>
- <!--  set Befehl eingefuegt von ceteris paribus 2010 
  --> 
- <command name="setTempWWsoll" protocmd="setaddr">
  <addr>6300</addr> 
  <len>2</len> 
  <unit>UTI</unit> 
  <description>Setze die Warmwassersolltemperatur in Grad C</description> 
  </command>
- <!--  get Befehl eingefuegt von ceteris paribus 2010 Was ist die WW-Auslauftemperatur 
  --> 
- <command name="getTempStp2" protocmd="getaddr">
  <addr>0814</addr> 
  <len>2</len> 
  <unit>UT</unit> 
  <description>Ermittle die WW Auslauftemperatur in Grad C (Tiefpass)</description> 
  <device ID="2053" /> 
  <device ID="2098" /> 
  </command>
- <!--  get Befehl eingefuegt von ceteris paribus 25.08.2011 
  --> 
- <command name="getWWUWPNachlauf" protocmd="getaddr">
  <addr>6762</addr> 
  <len>2</len> 
  <unit>CO</unit> 
  <description>Ermittle Warmwasserpumpennachlauf</description> 
  </command>
- <!--  set Befehl eingefuegt von ceteris paribus 25.08.2011 
  --> 
- <command name="setWWUWPNachlauf" protocmd="setaddr">
  <addr>6762</addr> 
  <len>2</len> 
  <unit>CO</unit> 
  <description>Setze Warmwasserpumpennachlauf</description> 
  </command>
- <!--  get Befehl eingefuegt von ceteris paribus 19.09.2011 
  --> 
- <command name="getSpeichervorrang" protocmd="getaddr">
  <addr>27A2</addr> 
  <len>1</len> 
  <unit>ST</unit> 
  <description>Ermittle den Status Speichervorrang Heizkreis ohne Mischer A1 bzw. mit Mischer M1</description> 
  </command>
- <!--  get Befehl eingefuegt von ceteris paribus 19.09.2011 
  --> 
- <command name="setSpeichervorrang" protocmd="setaddr">
  <addr>27A2</addr> 
  <len>1</len> 
  <unit>ST</unit> 
  <description>Setze den Status Speichervorrang Heizkreis ohne Mischer A1 bzw. mit Mischer M1</description> 
  </command>
- <!--  get Befehl eingefuegt von ceteris paribus 27.09.2011 
  --> 
- <command name="getSpeichervorrangM2" protocmd="getaddr">
  <addr>37A2</addr> 
  <len>1</len> 
  <unit>ST</unit> 
  <description>Ermittle den Status Speichervorrang Heizkreis mit Mischer M2</description> 
  </command>
- <!--  get Befehl eingefuegt von ceteris paribus 27.09.2011 
  --> 
- <command name="setSpeichervorrangM2" protocmd="setaddr">
  <addr>37A2</addr> 
  <len>1</len> 
  <unit>ST</unit> 
  <description>Setze den Status Speichervorrang Heizkreis mit Mischer M2</description> 
  </command>
- <!--  get Befehl eingefuegt von ceteris paribus 27.09.2011 
  --> 
- <command name="getSpeichervorrangM3" protocmd="getaddr">
  <addr>47A2</addr> 
  <len>1</len> 
  <unit>ST</unit> 
  <description>Ermittle den Status Speichervorrang Heizkreis mit Mischer M3</description> 
  </command>
- <!--  get Befehl eingefuegt von ceteris paribus 27.09.2011 
  --> 
- <command name="setSpeichervorrangM3" protocmd="setaddr">
  <addr>47A2</addr> 
  <len>1</len> 
  <unit>ST</unit> 
  <description>Setze den Status Speichervorrang Heizkreis mit Mischer M3</description> 
  </command>
- <!--  KESSEL 
  --> 
- <!--  get Befehl eingefuegt von ceteris paribus 2010 Differenztemperatur Kesselkreis zu HKM(2) 
  --> 
- <command name="getTempKOffset" protocmd="getaddr">
  <addr>6760</addr> 
  <len>1</len> 
  <unit>UTI</unit> 
  <description>Ermittle Kesseloffset KT ueber WWsoll in Grad C</description> 
  </command>
- <!--  set Befehl eingefuegt von ceteris paribus 2010 Differenztemperatur Kesselkreis zu HKM(2) 
  --> 
- <command name="setTempKOffset" protocmd="setaddr">
  <addr>6760</addr> 
  <len>1</len> 
  <unit>UTI</unit> 
  <description>Setze Kesseloffset KT ueber WWsoll in Grad C</description> 
  </command>
- <command name="getTempKist" protocmd="getaddr">
  <addr>0802</addr> 
  <len>2</len> 
  <unit>UT</unit> 
  <description>Ermittle die Kesseltemperatur in Grad C</description> 
- <device ID="2053">
  <addr>70</addr> 
  <unit>UT1</unit> 
  <len>1</len> 
  </device>
  </command>
- <!--  get Befehl eingefuegt von ceteris paribus 
  --> 
- <command name="getTempAbgas" protocmd="getaddr">
  <addr>0808</addr> 
  <len>2</len> 
  <unit>UT</unit> 
  <description>Ermittle die Abgastemperatur in Grad C</description> 
- <device ID="20CB">
  <addr>0808</addr> 
  <unit>UT</unit> 
  <len>2</len> 
  </device>
  </command>
- <command name="getTempKtp" protocmd="getaddr">
  <addr>0810</addr> 
  <len>2</len> 
  <unit>UT</unit> 
  <description>Ermittle die Kesseltemperatur in Grad C (Tiefpass)</description> 
  <device ID="2053" /> 
  </command>
- <command name="getTempKsoll" protocmd="getaddr">
  <addr>5502</addr> 
  <len>2</len> 
  <unit>UT</unit> 
  <description>Ermittle die Kesselsolltemperatur in Grad C</description> 
- <device ID="2053">
  <addr>71</addr> 
  <unit>UT1</unit> 
  <len>1</len> 
  </device>
- <!--  Device 20CB eingefuegt von ceteris paribus 2010 
  --> 
- <device ID="20CB">
  <addr>555A</addr> 
  <unit>UT</unit> 
  <len>2</len> 
  </device>
  </command>
- <!--  get Befehl eingefuegt von ceteris paribus 2010 
  --> 
- <command name="getBetriebszeitStandby" protocmd="getaddr">
  <addr>08B8</addr> 
  <len>4</len> 
  <unit>CS</unit> 
  <description>Ermittle die NRF_BetriebszeitStandby</description> 
- <device ID="2053" protocmd="geteaddr">
  <addr>17</addr> 
  <len>2</len> 
  <unit>BH</unit> 
  </device>
  </command>
- <!--  BRENNER 
  --> 
- <command name="getBrennerStatus" protocmd="getaddr">
  <addr>55D3</addr> 
  <len>1</len> 
  <unit>RT</unit> 
  <description>Ermittle den Brennerstatus</description> 
- <device ID="2053">
  <addr>22</addr> 
  <len>1</len> 
  <bit>1</bit> 
  <unit>BST</unit> 
  </device>
- <!--  device 2094 eingefuegt von ceteris paribus 2011 
  --> 
- <device ID="2094">
  <addr>0842</addr> 
  <len>1</len> 
  <unit>ST</unit> 
  </device>
  </command>
- <!--  get Befehl BrennerStatus2 eingefuegt von ceteris paribus 2011 
  --> 
- <command name="getBrennerStatus2" protocmd="getaddr">
  <addr>0849</addr> 
  <len>1</len> 
  <unit>ST</unit> 
  <description>Ermittle den Brennerstatus Stufe 2</description> 
- <device ID="2094">
  <addr>0849</addr> 
  <len>1</len> 
  <unit>ST</unit> 
  </device>
  </command>
- <!--  get Befehl BrennerStufe eingefuegt von ceteris paribus 2011 
  --> 
- <command name="getBrennerStufe" protocmd="getaddr">
  <addr>551E</addr> 
  <len>1</len> 
  <unit>RT</unit> 
  <description>Ermittle den Brennerstatus aktuelle Stufe</description> 
- <device ID="2053">
  <addr>22</addr> 
  <len>1</len> 
  <bit>1</bit> 
  <unit>BST</unit> 
  </device>
  </command>
- <command name="getBrennerStarts" protocmd="getaddr">
  <addr>088A</addr> 
  <len>2</len> 
  <unit>CO</unit> 
  <description>Ermittle die Brennerstarts</description> 
  <device ID="2053" /> 
  </command>
- <!--  Befehl setBrennerStarts eingefuegt von ceteris paribus 06.10.2012 
  --> 
- <command name="setBrennerStarts" protocmd="setaddr">
  <addr>088A</addr> 
  <len>2</len> 
  <unit>CO</unit> 
  <description>Setze die Brennerstarts</description> 
  <device ID="2053" /> 
  </command>
- <command name="getBrennerStunden1" protocmd="getaddr">
  <addr>08A7</addr> 
  <len>4</len> 
  <unit>CS</unit> 
  <description>Ermittle die Brennerstunden Stufe 1</description> 
- <device ID="2053" protocmd="geteaddr">
  <addr>17</addr> 
  <len>2</len> 
  <unit>BH</unit> 
  </device>
  </command>
- <!--  Befehl setBrennerStunden1 eingefuegt von ceteris paribus 06.10.2012 
  --> 
- <command name="setBrennerStunden1" protocmd="setaddr">
  <addr>08A7</addr> 
  <len>4</len> 
  <unit>CO</unit> 
- <!--  Unit hier CO da CS mit V*3600 nicht funktioniert ceteris paribus 07.10.2012 
  --> 
  <description>Setze die Brennerstunden Stufe 1</description> 
- <device ID="2053" protocmd="setaddr">
  <addr>17</addr> 
  <len>2</len> 
  <unit>BH</unit> 
  </device>
  </command>
- <command name="getBrennerStunden2" protocmd="getaddr">
  <addr>08AB</addr> 
  <len>4</len> 
  <unit>CS</unit> 
  <description>Ermittle die Brennerstunden Stufe 2</description> 
  <device ID="2053" /> 
  </command>
- <!--  Befehl getLeistungIst eingefuegt von ceteris paribus 2010 
  --> 
- <command name="getLeistungIst" protocmd="getaddr">
  <addr>A38F</addr> 
  <len>2</len> 
  <unit>PR3</unit> 
  <description>Ermittle Anlagen Ist-Leistung</description> 
  <device ID="2053" /> 
  </command>
- <!--  Befehl getOeldurchsatz eingefuegt von ceteris paribus 2011 
  --> 
- <command name="getOeldurchsatz" protocmd="getaddr">
  <addr>5726</addr> 
  <len>4</len> 
  <unit>CO</unit> 
  <description>Eingestellter Oeldurchsatz Brenner in Dezi-Liter pro Stunde</description> 
  </command>
- <!--  Befehl setOeldurchsatz eingefuegt von ceteris paribus 2011 
  --> 
- <command name="setOeldurchsatz" protocmd="setaddr">
  <addr>5726</addr> 
  <len>4</len> 
  <unit>CO</unit> 
  <description>Oeldurchsatz Brenner in Dezi-Liter pro Stunde einstellen</description> 
  </command>
- <!--  Befehl getOeldurchsatz eingefuegt von ceteris paribus 2011 
  --> 
- <command name="getOelverbrauch" protocmd="getaddr">
  <addr>7574</addr> 
  <len>4</len> 
  <unit>COL</unit> 
  <description>Ermittle den Oelverbrauch kumuliert</description> 
  <device ID="2053" /> 
  </command>
- <!--  Befehl getDurchsatz eingefuegt von ceteris paribus 08.12.2013 
  --> 
- <command name="getDurchsatz" protocmd="getaddr">
  <addr>0C24</addr> 
  <len /> 
  <unit>CO</unit> 
  <description>Ermittle den Durchsatz</description> 
  <device ID="2053" /> 
  </command>
- <!--  HEIZKURVEN 
  --> 
- <command name="getNeigungM1" protocmd="getaddr">
  <addr>2305</addr> 
  <len>1</len> 
  <unit>UN</unit> 
  <description>Ermittle Neigung Heizkennlinie M1</description> 
- <device ID="2053">
  <addr>65</addr> 
  <unit>UN</unit> 
  <len>1</len> 
  </device>
- <!--  device 20CB eingefuegt von ceteris paribus 26.10.2011 
  --> 
- <device ID="20CB">
  <addr>27D3</addr> 
  <unit>UN</unit> 
  <len>1</len> 
  </device>
  </command>
- <command name="getNeigungM2" protocmd="getaddr">
  <addr>3305</addr> 
  <len>1</len> 
  <unit>UN</unit> 
  <description>Ermittle Neigung Heizkennlinie M2</description> 
- <device ID="2053">
  <addr>C4</addr> 
  <unit>UN</unit> 
  <len>1</len> 
  </device>
- <!--  device 20CB eingefuegt von ceteris paribus 2010 
  --> 
- <device ID="20CB">
  <addr>37D3</addr> 
  <unit>UN</unit> 
  <len>1</len> 
  </device>
  </command>
- <command name="getNiveauM1" protocmd="getaddr">
  <addr>2304</addr> 
  <len>1</len> 
  <unit>ST</unit> 
  <description>Ermittle Niveau Heizkennlinie M1</description> 
- <device ID="2053">
  <addr>64</addr> 
  <unit>ST</unit> 
  <len>1</len> 
  </device>
- <!--  device 20CB eingefuegt von ceteris paribus 26.10.2011 
  --> 
- <device ID="20CB">
  <addr>27D4</addr> 
  <unit>ST</unit> 
  <len>1</len> 
  </device>
  </command>
- <command name="getNiveauM2" protocmd="getaddr">
  <addr>3304</addr> 
  <len>1</len> 
  <unit>ST</unit> 
  <description>Ermittle Niveau Heizkennlinie M2</description> 
- <device ID="2053">
  <addr>C5</addr> 
  <unit>ST</unit> 
  <len>1</len> 
  </device>
- <!--  device 20CB eingefuegt von ceteris paribus 2010 
  --> 
- <device ID="20CB">
  <addr>37D4</addr> 
  <unit>ST</unit> 
  <len>1</len> 
  </device>
  </command>
- <command name="setNeigungM1" protocmd="setaddr">
- <!--  min zul.0.2  	0.1 und 0.0 nicht erlaubt ceteris paribus 27.10.2011 
  --> 
  <addr>2305</addr> 
  <len>1</len> 
  <unit>UN</unit> 
  <description>Setze Neigung Heizkennlinie M1</description> 
  <device ID="2053" /> 
- <!--  device 20CB eingefuegt von ceteris paribus 26.10.2011 
  --> 
- <device ID="20CB">
  <addr>27D3</addr> 
  <unit>UN</unit> 
  <len>1</len> 
  </device>
  </command>
- <command name="setNeigungM2" protocmd="setaddr">
- <!--  min zul.0.2  	0.1 und 0.0 nicht erlaubt ceteris paribus 27.10.2011 
  --> 
  <addr>3305</addr> 
  <len>1</len> 
  <unit>UN</unit> 
  <description>Setze Neigung Heizkennlinie M2</description> 
  <device ID="2053" /> 
- <!--  device 20CB eingefuegt von ceteris paribus 2010 
  --> 
- <device ID="20CB">
  <addr>37D3</addr> 
  <unit>UN</unit> 
  <len>1</len> 
  </device>
  </command>
- <command name="setNiveauM1" protocmd="setaddr">
  <addr>2304</addr> 
  <len>1</len> 
  <unit>ST</unit> 
  <description>Setze Niveau Heizkennlinie M1</description> 
  <device ID="2053" /> 
- <!--  device 20CB eingefuegt von ceteris paribus 26.10.2011 
  --> 
- <device ID="20CB">
  <addr>27D4</addr> 
  <unit>ST</unit> 
  <len>1</len> 
  </device>
  </command>
- <command name="setNiveauM2" protocmd="setaddr">
  <addr>3304</addr> 
  <len>1</len> 
  <unit>ST</unit> 
  <description>Setze Niveau Heizkennlinie M2</description> 
  <device ID="2053" /> 
- <!--  device 20CB eingefuegt von ceteris paribus 2010 
  --> 
- <device ID="20CB">
  <addr>37D4</addr> 
  <unit>ST</unit> 
  <len>1</len> 
  </device>
  </command>
- <!--  HEIZKREISE 
  --> 
- <command name="getTempVListM1" protocmd="getaddr">
  <len>2</len> 
  <unit>UT</unit> 
  <description>Ermittle die Vorlauftemperatur M1 in Grad C</description> 
  <device ID="2053" /> 
  </command>
- <command name="getTempVListM2" protocmd="getaddr">
  <addr>080C</addr> 
  <len>2</len> 
  <unit>UT</unit> 
  <description>Ermittle die Vorlauftemperatur M2 in Grad C</description> 
- <device ID="2053">
  <addr>41</addr> 
  <unit>UT1</unit> 
  <len>1</len> 
  </device>
- <!--  Device 20CB eingefuegt von ceteris paribus 2010 
  --> 
- <device ID="20CB">
  <addr>3900</addr> 
  <unit>UT</unit> 
  <len>2</len> 
  </device>
  </command>
- <command name="getTempVLsollM1" protocmd="getaddr">
  <addr>2544</addr> 
  <len>2</len> 
  <unit>UT</unit> 
  <description>Ermittle die Vorlaufsolltemperatur M1 in Grad C</description> 
- <device ID="2053">
  <addr>69</addr> 
  <unit>UT1</unit> 
  <len>1</len> 
  </device>
  </command>
- <command name="getTempVLsollM2" protocmd="getaddr">
  <addr>3544</addr> 
  <len>2</len> 
  <unit>UT</unit> 
  <description>Ermittle die Vorlaufsolltemperatur M2 in Grad C</description> 
- <device ID="2053">
  <addr>63</addr> 
  <unit>UT1</unit> 
  <len>1</len> 
  </device>
  </command>
- <command name="getTempVLsollM3" protocmd="getaddr">
  <addr>4544</addr> 
  <len>2</len> 
  <unit>UT</unit> 
  <description>Ermittle die Vorlaufsolltemperatur M3 in Grad C</description> 
  <device ID="2053" /> 
  </command>
- <command name="getTempRL17A" protocmd="getaddr">
  <addr>080A</addr> 
  <len>2</len> 
  <unit>UT</unit> 
  <description>Ermittle die Ruecklauftemperatur 17A in Grad C</description> 
  <device ID="2053" /> 
- <!--  Device 20CB eingefuegt von ceteris paribus 2010 
  --> 
- <device ID="20CB">
  <addr>0808</addr> 
  <len>2</len> 
  <unit>UT</unit> 
  </device>
  </command>
- <!--  SOLAR 
  --> 
- <command name="getTempKol" protocmd="getaddr">
  <addr>6564</addr> 
  <len>2</len> 
  <unit>UT</unit> 
  <description>Ermittle die Kollektortemperatur in Grad C</description> 
  <device ID="2053" /> 
  </command>
- <command name="getSolarStatusWW" protocmd="getaddr">
  <addr>6551</addr> 
  <len>1</len> 
  <unit>RT</unit> 
  <description>Ermittle den Status der Nachladeunterdrueckung</description> 
  <device ID="2053" /> 
  </command>
- <command name="getSolarStunden" protocmd="getaddr">
  <addr>6568</addr> 
  <len>2</len> 
  <unit>CO</unit> 
  <description>Solar Betriebsstunden</description> 
  <device ID="2053" /> 
  </command>
- <command name="getSolarLeistung" protocmd="getaddr">
  <addr>6560</addr> 
  <len>4</len> 
  <unit>CO</unit> 
  <description>Solar Leistung Gesamt</description> 
  <device ID="2053" /> 
  </command>
- <!--  get Befehl eingefuegt von ceteris paribus 2010 GEHT NICHT Versuch ueber KM-Bus Befehl steht aus. Adresse geraten 
  --> 
- <command name="getTempS4" protocmd="getaddr">
  <addr>0124</addr> 
  <len>1</len> 
  <unit>UT1</unit> 
  <description>Ermittle die Temperatur S4 in Grad C</description> 
  <device ID="2053" /> 
  </command>
- <!--  SPEICHER1 
  --> 
- <command name="getTempSpu" protocmd="getaddr">
  <addr>6566</addr> 
  <len>2</len> 
  <unit>UT</unit> 
  <description>Ermittle die Speichertemperatur unten in Grad C</description> 
  <device ID="2053" /> 
  </command>
- <command name="getTempStp" protocmd="getaddr">
  <addr>0812</addr> 
  <len>2</len> 
  <unit>UT</unit> 
  <description>Ermittle die Speichertemperatur in Grad C (Tiefpass)</description> 
  <device ID="2053" /> 
  <device ID="2098" /> 
  </command>
- <!--  SOLLTEMPERATUREN 
  --> 
- <command name="getTempRaumNorSollM1" protocmd="getaddr">
  <addr>2306</addr> 
  <len>1</len> 
  <unit>UTI</unit> 
  <description>Ermittle die Raumsolltemperatur normal M1 in Grad C</description> 
- <device ID="2053">
  <addr>53</addr> 
  <len>1</len> 
  <unit>UTI</unit> 
  </device>
  </command>
- <!--  set Befehl setTempRaumNorSollM1 eingefuegt von ceteris paribus 13.10.2012 
  --> 
- <!--  Aufruf in vclient ganzzahlig 'setTempRaumNorSollM1 21' 
  --> 
- <command name="setTempRaumNorSollM1" protocmd="setaddr">
  <addr>2306</addr> 
  <len>1</len> 
  <unit>UTI</unit> 
  <description>Setze die Raumsolltemperatur normal M1 in Grad C</description> 
- <device ID="2053">
  <addr>53</addr> 
  <len>1</len> 
  <unit>UTI</unit> 
  </device>
  </command>
- <command name="getTempRaumNorSollM2" protocmd="getaddr">
  <addr>3306</addr> 
  <len>1</len> 
  <unit>UTI</unit> 
  <description>Ermittle die Raumsolltemperatur normal M2 in Grad C</description> 
  <device ID="2053" /> 
  </command>
- <!--  set Befehl eingefuegt von ceteris paribus 20.12.2011 geht noch nicht 
  --> 
- <!--  set Befehl Adressen korrigiert von ceteris paribus 13.10.2012 
  --> 
- <!--  Aufruf in vclient ganzzahlig 'setTempRaumNorSollM2 21' 
  --> 
- <command name="setTempRaumNorSollM2" protocmd="setaddr">
  <addr>3306</addr> 
  <len>1</len> 
  <unit>UTI</unit> 
  <description>Setze die Raumsolltemperatur normal M2 in Grad C</description> 
  <device ID="2053" /> 
  </command>
- <command name="getTempRaumRedSollM1" protocmd="getaddr">
  <addr>2307</addr> 
  <len>1</len> 
  <unit>UTI</unit> 
  <description>Ermittle die Raumsolltemperatur reduziert M1 in Grad C</description> 
- <device ID="2053">
  <addr>54</addr> 
  <len>1</len> 
  <unit>UTI</unit> 
  </device>
  </command>
- <!--  set Befehl eingefuegt von ceteris paribus 13.10.2012 
  --> 
- <command name="setTempRaumRedSollM1" protocmd="setaddr">
  <addr>2307</addr> 
  <len>1</len> 
  <unit>UTI</unit> 
  <description>Setze die Raumsolltemperatur reduziert M1 in Grad C</description> 
- <device ID="2053">
  <addr>54</addr> 
  <len>1</len> 
  <unit>UTI</unit> 
  </device>
  </command>
- <command name="getTempRaumRedSollM2" protocmd="getaddr">
  <addr>3307</addr> 
  <len>1</len> 
  <unit>UTI</unit> 
  <description>Ermittle die Raumsolltemperatur reduziert M2 in Grad C</description> 
  <device ID="2053" /> 
  </command>
- <!--  set Befehl eingefuegt von ceteris paribus 2010 
  --> 
- <command name="setTempRaumRedSollM2" protocmd="setaddr">
  <addr>3307</addr> 
  <len>1</len> 
  <unit>UTI</unit> 
  <description>Setze die Raumsolltemperatur reduziert M2 in Grad C</description> 
  <device ID="2053" /> 
  </command>
- <!--  PUMPEN 
  --> 
- <command name="getPumpeStatusM1" protocmd="getaddr">
  <addr>2906</addr> 
  <len>1</len> 
  <unit>RT</unit> 
  <description>Ermittle den Status der Pumpe M1</description> 
- <device ID="2053" protocmd="getpaddr">
  <addr>01</addr> 
  <len>1</len> 
  <bit>0</bit> 
  <unit>BST</unit> 
  </device>
- <!--  Device 20CB eingefuegt von ceteris paribus 2010 
  --> 
- <device ID="20CB">
  <addr>7663</addr> 
  <len>2</len> 
  <unit>PR2</unit> 
  </device>
  </command>
- <command name="getPumpeStatusM2" protocmd="getaddr">
  <addr>3906</addr> 
  <len>1</len> 
  <unit>RT</unit> 
  <description>Ermittle den Status der Pumpe M2</description> 
  <device ID="2053" /> 
- <!--  Device 20CB eingefuegt von ceteris paribus 2010 
  --> 
- <device ID="20CB">
  <addr>7665</addr> 
  <len>1</len> 
  <unit>RT</unit> 
  </device>
  </command>
- <!--  get Befehl eingefuegt von ceteris paribus 2010 
  --> 
- <command name="getPumpeDrehzahlM2" protocmd="getaddr">
  <addr>3906</addr> 
  <len>1</len> 
  <unit>RT</unit> 
  <description>Ermittle die Drehzahl der Pumpe M2</description> 
  <device ID="2053" /> 
- <!--  Device 20CB eingefuegt von ceteris paribus 2010 
  --> 
- <device ID="20CB">
  <addr>7665</addr> 
  <len>2</len> 
  <unit>PR2</unit> 
  </device>
  </command>
- <!--  get Befehl eingefuegt von ceteris paribus 2010 
  --> 
- <command name="getPumpeStatusIntern" protocmd="getaddr">
  <description>Ermittle den Status der Internen Pumpe</description> 
- <device ID="20CB">
  <addr>7660</addr> 
  <len>1</len> 
  <unit>RT</unit> 
  </device>
  </command>
- <!--  get Befehl eingefuegt von ceteris paribus 2010 
  --> 
- <command name="getPumpeDrehzahlIntern" protocmd="getaddr">
  <addr>3906</addr> 
  <len>1</len> 
  <unit>RT</unit> 
  <description>Ermittle die Drehzahl der Internen Pumpe</description> 
  <device ID="2053" /> 
- <device ID="20CB">
  <addr>7660</addr> 
  <len>2</len> 
  <unit>PR2</unit> 
  </device>
  </command>
- <command name="getPumpeStatusSp" protocmd="getaddr">
  <addr>0845</addr> 
  <len>1</len> 
  <unit>RT</unit> 
  <description>Ermittle den Status der Speicherladepumpe</description> 
  <device ID="2053" /> 
- <!--  Device 20CB eingefuegt von ceteris paribus 2010 
  --> 
- <device ID="20CB">
  <addr>6513</addr> 
  <len>1</len> 
  <unit>RT</unit> 
  </device>
  </command>
- <command name="getPumpeStatusZirku" protocmd="getaddr">
  <addr>0846</addr> 
  <len>1</len> 
  <unit>RT</unit> 
  <description>Ermittle den Status der Zirkulationspumpe</description> 
- <device ID="2053" protocmd="getpaddr">
  <addr>01</addr> 
  <len>1</len> 
  <bit>2</bit> 
  <unit>BST</unit> 
  </device>
- <!--  Device 20CB eingefuegt von ceteris paribus 2010 
  --> 
- <device ID="20CB">
  <addr>6515</addr> 
  <len>1</len> 
  <unit>RT</unit> 
  </device>
  </command>
- <command name="getPumpeStatusSolar" protocmd="getaddr">
  <addr>6552</addr> 
  <len>1</len> 
  <unit>RT</unit> 
  <description>Ermittle den Status der Umwaelzpumpe Solar</description> 
  <device ID="2053" /> 
  </command>
- <!--  get Befehl eingefuegt von ceteris paribus 2010 
  --> 
- <command name="getPumpeDrehzahlSolar" protocmd="getaddr">
  <addr>6552</addr> 
  <len>1</len> 
  <unit>RT</unit> 
  <description>Ermittle die Drehzahl der Umwaelzpumpe Solar</description> 
  <device ID="2053" /> 
- <!--  Device 20CB eingefuegt von ceteris paribus 2010 
  --> 
- <device ID="20CB">
  <addr>6552</addr> 
  <len>2</len> 
  <unit>PR2</unit> 
  </device>
  </command>
- <!--  get Befehl eingefuegt von ceteris paribus 2010 RT GEHT NICHT, PR2 liefert 255% bei 100% 
  --> 
- <!--  Neu definierte Einheit PP liefert 100% bei 100% ceteris paribus 16.10.2012
  --> 
- <command name="getPumpeStatusSolar2" protocmd="getaddr">
  <addr>6553</addr> 
  <len>2</len> 
  <unit>PP</unit> 
  <description>Ermittle den Status der Pumpe 2 Solar</description> 
  <device ID="2053" /> 
  </command>
- <!--  get Befehl eingefuegt von ceteris paribus 2010 GEHT NICHT
  --> 
- <command name="getPumpeStatusSolar3" protocmd="getaddr">
  <addr>6554</addr> 
  <len>2</len> 
- <!--  <unit>RT</unit> 
  --> 
  <unit>PP</unit> 
  <description>Ermittle den Status der Pumpe 3 Solar</description> 
  <device ID="2053" /> 
  </command>
- <!--  get Befehl eingefuegt von ceteris paribus 2010 GEHT NICHT
  --> 
- <command name="getPumpeStatusSolar4" protocmd="getaddr">
  <addr>6555</addr> 
  <len>2</len> 
  <unit>PP</unit> 
  <description>Ermittle den Status der Pumpe 4 Solar</description> 
  <device ID="2053" /> 
  </command>
- <!--  get Befehl eingefuegt von ceteris paribus 2010 
  --> 
- <command name="getTempSTSSOL" protocmd="getaddr">
  <addr>081A</addr> 
  <len>2</len> 
  <unit>UT</unit> 
  <description>Ermittle die Speichertemperatur in Grad C (NRF_TiefpassTemperaturwert_STSSOL)</description> 
  <device ID="2053" /> 
  <device ID="2098" /> 
  </command>
- <!--  MISCHER 
  --> 
- <command name="getMischerM1" protocmd="getaddr">
  <addr>254C</addr> 
  <len>2</len> 
  <unit>PP</unit> 
  <description>Ermittle Mischerposition M1</description> 
  <device ID="2053" /> 
  </command>
- <command name="getMischerM2" protocmd="getaddr">
  <addr>354C</addr> 
  <len>2</len> 
  <unit>PP</unit> 
  <description>Ermittle Mischerposition M2</description> 
  <device ID="2053" /> 
- <!--  Device 20CB eingefuegt von ceteris paribus 2010 
  --> 
- <device ID="20CB">
  <addr>354C</addr> 
  <len>2</len> 
  <unit>PP</unit> 
  </device>
  </command>
- <command name="getMischerM3" protocmd="getaddr">
  <addr>454C</addr> 
  <len>2</len> 
  <unit>PP</unit> 
  <description>Ermittle Mischerposition M3</description> 
  <device ID="2053" /> 
  </command>
- <!--  HEIZZEITEN 
  --> 
- <command name="getTimerM1Mo" protocmd="getaddr">
  <addr>2000</addr> 
  <len>8</len> 
  <unit>CT</unit> 
  <description>Schaltzeit Montag M1</description> 
  <device ID="2053" /> 
  </command>
- <command name="getTimerM1Di" protocmd="getaddr">
  <addr>2008</addr> 
  <len>8</len> 
  <unit>CT</unit> 
  <description>Schaltzeit Dienstag M1</description> 
  <device ID="2053" /> 
  </command>
- <command name="getTimerM1Mi" protocmd="getaddr">
  <addr>2010</addr> 
  <len>8</len> 
  <unit>CT</unit> 
  <description>Schaltzeit MIttwoch M1</description> 
  <device ID="2053" /> 
  </command>
- <command name="getTimerM1Do" protocmd="getaddr">
  <addr>2018</addr> 
  <len>8</len> 
  <unit>CT</unit> 
  <description>Schaltzeit Donnerstag M1</description> 
  <device ID="2053" /> 
  </command>
- <command name="getTimerM1Fr" protocmd="getaddr">
  <addr>2020</addr> 
  <len>8</len> 
  <unit>CT</unit> 
  <description>Schaltzeit Freitag M1</description> 
  <device ID="2053" /> 
  </command>
- <command name="getTimerM1Sa" protocmd="getaddr">
  <addr>2028</addr> 
  <len>8</len> 
  <unit>CT</unit> 
  <description>Schaltzeit Samstag M1</description> 
  <device ID="2053" /> 
  </command>
- <command name="getTimerM1So" protocmd="getaddr">
  <addr>2030</addr> 
  <len>8</len> 
  <unit>CT</unit> 
  <description>Schaltzeit Sonntag M1</description> 
  <device ID="2053" /> 
  </command>
- <command name="getTimerM2Mo" protocmd="getaddr">
  <addr>3000</addr> 
  <len>8</len> 
  <unit>CT</unit> 
  <description>Schaltzeit Montag M2</description> 
  <device ID="2053" /> 
  </command>
- <command name="getTimerM2Di" protocmd="getaddr">
  <addr>3008</addr> 
  <len>8</len> 
  <unit>CT</unit> 
  <description>Schaltzeit Dienstag M2</description> 
  <device ID="2053" /> 
  </command>
- <command name="getTimerM2Mi" protocmd="getaddr">
  <addr>3010</addr> 
  <len>8</len> 
  <unit>CT</unit> 
  <description>Schaltzeit Mittwoch M2</description> 
  <device ID="2053" /> 
  </command>
- <command name="getTimerM2Do" protocmd="getaddr">
  <addr>3018</addr> 
  <len>8</len> 
  <unit>CT</unit> 
  <description>Schaltzeit Donnerstag M2</description> 
  <device ID="2053" /> 
  </command>
- <command name="getTimerM2Fr" protocmd="getaddr">
  <addr>3020</addr> 
  <len>8</len> 
  <unit>CT</unit> 
  <description>Schaltzeit Freitag M2</description> 
  <device ID="2053" /> 
  </command>
- <command name="getTimerM2Sa" protocmd="getaddr">
  <addr>3028</addr> 
  <len>8</len> 
  <unit>CT</unit> 
  <description>Schaltzeit Samstag M2</description> 
  <device ID="2053" /> 
  </command>
- <command name="getTimerM2So" protocmd="getaddr">
  <addr>3030</addr> 
  <len>8</len> 
  <unit>CT</unit> 
  <description>Schaltzeit Sonntag M2</description> 
  <device ID="2053" /> 
  </command>
- <!--  WARMWASSERZEITEN 
  --> 
- <command name="getTimerWWMo" protocmd="getaddr">
  <addr>2100</addr> 
  <len>8</len> 
  <unit>CT</unit> 
  <description>Schaltzeit Montag Warmwasser</description> 
  <device ID="2053" /> 
  </command>
- <command name="getTimerWWDi" protocmd="getaddr">
  <addr>2108</addr> 
  <len>8</len> 
  <unit>CT</unit> 
  <description>Schaltzeit Dienstag Warmwasser</description> 
  <device ID="2053" /> 
  </command>
- <command name="getTimerWWMi" protocmd="getaddr">
  <addr>2110</addr> 
  <len>8</len> 
  <unit>CT</unit> 
  <description>Schaltzeit Mittwoch Warmwasser</description> 
  <device ID="2053" /> 
  </command>
- <command name="getTimerWWDo" protocmd="getaddr">
  <addr>2118</addr> 
  <len>8</len> 
  <unit>CT</unit> 
  <description>Schaltzeit Donnerstag Warmwasser</description> 
  <device ID="2053" /> 
  </command>
- <command name="getTimerWWFr" protocmd="getaddr">
  <addr>2120</addr> 
  <len>8</len> 
  <unit>CT</unit> 
  <description>Schaltzeit Freitag Warmwasser</description> 
  <device ID="2053" /> 
  </command>
- <command name="getTimerWWSa" protocmd="getaddr">
  <addr>2128</addr> 
  <len>8</len> 
  <unit>CT</unit> 
  <description>Schaltzeit Samstag Warmwasser</description> 
  <device ID="2053" /> 
  </command>
- <command name="getTimerWWSo" protocmd="getaddr">
  <addr>2130</addr> 
  <len>8</len> 
  <unit>CT</unit> 
  <description>Schaltzeit Sonntag Warmwasser</description> 
  <device ID="2053" /> 
  </command>
- <!--  ZIRKULATIONSZEITEN 
  --> 
- <command name="getTimerZirkuMo" protocmd="getaddr">
  <addr>2200</addr> 
  <len>8</len> 
  <unit>CT</unit> 
  <description>Schaltzeit Montag Zirku</description> 
  <device ID="2053" /> 
  </command>
- <command name="getTimerZirkuDi" protocmd="getaddr">
  <addr>2208</addr> 
  <len>8</len> 
  <unit>CT</unit> 
  <description>Schaltzeit Dienstag Zirku</description> 
  <device ID="2053" /> 
  </command>
- <command name="getTimerZirkuMi" protocmd="getaddr">
  <addr>2210</addr> 
  <len>8</len> 
  <unit>CT</unit> 
  <description>Schaltzeit Mittwoch Zirku</description> 
  <device ID="2053" /> 
  </command>
- <command name="getTimerZirkuDo" protocmd="getaddr">
  <addr>2218</addr> 
  <len>8</len> 
  <unit>CT</unit> 
  <description>Schaltzeit Donnerstag Zirku</description> 
  <device ID="2053" /> 
  </command>
- <command name="getTimerZirkuFr" protocmd="getaddr">
  <addr>2220</addr> 
  <len>8</len> 
  <unit>CT</unit> 
  <description>Schaltzeit Freitag Zirku</description> 
  <device ID="2053" /> 
  </command>
- <command name="getTimerZirkuSa" protocmd="getaddr">
  <addr>2228</addr> 
  <len>8</len> 
  <unit>CT</unit> 
  <description>Schaltzeit Samstag Zirku</description> 
  <device ID="2053" /> 
  </command>
- <command name="getTimerZirkuSo" protocmd="getaddr">
  <addr>2230</addr> 
  <len>8</len> 
  <unit>CT</unit> 
  <description>Schaltzeit Sonntag Zirku</description> 
  <device ID="2053" /> 
  </command>
- <!--  BETRIEBSARTEN 
  --> 
- <command name="getBetriebArtM1" protocmd="getaddr">
  <addr>2301</addr> 
  <len>1</len> 
  <unit>BA</unit> 
  <description>Betriebsart M1</description> 
- <device ID="2053">
  <addr>51</addr> 
  <len>1</len> 
  <unit>BA</unit> 
  </device>
  </command>
- <command name="getBetriebArt" protocmd="getaddr">
  <addr>2301</addr> 
  <len>1</len> 
  <unit>BA</unit> 
  <description>Betriebsart</description> 
  <device ID="2053" /> 
  </command>
- <command name="getBetriebArtM2" protocmd="getaddr">
  <addr>3301</addr> 
  <len>1</len> 
  <unit>BA</unit> 
  <description>Betriebsart M2</description> 
  <device ID="2053" /> 
  </command>
- <!--  SPARBETRIEB (SPARSCHWEIN) 
  --> 
- <command name="getBetriebSparM1" protocmd="getaddr">
  <addr>2302</addr> 
  <len>1</len> 
  <unit>RT</unit> 
  <description>Betriebsart Spar M1</description> 
  <device ID="2053" /> 
  </command>
- <command name="getBetriebSparM2" protocmd="getaddr">
  <addr>3302</addr> 
  <len>1</len> 
  <unit>RT</unit> 
  <description>Betriebsart Spar M2</description> 
  <device ID="2053" /> 
  </command>
- <!--  PARTYBETRIEB (Sektglas) 
  --> 
- <command name="getBetriebPartyM1" protocmd="getaddr">
  <addr>2303</addr> 
  <len>1</len> 
  <unit>RT</unit> 
  <description>Betriebsart Party M1</description> 
  <device ID="2053" /> 
  </command>
- <command name="getBetriebPartyM2" protocmd="getaddr">
  <addr>3303</addr> 
  <len>1</len> 
  <unit>RT</unit> 
  <description>Betriebsart Party M2</description> 
  <device ID="2053" /> 
  </command>
- <command name="getTempPartyM1" protocmd="getaddr">
  <addr>2308</addr> 
  <len>1</len> 
  <unit>ST</unit> 
  <description>Solltemperatur Partybetrieb M1</description> 
  <device ID="2053" /> 
  </command>
- <command name="setTempPartyM1" protocmd="setaddr">
  <addr>2308</addr> 
  <len>1</len> 
  <unit>ST</unit> 
  <description>Setze die Warmwassersolltemperatur Party M1 in Grad C</description> 
  <device ID="2053" /> 
  </command>
- <command name="getTempPartyM2" protocmd="getaddr">
  <addr>3308</addr> 
  <len>1</len> 
  <unit>ST</unit> 
  <description>Solltemperatur Partybetrieb M2</description> 
  <device ID="2053" /> 
  </command>
- <command name="setTempPartyM2" protocmd="setaddr">
  <addr>3308</addr> 
  <len>1</len> 
  <unit>ST</unit> 
  <description>Setze die Warmwassersolltemperatur Party M2 in Grad C</description> 
  <device ID="2053" /> 
  </command>
- <command name="setBetriebPartyM1" protocmd="setaddr">
  <addr>2303</addr> 
  <len>1</len> 
  <unit>RT</unit> 
  <description>Setze Betriebsart Party M1</description> 
  <device ID="2053" /> 
  </command>
- <command name="setBetriebPartyM2" protocmd="setaddr">
  <addr>3303</addr> 
  <len>1</len> 
  <unit>RT</unit> 
  <description>Setze Betriebsart Party M2</description> 
  <device ID="2053" /> 
  </command>
- <!--  EXTERNES SPERREN und ANFORDERN 
  --> 
- <command name="getEinflussExtSperren" protocmd="getaddr">
  <addr>5732</addr> 
  <len>1</len> 
  <unit>ST</unit> 
  <description>Einfluss Extern Sperren auf Pumpen</description> 
  </command>
- <command name="getEinflussExtAnforderung" protocmd="getaddr">
  <addr>5734</addr> 
  <len>1</len> 
  <unit>ST</unit> 
  <description>Einfluss Externe Anforderung auf Pumpen</description> 
  </command>
- <command name="getExtSperren" protocmd="getaddr">
  <addr>0A81</addr> 
  <len>1</len> 
  <unit>RT</unit> 
  <description>Ist Extern Sperren aktiv</description> 
  </command>
- <command name="getExtAnforderung" protocmd="getaddr">
  <addr>0A80</addr> 
  <len>1</len> 
  <unit>RT</unit> 
  <description>Ist Externe Anforderung aktiv</description> 
  </command>
- <!--  FROSTSCHUTZ 
  --> 
- <command name="getStatusFrostM1" protocmd="getaddr">
  <addr>2500</addr> 
  <len>1</len> 
  <unit>ST</unit> 
  <description>Status Frostwarnung M1</description> 
  <device ID="2053" /> 
  </command>
- <command name="getStatusFrostM2" protocmd="getaddr">
  <addr>3500</addr> 
  <len>1</len> 
  <unit>ST</unit> 
  <description>Status Frostwarnung M2</description> 
  <device ID="2053" /> 
  </command>
- <!--  STOERUNG 
  --> 
- <command name="getStatusStoerung" protocmd="getaddr">
  <addr>7579</addr> 
  <len>1</len> 
  <unit>RT</unit> 
  <description>Status Sammelstoerung</description> 
  <device ID="2053" /> 
  </command>
- <command name="getError0" protocmd="getaddr">
  <addr>7507</addr> 
  <len>9</len> 
  <unit>ES</unit> 
  <description>Ermittle Fehlerhistory Eintrag 1</description> 
- <device ID="2053">
  <addr>3F</addr> 
  <len>1</len> 
  <unit>ESG</unit> 
  </device>
  </command>
- <command name="getError1" protocmd="getaddr">
  <addr>7510</addr> 
  <len>9</len> 
  <unit>ES</unit> 
  <description>Ermittle Fehlerhistory Eintrag 2</description> 
  <device ID="2053" /> 
  </command>
- <command name="getError2" protocmd="getaddr">
  <addr>7519</addr> 
  <len>9</len> 
  <unit>ES</unit> 
  <description>Ermittle Fehlerhistory Eintrag 3</description> 
  <device ID="2053" /> 
  </command>
- <command name="getError3" protocmd="getaddr">
  <addr>7522</addr> 
  <len>9</len> 
  <unit>ES</unit> 
  <description>Ermittle Fehlerhistory Eintrag 4</description> 
  <device ID="2053" /> 
  </command>
- <command name="getError4" protocmd="getaddr">
  <addr>752B</addr> 
  <len>9</len> 
  <unit>ES</unit> 
  <description>Ermittle Fehlerhistory Eintrag 5</description> 
  <device ID="2053" /> 
  </command>
- <command name="getError5" protocmd="getaddr">
  <addr>7534</addr> 
  <len>9</len> 
  <unit>ES</unit> 
  <description>Ermittle Fehlerhistory Eintrag 6</description> 
  <device ID="2053" /> 
  </command>
- <command name="getError6" protocmd="getaddr">
  <addr>753D</addr> 
  <len>9</len> 
  <unit>ES</unit> 
  <description>Ermittle Fehlerhistory Eintrag 7</description> 
  <device ID="2053" /> 
  </command>
- <command name="getError7" protocmd="getaddr">
  <addr>7546</addr> 
  <len>9</len> 
  <unit>ES</unit> 
  <description>Ermittle Fehlerhistory Eintrag 8</description> 
  <device ID="2053" /> 
  </command>
- <command name="getError8" protocmd="getaddr">
  <addr>754F</addr> 
  <len>9</len> 
  <unit>ES</unit> 
  <description>Ermittle Fehlerhistory Eintrag 9</description> 
  <device ID="2053" /> 
  </command>
- <command name="getError9" protocmd="getaddr">
  <addr>7558</addr> 
  <len>9</len> 
  <unit>ES</unit> 
  <description>Ermittle Fehlerhistory Eintrag 10</description> 
  <device ID="2053" /> 
  </command>
- <!--  SYSTEMZEIT 
  --> 
- <command name="getSystemTime" protocmd="getaddr">
  <addr>088E</addr> 
  <len>8</len> 
  <unit>TI</unit> 
  <description>Ermittle Systemzeit</description> 
  <device ID="2053" /> 
  </command>
- <command name="setSystemTime" protocmd="setaddr">
  <addr>088E</addr> 
  <len>8</len> 
  <unit>TI</unit> 
  <description>Setze Systemzeit</description> 
  <device ID="2053" /> 
  </command>
- <!--  KONFIGURATION UND SETZEN 
  --> 
- <!--  K51_KonfiLaufIntUWP	0x7751
  --> 
- <command name="getIntUWPLaufStatus" protocmd="getaddr">
  <addr>7751</addr> 
  <len>1</len> 
  <unit>RT</unit> 
  <description>Ermittle den Status des Laufs der IntUWP</description> 
- <!--  K51_KonfiLaufIntUWP	0x7751 geraten,geprüft geht 0=dauernd 1=nur bei Brenneranforderung 
  --> 
  </command>
- <!--  set Befehl eingefuegt von ceteris paribus 21.01.2013 
  --> 
- <command name="setIntUWPLaufStatus" protocmd="setaddr">
  <addr>7751</addr> 
  <len>1</len> 
  <unit>RT</unit> 
  <description>Setze den Status des Laufs der IntUWP</description> 
- <!--  K51_KonfiLaufIntUWP	0x7751 geraten, geprüft geht 0=dauernd 1=nur bei Brenneranforderung 
  --> 
  </command>
- <!--  getK51 Befehl eingefuegt von ceteris paribus 22.01.2013 
  --> 
- <command name="getK51" protocmd="getaddr">
  <addr>7751</addr> 
  <len>1</len> 
  <unit>RT</unit> 
  <description>Ermittle den Status des Laufs der IntUWP</description> 
- <!--  K51_KonfiLaufIntUWP	0x7751 geraten,geprüft geht 0=dauernd 1=nur bei Brenneranforderung 
  --> 
  </command>
- <!--  setK51 Befehl eingefuegt von ceteris paribus 22.01.2013 
  --> 
- <command name="setK51" protocmd="setaddr">
  <addr>7751</addr> 
  <len>1</len> 
  <unit>RT</unit> 
  <description>Setze den Status des Laufs der IntUWP</description> 
- <!--  K51_KonfiLaufIntUWP	0x7751 geraten, geprüft geht 0=dauernd 1=nur bei Brenneranforderung 
  --> 
  </command>
- <!--  K90_KonfiZeitkonstAussentemperatur	90	0x6790
  --> 
- <!--  get Befehl eingefuegt von ceteris paribus 27.10.2012 
  --> 
- <command name="getK90" protocmd="getaddr">
  <addr>7790</addr> 
  <len>1</len> 
  <unit>CO</unit> 
  <description>Ermittle die Zeitkonstante Aussentemperatur</description> 
  </command>
- <!--  set Befehl eingefuegt von ceteris paribus 27.10.2012 
  --> 
- <command name="setK90" protocmd="setaddr">
  <addr>7790</addr> 
  <len>1</len> 
  <unit>CO</unit> 
  <description>Setze die Zeitkonstante Aussentemperatur</description> 
  </command>
- <!--  get Befehl sprechend eingefuegt von ceteris paribus 27.10.2012 
  --> 
- <command name="getDaempfung" protocmd="getaddr">
  <addr>7790</addr> 
  <len>1</len> 
  <unit>CO</unit> 
  <description>Ermittle die Zeitkonstante Aussentemperatur</description> 
  </command>
- <!--  set Befehl sprechend eingefuegt von ceteris paribus 27.10.2012 
  --> 
- <command name="setDaempfung" protocmd="setaddr">
  <addr>7790</addr> 
  <len>1</len> 
  <unit>CO</unit> 
  <description>Setze die Zeitkonstante Aussentemperatur</description> 
  </command>
- <!--  get Befehl eingefuegt von ceteris paribus 14.11.2011 
  --> 
- <command name="getKA3_KonfiFrostgrenzeM1_GWG" protocmd="getaddr">
  <addr>27A3</addr> 
  <len>1</len> 
  <unit>UTI</unit> 
  <description>Ermittle die eingestellte Frostgrenze A1M1</description> 
- <!--    Range GradCelsius  SByte 1 -9 15 
  --> 
  </command>
- <!--  set Befehl eingefuegt von ceteris paribus 14.11.2011 
  --> 
- <command name="setKA3_KonfiFrostgrenzeM1_GWG" protocmd="setaddr">
  <addr>27A3</addr> 
  <len>1</len> 
  <unit>UTI</unit> 
  <description>Setze die Frostgrenze A1M1</description> 
- <!--    Range GradCelsius  SByte 1 -9 15 
  --> 
  </command>
- <!--  get Befehl eingefuegt von ceteris paribus 26.09.2011 
  --> 
- <command name="getKA3_KonfiFrostgrenzeM2_GWG" protocmd="getaddr">
  <addr>37A3</addr> 
  <len>1</len> 
  <unit>UTI</unit> 
  <description>Ermittle die eingestellte Frostgrenze</description> 
- <!--    Range GradCelsius  SByte 1 -9 15 
  --> 
  </command>
- <!--  set Befehl eingefuegt von ceteris paribus 26.09.2011 
  --> 
- <command name="setKA3_KonfiFrostgrenzeM2_GWG" protocmd="setaddr">
  <addr>37A3</addr> 
  <len>1</len> 
  <unit>UTI</unit> 
  <description>Setze die Frostgrenze</description> 
- <!--    Range GradCelsius  SByte 1 -9 15 
  --> 
  </command>
- <!--  xxx Heizkreispumpenlogik-Funktion xxx 
  --> 
- <!--  eingefuegt von ceteris paribus 27.09.2011 
  --> 
- <!-- 
 
A5:0 	Ohne Heizkreispumpenlogik-Funktion

Mit Heizkreispumpenlogik−Funktion:
Heizkreispumpe aus, wenn
A5:1 	AT > RTSoll + 5 K
A5:2    AT > RTSoll + 4 K
A5:3    AT > RTSoll + 3 K
A5:4    AT > RTSoll + 2 K
A5:5    AT > RTSoll + 1 K
A5:6    AT = RTSoll
A5:7    AT > RTSoll -1 K
bis
A5:15   AT > RTSoll -9 K


  --> 
- <!--  get Befehl eingefuegt von ceteris paribus 27.09.2011 
  --> 
- <command name="getKA5" protocmd="getaddr">
  <addr>27A5</addr> 
  <len>1</len> 
  <description>Ermittle die Heizkreispumpenlogik−Funktion</description> 
- <!--    KA5_KonfSommersparSchaltschwelle A5 0x27a5  
  --> 
  </command>
- <!--  set Befehl eingefuegt von ceteris paribus 27.09.2011 
  --> 
- <command name="setKA5" protocmd="setaddr">
  <addr>27A5</addr> 
  <len>1</len> 
  <description>Setze die Heizkreispumpenlogik−Funktion</description> 
- <!--    KA5_KonfSommersparSchaltschwelle A5 0x27a5  1Byte
  --> 
  </command>
- <!--  get Befehl eingefuegt von ceteris paribus 27.09.2011 
  --> 
- <command name="getKA5M2" protocmd="getaddr">
  <addr>37A5</addr> 
  <len>1</len> 
  <description>Ermittle die Heizkreispumpenlogik−Funktion M2</description> 
- <!--    KA5_KonfSommersparSchaltschwelleM2 A5 0x37a5  
  --> 
  </command>
- <!--  set Befehl eingefuegt von ceteris paribus 27.09.2011 
  --> 
- <command name="setKA5M2" protocmd="setaddr">
  <addr>37A5</addr> 
  <len>1</len> 
  <description>Setze die Heizkreispumpenlogik−Funktion M2</description> 
- <!--    KA5_KonfSommersparSchaltschwelleM2 A5 0x37a5  1Byte
  --> 
  </command>
- <!--  get Befehl eingefuegt von ceteris paribus 27.09.2011 
  --> 
- <command name="getKA5M3" protocmd="getaddr">
  <addr>47A5</addr> 
  <len>1</len> 
  <description>Ermittle die Heizkreispumpenlogik−Funktion M3</description> 
- <!--    KA5_KonfSommersparSchaltschwelleM2 A5 0x47a5  
  --> 
  </command>
- <!--  set Befehl eingefuegt von ceteris paribus 27.09.2011 
  --> 
- <command name="setKA5M3" protocmd="setaddr">
  <addr>47A5</addr> 
  <len>1</len> 
  <description>Setze die Heizkreispumpenlogik−Funktion M3</description> 
- <!--    KA5_KonfSommersparSchaltschwelleM2 A5 0x47a5  1Byte
  --> 
  </command>
- <!--  xxx Konfiguration A6 Erweiterte Sparschaltung xxx 
  --> 
- <!--  KA6_KonfiAbsolutSommersparM2 A6                  0x37a6  
  --> 
- <!-- 
 
A6:36 Erweiterte Sparschaltung nicht aktiv
A6:5 bis A6:35 Erweiterte Sparschaltung aktiv, d.h. bei einem variabel einstellbaren Wert von
5 bis 35 ºC zuzüglich 1ºC werden Brenner und Heizkreispumpe ausgeschaltet.
Grundlage ist die gedämpfte Außentemperatur, die sich aus tatsächlicher Außentemperatur und
einer Zeitkonstanten, die das Auskühlen eines durchschnittlichen Gebäudes berücksichtigt, zusammensetzt.


  --> 
- <!--  get Befehl eingefuegt von ceteris paribus 27.09.2011 
  --> 
- <command name="getKA6" protocmd="getaddr">
  <addr>27A6</addr> 
  <len>1</len> 
  <unit>UTI</unit> 
  <description>Ermittle die AbsolutSommersparschaltung</description> 
- <!--    KA6_KonfiAbsolutSommerspar A6 0x27a6 
  --> 
  </command>
- <!--  set Befehl eingefuegt von ceteris paribus 27.09.2011 
  --> 
- <command name="setKA6" protocmd="setaddr">
  <addr>27A6</addr> 
  <len>1</len> 
  <unit>UTI</unit> 
  <description>Setze die AbsolutSommersparschaltung</description> 
- <!--    KA6_KonfiAbsolutSommerspar A6 0x27a6 
  --> 
  </command>
- <!--  get Befehl eingefuegt von ceteris paribus 27.09.2011 
  --> 
- <command name="getKA6M2" protocmd="getaddr">
  <addr>37A6</addr> 
  <len>1</len> 
  <unit>UTI</unit> 
  <description>Ermittle die AbsolutSommersparschaltung M2</description> 
- <!--    KA6_KonfiAbsolutSommersparM2 A6 0x37a6 
  --> 
  </command>
- <!--  set Befehl eingefuegt von ceteris paribus 27.09.2011 
  --> 
- <command name="setKA6M2" protocmd="setaddr">
  <addr>37A6</addr> 
  <len>1</len> 
  <unit>UTI</unit> 
  <description>Setze die AbsolutSommersparschaltung M2</description> 
- <!--    KA6_KonfiAbsolutSommersparM2 A6 0x37a6  1Byte
  --> 
  </command>
- <!--  get Befehl eingefuegt von ceteris paribus 27.09.2011 
  --> 
- <command name="getKA6M3" protocmd="getaddr">
  <addr>47A6</addr> 
  <len>1</len> 
  <unit>UTI</unit> 
  <description>Ermittle die AbsolutSommersparschaltung M3</description> 
- <!--    KA6_KonfiAbsolutSommersparM3 A6 0x47a6 
  --> 
  </command>
- <!--  set Befehl eingefuegt von ceteris paribus 27.09.2011 
  --> 
- <command name="setKA6M3" protocmd="setaddr">
  <addr>47A6</addr> 
  <len>1</len> 
  <unit>UTI</unit> 
  <description>Setze die AbsolutSommersparschaltung M3</description> 
- <!--    KA6_KonfiAbsolutSommersparM3 A6 0x47a6  1Byte 
  --> 
  </command>
- <!--  NEU 30.07.2014 
  --> 
- <!--  xxx Konfiguration A7 Mischersparfunktion(erweiterte Heizkreispumpenlogik) xxx 
  --> 
- <!--  KA7_KonfiAbsolutSommersparM2 A7                  0x37a7  
  --> 
- <!-- 
 
A7:0 Ohne Mischersparfunktion
(nur bei Regelung für witterungsgeführten Betrieb)
A7:1 Mit Mischersparfunktion(erweiterte Heizkreispumpenlogik):
Heizkreispumpe zusätzlich „Aus“,wenn der Mischer länger als 20 min zugefahren wurde. 
Heizpumpe „Ein“: Wenn der Mischer in Regelfunktion geht oder Bei Frostgefahr 

  --> 
- <!--  get Befehl eingefuegt von ceteris paribus 30.07.2014 
  --> 
- <command name="getKA7" protocmd="getaddr">
  <addr>27A7</addr> 
  <len>1</len> 
  <unit>ST</unit> 
  <description>Ermittle die Mischersparfunktion</description> 
- <!--    KA7_KonfiMischersparfunktionM2 0x27A7 (A7) Mischersparfunktion 
  --> 
  </command>
- <!--  set Befehl eingefuegt von ceteris paribus 30.07.2014 
  --> 
- <!--  Aufruf 'vclient -h 127.0.0.1:3002 -c 'setKA7 1|0' 
  --> 
- <command name="setKA7" protocmd="setaddr">
  <addr>27A7</addr> 
  <len>1</len> 
  <description>Setze die Mischersparfunktion</description> 
- <!--    KA7_KonfiMischersparfunktionM2 0x27A7 (A7) Mischersparfunktion 
  --> 
  </command>
- <!--  get Befehl eingefuegt von ceteris paribus 30.07.2014 
  --> 
- <command name="getKA7M2" protocmd="getaddr">
  <addr>37A7</addr> 
  <len>1</len> 
  <description>Ermittle die Mischersparfunktion M2</description> 
- <!--    KA7_KonfiMischersparfunktionM2 0x37A7	(A7) Mischersparfunktion M2 
  --> 
  </command>
- <!--  set Befehl eingefuegt von ceteris paribus 30.07.2014 
  --> 
- <!--  Aufruf 'vclient -h 127.0.0.1:3002 -c 'setKA7M2 1|0' 
  --> 
- <command name="setKA7M2" protocmd="setaddr">
  <addr>37A7</addr> 
  <len>1</len> 
  <description>Setze die Mischersparfunktion M2</description> 
- <!--    KA7_KonfiMischersparfunktionM2 0x37A7	(A7) Mischersparfunktion M2  1Byte
  --> 
  </command>
- <!--  get Befehl eingefuegt von ceteris paribus 30.07.2014 
  --> 
- <command name="getKA7M3" protocmd="getaddr">
  <addr>47A7</addr> 
  <len>1</len> 
  <description>Ermittle die Mischersparfunktion M3</description> 
- <!--    KA7_KonfiMischersparfunktionM3 0x47A7	(A7) Mischersparfunktion M3 
  --> 
  </command>
- <!--  set Befehl eingefuegt von ceteris paribus 30.07.2014 
  --> 
- <!--  Aufruf 'vclient -h 127.0.0.1:3002 -c 'setKA7M3 1|0' 
  --> 
- <command name="setKA7M3" protocmd="setaddr">
  <addr>47A7</addr> 
  <len>1</len> 
  <description>Setze die Mischersparfunktion M3</description> 
- <!--    KA7_KonfiMischersparfunktionM3 0x47A7	(A7) Mischersparfunktion M3  1Byte 
  --> 
  </command>
- <!--  Ende NEU 30.07.2014 
  --> 
- <!--  Auswirkung Mischer M auf interne Pumpe 
  --> 
- <!--  get Befehl eingefuegt von ceteris paribus 26.09.2011 ergänzt 30.07.2014 
  --> 
- <command name="getKA8" protocmd="getaddr">
  <addr>27A8</addr> 
  <len>1</len> 
  <unit>ST</unit> 
  <description>Ermittle Einfluss Mischer M1(A1) auf int UWP</description> 
- <!--   	0 ohne	1 M1 setzt Anforderung an Int.Pumpe - nur sinnvoll bei Mischerkreis 
  --> 
- <!--  wenn nicht vorhanden Rückgabewert -1.0 ? 
  --> 
  </command>
- <command name="getKonfiWirkung_aufPumpe" protocmd="getaddr">
  <addr>37A8</addr> 
  <len>1</len> 
  <unit>ST</unit> 
  <description>Ermittle Einfluss Mischer M2 auf int UWP</description> 
- <!--   	0 ohne	1 M2 setzt Anforderung an Int.Pumpe - nur sinnvoll bei Mischerkreis 
  --> 
- <!--  wenn nicht vorhanden Rückgabewert -1.0 ? 
  --> 
  </command>
- <command name="getKA8M2" protocmd="getaddr">
  <addr>37A8</addr> 
  <len>1</len> 
  <unit>ST</unit> 
  <description>Ermittle Einfluss Mischer M2 auf int UWP</description> 
- <!--   	0 ohne	1 M2 setzt Anforderung an Int.Pumpe - nur sinnvoll bei Mischerkreis 
  --> 
- <!--  wenn nicht vorhanden Rückgabewert -1.0 ? 
  --> 
  </command>
- <command name="getKA8M3" protocmd="getaddr">
  <addr>47A8</addr> 
  <len>1</len> 
  <unit>ST</unit> 
  <description>Ermittle Einfluss Mischer M3 auf int UWP</description> 
- <!--   	0 ohne	1 M3 setzt Anforderung an Int.Pumpe - nur sinnvoll bei Mischerkreis 
  --> 
- <!--  wenn nicht vorhanden Rückgabewert -1.0 ? 
  --> 
  </command>
- <!--  set Befehl eingefuegt von ceteris paribus 26.09.2011 , ergänzt 30.07.2014 
  --> 
- <command name="setKA8" protocmd="setaddr">
  <addr>27A8</addr> 
  <len>1</len> 
  <unit>ST</unit> 
  <description>Setze Einfluss Mischer M2 auf int UWP</description> 
- <!--   	0 ohne	1 M2 setzt Anforderung an Int.Pumpe - nur sinnvoll bei Mischerkreis 
  --> 
- <!--  wenn nicht vorhanden Rückgabewert -1.0 ? 
  --> 
  </command>
- <command name="setKonfiWirkung_aufPumpe" protocmd="setaddr">
  <addr>37A8</addr> 
  <len>1</len> 
  <unit>ST</unit> 
  <description>Setze Einfluss Mischer M2 auf int UWP</description> 
- <!--   	0 ohne	1 M2 setzt Anforderung an Int.Pumpe - nur sinnvoll bei Mischerkreis 
  --> 
- <!--  wenn nicht vorhanden Rückgabewert -1.0 
  --> 
  </command>
- <command name="setKA8M2" protocmd="setaddr">
  <addr>37A8</addr> 
  <len>1</len> 
  <unit>ST</unit> 
  <description>Setze Einfluss Mischer M2 auf int UWP</description> 
- <!--   	0 ohne	1 M2 setzt Anforderung an Int.Pumpe - nur sinnvoll bei Mischerkreis 
  --> 
- <!--  wenn nicht vorhanden Rückgabewert -1.0 
  --> 
  </command>
- <command name="setKA8M3" protocmd="setaddr">
  <addr>47A8</addr> 
  <len>1</len> 
  <unit>ST</unit> 
  <description>Setze Einfluss Mischer M3 auf int UWP</description> 
- <!--   	0 ohne	1 M3 setzt Anforderung an Int.Pumpe - nur sinnvoll bei Mischerkreis 
  --> 
- <!--  wenn nicht vorhanden Rückgabewert -1.0 
  --> 
  </command>
- <!--  set Befehl eingefuegt von ceteris paribus 14.01.2013 
  --> 
- <!--  KFA_KonfiUeberhoehungVTSollM2 0 ... 50 % 
  --> 
- <command name="setKFAM2" protocmd="setaddr">
  <addr>37fa</addr> 
  <len>1</len> 
  <unit>PR1</unit> 
  <description>Setze die KFA_KonfiUeberhoehungVTSollM2</description> 
- <!--   KFA_KonfiUeberhoehungVTSollM2 FA 6 0x37fa  1Byte 0 ... 50 %
  --> 
  </command>
- <command name="getKFAM2" protocmd="getaddr">
  <addr>37fa</addr> 
  <len>1</len> 
  <unit>PR1</unit> 
  <description>Ermittle die KFA_KonfiUeberhoehungVTSollM2</description> 
- <!--   KFA_KonfiUeberhoehungVTSollM2 FA 6 0x37fa  1Byte 0 ... 50 % 
  --> 
  </command>
- <!--  KFB_KonfiDauerUeberhoehungVTSollM2 0 ... 300 Minuten Bsp.30=60Minuten
  --> 
- <command name="setKFBM2" protocmd="setaddr">
  <addr>37fb</addr> 
  <len>1</len> 
  <unit>CO</unit> 
  <description>Setze die KFB_KonfiDauerUeberhoehungVTSollM2</description> 
- <!--   KFB_KonfiDauerUeberhoehungVTSollM2 FB 6 0x37fb  1Byte 0 ... 300 Minuten 
  --> 
  </command>
- <command name="getKFBM2" protocmd="getaddr">
  <addr>37fb</addr> 
  <len>1</len> 
  <unit>CO</unit> 
  <description>Ermittle die KFB_KonfiDauerUeberhoehungVTSollM2</description> 
- <!--   KFA_KonfiUeberhoehungVTSollM2 FA 6 0x37fb  1Byte 0 ... 300 Minuten CO weil > 255 sonst ST
  --> 
  </command>
- <command name="setPumpeStatusZirku" protocmd="setaddr">
  <addr>0846</addr> 
  <len>1</len> 
  <unit>RT</unit> 
  <description>Setze den Status der Zirkulationspumpe</description> 
- <device ID="2053">
  <addr>01</addr> 
  <len>1</len> 
  <bit>2</bit> 
  <precommand>getPumpeStatusZirku</precommand> 
  <unit>BA</unit> 
  </device>
  </command>
- <command name="setTimerM1Mo" protocmd="setaddr">
  <addr>2000</addr> 
  <len>8</len> 
  <unit>CT</unit> 
  <description>Schaltzeit Montag M1</description> 
  <device ID="2053" /> 
  </command>
- <command name="setTimerM1Di" protocmd="setaddr">
  <addr>2008</addr> 
  <len>8</len> 
  <unit>CT</unit> 
  <description>Schaltzeit Dienstag M1</description> 
  <device ID="2053" /> 
  </command>
- <command name="setTimerM1Mi" protocmd="setaddr">
  <addr>2010</addr> 
  <len>8</len> 
  <unit>CT</unit> 
  <description>Schaltzeit Mittwoch M1</description> 
  <device ID="2053" /> 
  </command>
- <command name="setTimerM1Do" protocmd="setaddr">
  <addr>2018</addr> 
  <len>8</len> 
  <unit>CT</unit> 
  <description>Schaltzeit Donnerstag M1</description> 
  <device ID="2053" /> 
  </command>
- <command name="setTimerM1Fr" protocmd="setaddr">
  <addr>2020</addr> 
  <len>8</len> 
  <unit>CT</unit> 
  <description>Schaltzeit Freitag M1</description> 
  <device ID="2053" /> 
  </command>
- <command name="setTimerM1Sa" protocmd="setaddr">
  <addr>2028</addr> 
  <len>8</len> 
  <unit>CT</unit> 
  <description>Schaltzeit Samstag M1</description> 
  <device ID="2053" /> 
  </command>
- <command name="setTimerM1So" protocmd="setaddr">
  <addr>2030</addr> 
  <len>8</len> 
  <unit>CT</unit> 
  <description>Schaltzeit Sonntag M1</description> 
  <device ID="2053" /> 
  </command>
- <command name="setTimerM2Mo" protocmd="setaddr">
  <addr>3000</addr> 
  <len>8</len> 
  <unit>CT</unit> 
  <description>Schaltzeit Montag M2</description> 
  <device ID="2053" /> 
  </command>
- <command name="setTimerM2Di" protocmd="setaddr">
  <addr>3008</addr> 
  <len>8</len> 
  <unit>CT</unit> 
  <description>Schaltzeit Dienstag M2</description> 
  <device ID="2053" /> 
  </command>
- <command name="setTimerM2Mi" protocmd="setaddr">
  <addr>3010</addr> 
  <len>8</len> 
  <unit>CT</unit> 
  <description>Schaltzeit Mittwoch M2</description> 
  <device ID="2053" /> 
  </command>
- <command name="setTimerM2Do" protocmd="setaddr">
  <addr>3018</addr> 
  <len>8</len> 
  <unit>CT</unit> 
  <description>Schaltzeit Donnerstag M2</description> 
  <device ID="2053" /> 
  </command>
- <command name="setTimerM2Fr" protocmd="setaddr">
  <addr>3020</addr> 
  <len>8</len> 
  <unit>CT</unit> 
  <description>Schaltzeit Freitag M2</description> 
  <device ID="2053" /> 
  </command>
- <command name="setTimerM2Sa" protocmd="setaddr">
  <addr>3028</addr> 
  <len>8</len> 
  <unit>CT</unit> 
  <description>Schaltzeit Samstag M2</description> 
  <device ID="2053" /> 
  </command>
- <command name="setTimerM2So" protocmd="setaddr">
  <addr>3030</addr> 
  <len>8</len> 
  <unit>CT</unit> 
  <description>Schaltzeit Sonntag M2</description> 
  <device ID="2053" /> 
  </command>
- <command name="setTimerWWMo" protocmd="setaddr">
  <addr>2100</addr> 
  <len>8</len> 
  <unit>CT</unit> 
  <description>Schaltzeit Montag Warmwasser</description> 
  <device ID="2053" /> 
  </command>
- <command name="setTimerWWDi" protocmd="setaddr">
  <addr>2108</addr> 
  <len>8</len> 
  <unit>CT</unit> 
  <description>Schaltzeit Dienstag Warmwasser</description> 
  <device ID="2053" /> 
  </command>
- <command name="setTimerWWMi" protocmd="setaddr">
  <addr>2110</addr> 
  <len>8</len> 
  <unit>CT</unit> 
  <description>Schaltzeit Mittwoch Warmwasser</description> 
  <device ID="2053" /> 
  </command>
- <command name="setTimerWWDo" protocmd="setaddr">
  <addr>2118</addr> 
  <len>8</len> 
  <unit>CT</unit> 
  <description>Schaltzeit Donnerstag Warmwasser</description> 
  <device ID="2053" /> 
  </command>
- <command name="setTimerWWFr" protocmd="setaddr">
  <addr>2120</addr> 
  <len>8</len> 
  <unit>CT</unit> 
  <description>Schaltzeit Freitag Warmwasser</description> 
  <device ID="2053" /> 
  </command>
- <command name="setTimerWWSa" protocmd="setaddr">
  <addr>2128</addr> 
  <len>8</len> 
  <unit>CT</unit> 
  <description>Schaltzeit Samstag Warmwasser</description> 
  <device ID="2053" /> 
  </command>
- <command name="setTimerWWSo" protocmd="setaddr">
  <addr>2130</addr> 
  <len>8</len> 
  <unit>CT</unit> 
  <description>Schaltzeit Sonntag Warmwasser</description> 
  <device ID="2053" /> 
  </command>
- <command name="setTimerZirkuMo" protocmd="setaddr">
  <addr>2200</addr> 
  <len>8</len> 
  <unit>CT</unit> 
  <description>Schaltzeit Montag Zirku</description> 
  <device ID="2053" /> 
  </command>
- <command name="setTimerZirkuDi" protocmd="setaddr">
  <addr>2208</addr> 
  <len>8</len> 
  <unit>CT</unit> 
  <description>Schaltzeit Dienstag Zirku</description> 
  <device ID="2053" /> 
  </command>
- <command name="setTimerZirkuMi" protocmd="setaddr">
  <addr>2210</addr> 
  <len>8</len> 
  <unit>CT</unit> 
  <description>Schaltzeit Mittwoch Zirku</description> 
  <device ID="2053" /> 
  </command>
- <command name="setTimerZirkuDo" protocmd="setaddr">
  <addr>2218</addr> 
  <len>8</len> 
  <unit>CT</unit> 
  <description>Schaltzeit Donnerstag Zirku</description> 
  <device ID="2053" /> 
  </command>
- <command name="setTimerZirkuFr" protocmd="setaddr">
  <addr>2220</addr> 
  <len>8</len> 
  <unit>CT</unit> 
  <description>Schaltzeit Freitag Zirku</description> 
  <device ID="2053" /> 
  </command>
- <command name="setTimerZirkuSa" protocmd="setaddr">
  <addr>2228</addr> 
  <len>8</len> 
  <unit>CT</unit> 
  <description>Schaltzeit Samstag Zirku</description> 
  <device ID="2053" /> 
  </command>
- <command name="setTimerZirkuSo" protocmd="setaddr">
  <addr>2230</addr> 
  <len>8</len> 
  <unit>CT</unit> 
  <description>Schaltzeit Sonntag Zirku</description> 
  <device ID="2053" /> 
  </command>
- <command name="getDevType" protocmd="getaddr">
  <addr>00F8</addr> 
  <len>2</len> 
  <unit>DT</unit> 
  <description>Ermittle Device Typ der Anlage</description> 
  </command>
- <!--  Befehl eingefuegt von ceteris paribus 27.10.2011 
  --> 
- <command name="getAnlagenschema" protocmd="getaddr">
  <addr>7700</addr> 
  <len>2</len> 
  <unit>ST</unit> 
  <description>Ermittle das Anlagenschema</description> 
- <!-- 
 K00_KonfiAnlagenschemaGWG_W	
(00) Heizkreis-Warmwasserschema	
Adresse 7700
1 A1 | 1
2 A1 + WW | 2
3 M2 | 3
4 M2 + WW | 4
5 A1 + M2 | 5
6 A1 + M2 + WW | 6


  --> 
  </command>
- <command name="init" protocmd="getaddr">
  <description>Inintialisierung</description> 
- <device ID="2053" protocmd="init">
  <addr>dummy</addr> 
  </device>
  </command>
- <command name="get" protocmd="gettestaddr">
  <description>Testabfrage, Adresse eingeben</description> 
- <!--  Aufruf im batch mit get ## ## also z.B. get 39 00 -UND NICHT 3900 
  --> 
- <!--  device 20CB eingefuegt von ceteris paribus 2010 
  --> 
- <device ID="20CB">
  <addr>dummy</addr> 
  <len>2</len> 
  </device>
- <device ID="2053">
  <addr>dummy</addr> 
  <len>1</len> 
  </device>
- <device ID="2094">
  <addr>dummy</addr> 
  <len>2</len> 
  </device>
  </command>
- <command name="vget" protocmd="getvtestaddr">
  <description>Testabfrage, Virtuelle Adresse eingeben</description> 
- <device ID="2053">
  <addr>dummy</addr> 
  <len>1</len> 
  </device>
  </command>
- <command name="bget" protocmd="getbtestaddr">
  <description>Testabfrage, Bedienteil Adresse eingeben</description> 
- <device ID="2053">
  <addr>dummy</addr> 
  <len>1</len> 
  </device>
  </command>
- <command name="pget" protocmd="getptestaddr">
  <description>Testabfrage, Port Adresse eingeben</description> 
- <device ID="2053">
  <addr>dummy</addr> 
  <len>1</len> 
  </device>
  </command>
- <command name="eget" protocmd="getetestaddr">
  <description>Testabfrage, EEProm Adresse eingeben</description> 
- <device ID="2053">
  <addr>dummy</addr> 
  <len>1</len> 
  </device>
  </command>
- <command name="xget" protocmd="getxtestaddr">
  <description>Testabfrage, XRAM Adresse eingeben</description> 
- <device ID="2053">
  <addr>dummy</addr> 
  <len>1</len> 
  </device>
  </command>
- <command name="kmget" protocmd="getkmtestaddr">
  <description>Testabfrage, KM-Bus EEProm Adresse eingeben</description> 
- <device ID="2053">
  <addr>dummy</addr> 
  <len>1</len> 
  </device>
  </command>
- <command name="getExtBA" protocmd="getxaddr">
  <description>Ermittle Zustand der externen Betriebsartenumschaltung</description> 
- <device ID="2053">
  <addr>00</addr> 
  <len>1</len> 
  <bit>0</bit> 
  <unit>BST</unit> 
  </device>
  </command>
- <command name="getPumpeSollM1" protocmd="getaddr">
  <description>Ermittle Solldrehzahl Pumpe M1</description> 
- <device ID="2053">
  <addr>B0</addr> 
  <len>1</len> 
  <unit>PR1</unit> 
  </device>
  </command>
- <command name="getVentilStatus" protocmd="getpaddr">
  <description>Ermittle Zustand Umschaltventil WW/Heizen</description> 
- <device ID="2053">
  <addr>01</addr> 
  <len>1</len> 
  <bit>1</bit> 
  <unit>BST</unit> 
  </device>
  </command>
- <!--  Befehl 'getVentilStatus' sprechend analog Viessmann geaendert und ergaenzt von ceteris paribus 2010 
  --> 
- <command name="getUmschaltventil" protocmd="getaddr">
  <addr>0A10</addr> 
  <len>1</len> 
  <unit>USV</unit> 
  <description>Ermittle den Status des Umschaltventils WW/Heizen</description> 
  <device ID="2098" /> 
- <device ID="2053">
  <addr>01</addr> 
  <len>1</len> 
  <bit>1</bit> 
  <unit>BST</unit> 
  </device>
  </command>
- <!--  Befehl 'setVentilStatus' sprechend analog Viessmann geaendert und ergaenzt von ceteris paribus 2012 
  --> 
- <command name="setUmschaltventil" protocmd="setaddr">
  <addr>0A10</addr> 
  <len>1</len> 
  <unit>USV</unit> 
  <description>Setze den Status des Umschaltventils WW/Heizen</description> 
  <device ID="2098" /> 
- <device ID="2053">
  <addr>01</addr> 
  <len>1</len> 
  <bit>1</bit> 
  <unit>BST</unit> 
  </device>
  </command>
- <command name="getHKPTyp" protocmd="geteaddr">
  <description>Ermittle Typ der Heizkreispumpe</description> 
- <device ID="2053">
  <addr>05</addr> 
  <len>1</len> 
  <bit>5</bit> 
  <unit>HKT</unit> 
  </device>
  </command>
- <command name="getTempRueck" protocmd="getaddr">
  <description>Ermittle die Rueckauftemepratur</description> 
- <device ID="2053">
  <addr>44</addr> 
  <len>1</len> 
  <bit>5</bit> 
  <unit>UT1</unit> 
  </device>
  </command>
  </commands>
  </vito>
7. Achte auf die retry- und timeout Werte rund um getaddr. Hier scheint vclient höhere Latenzzeiten als die commando-oberfläche vcontrol zu habe. Erst durch Erhöhung dieser Werte funktionierte es bei mir mit vclient.

8. Manchmal verschluckt sich vclient trotzdem noch bei den Befehlen, dann bekommt man eine Fehlermeldung über stdout. DIese muss ich demnächst noch abfangen und den Befehl z.B. neu absetzen.

Viel Erfolg.

painless.

Regensburger
Beiträge: 18
Registriert: 03.03.2013, 17:28

Re: Viessmann Heizung steuern

Beitrag von Regensburger » 19.10.2014, 10:47

Hallo painless,

vielen herzlichen Dank, das ist schon sehr hilfreich. So ähnlich habe ich das auch geplant. Will aber die Daten der Heizung auch monitoren. Ich hoffe, dass vclient stabil genug dafür ist.
Habe eine Vitronic 200 mit KW Protokoll. Kennung 20CB.

Viele Grüße
Raimund

Antworten

Zurück zu „Softwareentwicklung für die HomeMatic CCU“