Interfacing Vitovalor 300-P with a Raspberry Pi

I want to integrate my new Viessmann Vitovalor 300-P fuel cell heating into my home automation. For this, I use the Optolink interface, vcontrold from the openv community, and create my own configuration files from several sources.

If you want to skip the introduction bla-bla, you may directly go to

Disclaimer: Interfacing with your heating system as described here is happening at your own risk! There is no official support for this by Viessmann, and the methods shown here may potentially damage your device!

My New Fuel Cell Heating

Since a few weeks its in my cellar: A brand new heating that sports a fuel cell module! Top notch! 🙂 Its a Vitovalor 300-P by Viessmann. And of course I want to integrate this into my home automation! The heating comes with a LAN interface which connects it to Viessmann’s cloud service. This already allows me to use a smartphone to control the heating from abroad, and also offers a very detailed glance into every system parameter and measurement from the vitodata-website (very cool!), but there is no API to use for my own interfacing and purposes.

However, the heating features an OptoLink interface, which is basically an infrared (860 nm receiver, 880 nm sender) serial interface with a standard UART, using 4800 baud, 8bits, even parity and two stop bits with no handshake (4800,8,E,2). And since this is kind of a standard interface for nearly any Viessman heating since at least a decade, other enthusiasts have already done all the hard work to figure out how to interface with such heatings – mainly the openv project (mostly in German – sorry). Many, many thanks for their efforts and the great wiki pages and software!

OptoLink
The Optolink interface (Left of the “V” shaped gap: receiving side, right sending side)

There exists a simple and cheap circuit for interfacing with Raspberry Pi’s UART, and the vcontrold daemon that does all the communication with the heating, providing a concise command line interface via telnet for access from other programs. Really good work!

So, what remains to be done? Well, while OptoLink is kind of established, each and every Viessmann heating speaks its own dialect. vcontrold accepts an XML file that defines all commands the individual heating model understands; and here’s my todo: I need to work out the specifics of Vitovalor 300-P with its Vitotronic 200 RF HO1E control unit. Many commands are identical across a lot of heatings, but others are behaving differently for each model or exist just for one or a few models.

But first:

Building the OptoLink Connector

You can of course buy an original Viessmann Optolink cable, which does include an UART to USB bridge, but that sets you back by about 60 € – and where’s the fun? So I decided to build one myself, following the instructions for the Raspberry Pi UART interface from openv.

There is mainly one challange when building your own interface: The “V”. The V-shaped gap between sender and receiver is the only mechanical reference, and the original cable has a matching V-shaped protrusion to fit into the gap (Click here for an image of the original cable and the V shaped protrusion). Of course the best way would to 3D-print your own (and people have), but since I lack a 3D printer, I had to get creative.

Optolink V
Detail: The Optolink and the V shaped gap

First, I was lucky to find a plastic housing that nearly perfectly fit into the rectangular hole in front of the interface: A box that contained spring bars for wrist watches. It measures about 24 × 36 × 6 mm, which is slightly too broad, so you’ve to cut away the left and right flank. Perhaps you can find one at your local watchmakers or jewelers shop if you face the same task.

The Box
The spring bar box

The transparant housing allowed to use a permanent marker to copy the V shape onto the plastic. Along these lines, I applied hot glue (several layers – 3D printing for the poor 🙂 ), which then, using a sharp paper knife, I cut into the required V shape. Worked nicely on first try! The plastic gets rather scratched, but who cares…

V shape in hot glue
V shape in hot glue

Next, the openv article warns you that, if not properly shielded, there may be cross-talk between sender and receiver. So I added heat shrink tube to the holes for the receiver and sender, fixating it with superglue (The image only shows one hole covered, but the second also received shrink tube. In the image you can also see the cut away flanks of the box that otherwise would make it too broad to fit).

Heat shrink tube as optical barrier
Heat shrink tube as optical barrier

Openv strongly suggests a specific type of photo transistor and IR emitter diode, since others had problems with stray light or insufficient light transmission. While I was able to get the exact photo transistor, the IR LED is out of production. I searched for an IR LED with similar optical characteristics, and found IRL 81 A, wich as a side effect is much easier to fit into the confined space due to its form factor (click here for an image).

This LED requires a slightly different resistor. Also, because I had some issues due to the very long cable (about 10 m) I attached, I reduced the base resistor at the LED driver. So, here’s the part list and approximate cost:

Parts list

2 10 kΩ resistor 0.01 €
1 1 kΩ resistor 0.01 € Instead of one 10 kΩ resistor in the original design
1 100 Ω resistor 0.01 € Instead of 180 Ω resistor in original design
1 BC547B transistor 0.20 €
1 2N3906 transistor 0.05 €
1 IRL 81 A infrared LED 0.60 € As replacement for the original SFH487-2
1 SFH 309 FA infrared photo transistor 0.25 €
1 100 nF capacitor 0.05 €
1 100 μF electrolytic capacitor 0.20 € I first tried without this, but voltage drop was too strong with the long cable. I recommend to include this cap.
hole matrix board, hot glue, 4 wire telephone cable 2.- € Price estimated, had this lying around. The cable does not need to be shielded – 4800 baud, that’s about 10 kHz signal – easy for nearly any cable.
# Part Price each (ca.) Remarks

About 3.50 € as compared to 60.- € for the genuine article – a bargain 🙂

The circuit

OptoLink Circuit
The OptoLink connector’s circuit with my changes

Assembling it All

There is not much space for all the parts to go into. Other makers have just used larger housings, but the Vitovalor has a sliding door in front of the Optolink, and since I later want to close it in the end (hiding my ugly result…), I lacked that freedom. So I cut a small strip of hole matrix board that fits exactly into the long side of the box:

Baseplate
Hole matrix strip

Putting two wires into one hole and in three cases using “free flying soldering”, I was able to cram everything onto this:

Flying Circuit
The circuit assembled (at this time without 100 μF cap and wrong LED resistor)

Not the tidiest bit of circuit, but works! However, in retrospect I might have fared better cutting a second strip, putting one on the top of the box, the other at the bottom. Might have made the alignment of the optical parts easier. If you have the possibility to etch a PCB, I’d recommend to go for this SMD version – is much nicer!

Finally, I cut a hole into the box for the cable, attached it to the circuit, crammed everything into the box and closed the box with tape at the edges. Then I attached the whole thing into the Optolink at the heating:

Interface in Place
The interface assembled and in place

Works like a charm!

At the Raspberry, the pin assignments are:

Circuit Raspberry Pi Pin
3.3 V 1
GND 6
TXD 8
RXD 10

Setting up vcontrold on the Raspberry Pi

I was tempted to just refer to the openv wiki page, but since it is in German, I give the translated instructions here – as tested by me with Raspbian Stretch.

Prerequisites

You’ll need a few packages:

Set up Serial Port

Since Raspberry Pi 3 the serial port assignments changed a bit. The “real” UART is assigned/reserved for Bluetooth. However, we need it for the interface. Also, we do not want the linux console to clutter the interface.

/boot/config.txt should contain these two lines:

and /boot/cmdline.txt should not contain console=serial0,115200 (or something similar). A reboot is required for this taking effect.

A more complete explanation can be found on this Raspberry foundation page.

Getting the Source Code, Compiling, Installation

This just takes a few minutes – no need to cross compile on a more powerful PC.

After that, in /usr/local/bin there should be vcontrold, vclient and vsim.

Create and Edit /etc/vcontrold.xml

First, create a config directory and copy the template config files from the source into it:

Modify the unix section of /etc/vcontrold.xml:

In section tty, change the interface to the Raspberry UART /dev/ttyAMA0.

In section net, add the IP ranges or addresses you’d like to access the data from.

Insert the device ID for your heating – the Vitovalor is 20E3. Other IDs you may find here (old Wiki page – will soon migrate). If your ID is not in the list and in case your heating also comes with access to the vitodata-server, go there to the heating, choose “Diagnostics”, open the device group and look for the ZE-ID. This is E3 for the Vitovalor, which means 20E3 as vcontrold ID.

Test

Try if the daemon comes up properly using vcontrold -n. This should open a telnet server on port 3002. Otherwise look into /tmp/vcontrold.log – this is often helpful for troubleshooting, also later when trying to figure out the commands.

Init-Script for vcontrold Autostart on Boot

Copy this script below to /etc/init.d/vcontrol – this is just copied from the opnev wiki page – all credits go there, or to be more precise to Michael Pucher (thanks a lot!). Then register the script:

And that’s it.

Using vcontrold

To access the heating via vcontrold, connect via telnet:

telnet localhost 3002

You’ll see a prompt. help will show you all available commands – in German… But the most interesting is the command commands – it shows all commands that you can send to the heating. Be aware that this is all at your own risk! As far as I understand, most of all is reverse engineered, and thus prone to errors that – worst case – might damage your heating! There is no official Viessmann support for the openv/vcontrold project.

Creating the Vitovalor-specific XML for vcontrold

The protocols implemented by the Viessmann heatings use address-value pairs. Some are read-only, others allow read/write operations. The vito.xml file contains the necessary definitions of addresses, values and units, along with the commands to get or set the values. The units vito.xml refers to are then defined in vcontrold.xml. While many addresses are the same across many Viessmann models, some are model-specific, or – worst case – have different meanings with different models.

Data Sources

It is not that easy to come by the addresses for a specific model. The following sources I used:

  • The vito.xml files available in the openv pages (currently the old links, migration in progress):
  • Coding lists from the manual and vitodata
  • The datapoint lists for Vitogate 200 KNX – you must try to find someone at Viessmann who is willing to provide them. The page refers you to your local Viessmann sales agency, and indeed I got my list from them. Even if you do not use the Vitogate, the datapoint lists contain the right addresses.
  • Educated guesses (there are some repeating patterns in the addresses which allow you to guess others) and trial-and-error

Totally not helpful was the Viessmann Community – the general idea is nice, but the people there are really reluctant to offer anything beyond simple information.

Educated Guessing of Addresses

There are some repeating patterns in the addresses with regard to the heat circuits/mixers. Often the first byte is indicating the heat circuit, the second the actual function. As an example:

0x2323 allows you to get/set the operation mode for heat circuit 1.
0x3323 does the same for heat circuit 2, and
0x4323 for heat circuit 3.

So, whenever you stumble across a working address 0x23??, it is worth to also try 0x33?? and 0x43??.

Here’s my list of “first bytes” I worked out for the three heat circuits:

Heat circuit First bytes
A1M1 or M1 0x20, 0x23, 0x25, 0x27, 0x29
M2 0x30, 0x33, 0x35, 0x37, 0x39
M3 0x40, 0x43, 0x45, 0x47, 0x49

Then, there are sometimes patterns in the second byte for heat circuits, and it seems to me that they are identical within the range of a first bye. An example:

0x0896, 0x0898 and 0x089A get the room temperatures for heat circuit 1, 2 and 3. And:
0x080A, 0x080C and 0x080E get the flow line temperatures for heat circuit 1, 2 and 3.

So I assumed (successfully) that within 0x08 any heat-circuit specific second byte may be used for the next heat circuit by adding an offset of 2 to it.

Here are the offsets I figured out (to be taken with a grain of salt – the statistics behind these assumptions are weak):

First byte Offset
0x08 2
0x76 2
0xA4 64 (Hex: 40)

Addresses Derived from Coding Lists

Both in the operation manual and in the vitodata server there are listings of the “Codings”. These give a single byte value in hex, so the aussmption is that these are part of an address. Matching a few addresses from existing vito.xml and the manual seem to confirm this. It looks like

  • Codings that are not connected to a heat circuit go by address 0x77XX, where XX is the coding byte
  • Codings that are assigned to heat circuits go by the addresses 0x27XX, 0x37XX and 0x47XX for heat circuit 1, 2 and 3, where again XX is the coding byte

I am currently testing this assumption, will update here as soon as I’m clear about it.

Short message inbetween (Nov. 28th): 0x27/37/47xx work all, 0x77 partially – still investigating. Might be just unit conversion.

Completeness Check

The vitodata server shows zillions of parameters that the heating provides upon request. My guess is that all these parameters should be available via Optolink also. This said, I am far away from being complete, and most likely will never be.

For me, completeness will be achieved, if I can set all temperatures, set all operation modes, and read all temperatures, operation hours and power values. Especially the enrgy manager, which provides real-time data of my power consumption and production, I want to read out with high frequency.

When it comes to involved devices, in my case these components are in one way or another part of the data acquisition:

  • Vitovalor 300-P (obviously)
  • Vitotronic 200 RF (type HO1E)
  • Vitocom 300 LAN3
  • Saia PCD ALE3 M-BUS energy”manager” (Basically a two-way power meter)

All parts are the standard setup of the Vitovalor 300-P, i.e. if you get one, you should have the same setup.

Results

Below you’ll find my XML files – also vcontrold.xml needed adjustment for missing units. This is currently work in progress, and while this sentence is here, I am constantly improving the files. Again: Use these files at your own rsik! Currently I’d strongly recommend to only use the get commands, not the set commands, which may be totally wrong in some cases.

Known Issues

  • Effective target temperatures currently yield nonsense results (unit conversion?)
  • External room temperatures are unchecked because I don’t have external temperature sensors in my rooms
  • Solar values are unchecked since I have no solar devices
  • Modulation degree and relative device power are yet unchecked
  • All set functions untested

Download Links

Last update: Nov. 19th, 2017

Appendix: Currently Implemented Functions

Function Description
getOpModeA1M1 Get operation mode of the heat circuit 1.
setOpModeA1M1 Set operation mode of the heat circuit 1.
getRequestedRoomTnormalA1M1 Get normal room temperature target for heat circuit 1. (Range: 3..37°C)
setRequestedRoomTnormalA1M1 Set normal room temperature target for heat circuit 1. (Range: 3..37°C)
getRequestedRoomTreducedA1M1 Get reduced room temperature target for heat circuit 1. (Range: 3..37°C)
setRequestedRoomTreducedA1M1 Set reduced room temperature target for heat circuit 1. (Range: 3..37°C)
getPartyModeA1M1 Get party mode state for heat circuit 1
setPartyModeA1M1 Set party mode state for heat circuit 1
getSavingsModeA1M1 Get savings mode state for heat circuit 1
setSavingsModeA1M1 Set savings mode state for heat circuit 1
getOpModeM2 Get operation mode of the heat circuit 2.
setOpModeM2 Set operation mode of the heat circuit 2.
getRequestedRoomTnormalM2 Get normal room temperature target for heat circuit 2. (Range: 3..37°C)
setRequestedRoomTnormalM2 Set normal room temperature target for heat circuit 2. (Range: 3..37°C)
getRequestedRoomTreducedM2 Get reduced room temperature target for heat circuit 2. (Range: 3..37°C)
setRequestedRoomTreducedM2 Set reduced room temperature target for heat circuit 2. (Range: 3..37°C)
getPartyModeM2 Get party mode state for heat circuit 2
setPartyModeM2 Set party mode state for heat circuit 2
getSavingsModeM2 Get savings mode state for heat circuit 2
setSavingsModeM2 Set savings mode state for heat circuit 2
getOpModeM3 Get operation mode of the heat circuit 3.
setOpModeM3 Set operation mode of the heat circuit 3.
getRequestedRoomTnormalM3 Get normal room temperature target for heat circuit 3. (Range: 3..37°C)
setRequestedRoomTnormalM3 Set normal room temperature target for heat circuit 3. (Range: 3..37°C)
getRequestedRoomTreducedM3 Get reduced room temperature target for heat circuit 3. (Range: 3..37°C)
setRequestedRoomTreducedM3 Set reduced room temperature target for heat circuit 3. (Range: 3..37°C)
getPartyModeM3 Get party mode state for heat circuit 3
setPartyModeM3 Set party mode state for heat circuit 3
getSavingsModeM3 Get savings mode state for heat circuit 3
setSavingsModeM3 Set savings mode state for heat circuit 3
getToutdoor_fcu Get outdoor temperature [°C] (FCU data group)
getFCU_Hop Get operation hours fuel cell unit
getRatioPconsumptionP_FCU Get current ratio between electric power consumption and electric power of the FCU [%]
getRatioPproviderP_FCU Get current ratio between electric power acquisition from service provider and electric power of the FCU [%]
getActiveBoilerTtarget Get active boiler target temperature [°C]
getDeviceCurrentPrel Get current device relative power production [%]
getBoilerFlowlineTcurrent Get current boiler flowline temperatue [°C]
getWarmwaterTtarget_dhwc Get effective warm-water target temperature [°C] (DHWC data group)
getAM1Output1 Get AM1 output 1
getAM1Output2 Get AM1 output 2
getEA1TargetValue Get EA1 external target value 0-10V [0..120°C]
getEA1Contact0 Get EA1 Contact 0
getEA1Contact1 Get EA1 Contact 1
getEA1Contact2 Get EA1 Contact 2
getEA1Relay0 Get EA1 relay 0 state
getCurrentOpModeHC1_hcc Get current operation mode of heating ciurcuit 1 (HCC data group)
getEffectiveRoomTtargetHC1 Get effective target room temperature for heat circuit 1 (0..35°C)
getCurrentOpModeHC2_hcc Get current operation mode of heating ciurcuit 2 (HCC data group)
getEffectiveRoomTtargetHC2 Get effective target room temperature for heat circuit 2 (0..35°C)
getCurrentOpModeHC3_hcc Get current operation mode of heating ciurcuit 3 (HCC data group)
getEffectiveRoomTtargetHC3 Get effective target room temperature for heat circuit 3 (0..35°C)
getExternalRoomTtargetNormalA1M1 Get external normal target room temperature for heat circuit 1 (0..37°C – 0: the value set at the regulator is used)
setExternalRoomTtargetNormalA1M1 Set external normal target room temperature for heat circuit 1 (0..37°C – 0: the value set at the regulator is used)
getHeatCircuitPumpA1 Get heating pump state for heat circuit 1
getFlowlineTtargetA1M1 Get flowline target temperature for heat circuit 1 (0..127°C)
getExternalRoomTtargetNormalM2 Get external normal target room temperature for heat circuit 2 (0..37°C – 0: the value set at the regulator is used)
setExternalRoomTtargetNormalM2 Set external normal target room temperature for heat circuit 2 (0..37°C – 0: the value set at the regulator is used)
getHeatCircuitPumpM2 Get heating pump state for heat circuit 2
getFlowlineTtargetM2 Get flowline target temperature for heat circuit 2 (0..127°C)
getCurveSteepnessM3 Get heating curve steepness for heat circuit 3
setCurveSteepnessM3 Set heating curve steepness for heat circuit 3
getCurveShiftM3 Get heating curve parallel shift for heat circuit 3
setCurveShiftM3 Set heating curve parallel shift for heat circuit 3
getExternalRoomTtargetNormalM3 Get external normal target room temperature for heat circuit 3 (0..37°C – 0: the value set at the regulator is used)
setExternalRoomTtargetNormalM3 Set external normal target room temperature for heat circuit 3 (0..37°C – 0: the value set at the regulator is used)
getHeatCircuitPumpM3_hc Get heating pump state for heat circuit 3 (HC data group)
getFlowlineTtargetM3 Get flowline target temperature for heat circuit 3 (0..127°C)
getCurveSteepnessA1 Get heating curve steepness for heat circuit 1
setCurveSteepnessA1 Set heating curve steepness for heat circuit 1
getCurveShiftA1 Get heating curve parallel shift for heat circuit 1
setCurveShiftA1 Set heating curve parallel shift for heat circuit 1
getCurrentOpModeA1M1 Get current operation mode of heating ciurcuit 1
getHeatCircuitPumpA1M1_hc Get heating pump state for heat circuit 1 (HC data group)
getPartyModeA1M1_hc Get party mode state for heat circuit 1 (HC data group)
getTroomA1M1 Get room temperature of heat circuit 1 (0..127°C)
getSavingsModeA1M1_hc Get savings mode state for heat circuit 1 (HC data group)
getTflowlineA1M1 Get flowline temperature of heat circuit 1 (0..150°C)
getCurveSteepnessM2 Get heating curve steepness for heat circuit 2
setCurveSteepnessM2 Set heating curve steepness for heat circuit 2
getCurveShiftM2 Get heating curve parallel shift for heat circuit 2
setCurveShiftM2 Set heating curve parallel shift for heat circuit 2
getCurrentOpModeM2 Get current operation mode of heating ciurcuit 2
getHeatCircuitPumpM2_hc Get heating pump state for heat circuit 2 (HC data group)
getPartyModeM2_hc Get party mode state for heat circuit 2 (HC data group)
getTroomM2 Get room temperature of heat circuit 2 (0..127°C)
getSavingsModeM2_hc Get savings mode state for heat circuit 2 (HC data group)
getTflowlineM2 Get flowline temperature of heat circuit 2 (0..127°C)
getCurrentOpModeM3 Get current operation mode of heating ciurcuit 2
getPartyModeM3_hc Get party mode state for heat circuit 3 (HC data group)
getTroomM3 Get room temperature of heat circuit 3 (0..127°C)
getSavingsModeM3_hc Get savings mode state for heat circuit 3 (HC data group)
getTflowlineM3 Get flowline temperature of heat circuit 3 (0..127°C)
getTexhaust Get exhaust temperature (0..500°C)
getLowpassedToutdoor Get outdoor temperature subject to lowpass filter with 30 minutes time base [°C]
getBurnerHop Get operation hours of burner
setBurnerHop Set operation hours of burner
getBurnerStarts Get number of burner starts
setBurnerStarts Set number of burner starts
getBoilerInput Get boiler input 0-10V [°C]
getInternalPump Get internal pump state
getBoilerTtarget Get boiler target temperature [°C]
getBoilerTcurrent Get current boiler temperature (0..127°C)
getModulationDegree Get degree of modulation [%]
getInternalExtensionRelayK12 Get K12 internal extension relay state
getCollectiveError Get collective error condition
getRelayHeatCircuitPump1 Get relay state for heating pump of heat circuit 1
getSolarHop Get operation hours of solar panels
getSolarTcollector Get temperature of solar collector (-20..250°C)
getSolarPump Get solar pump state
getSolarTstorage Get solar storage temperature (0..127°C)
getSolarPheat Get total solar power harvest [kWh]
getSolarPtoday Get solar power harvest today [kWh]
getWarmwaterTout Get warm-water outflow temperature (0..150°C)
getBufferTtop Get buffer temperature top [°C]
getBufferTbottom Get buffer temperature bottom [°C]
getBufferLoadingPump Get buffer loading pump state
getBufferTcomfort Get buffer loading sensor/comfort sensor temperature (0..150°C)
getWarmwaterTtarget Get warm-water target temperature (10..60°C)
setWarmwaterTtarget Set warm-water target temperature (10..60°C)
getWarmwaterCirculationPump Get warm-water circulation pump state
getPartyTtargetA1M1 Get target temperature in party mode state
setPartyTtargetA1M1 Set target temperature in party mode state
getOpModeHoliday Get holiday operation mode state
getLeavingDate Get first day of holidays
setLeavingDate Set first day of holidays
getArrivalDate Get last day of holidays
setArrivalDate Set last day of holidays
getToutdoor_vito Get outdoor temperature (Vito data group)
getWarmwaterTcurrent Get current warm-water temperature
getFlameState Get current flame status
getTreturnFlow Get return flow temperature
getWarmwaterHeatingValveState Get state of valve switching between heating and warm-water
getTimerMonM1 Get heat circuit 1 switching times for Monday
setTimerMonM1 Set heat circuit 1 switching times for Monday
getTimerTueM1 Get heat circuit 1 switching times for Tuesday
setTimerTueM1 Set heat circuit 1 switching times for Tuesday
getTimerWedM1 Get heat circuit 1 switching times for Wednesday
setTimerWedM1 Set heat circuit 1 switching times for Wednesday
getTimerThuM1 Get heat circuit 1 switching times for Thursday
setTimerThuM1 Set heat circuit 1 switching times for Thursday
getTimerFriM1 Get heat circuit 1 switching times for Friday
setTimerFriM1 Set heat circuit 1 switching times for Friday
getTimerSatM1 Get heat circuit 1 switching times for Saturday
setTimerSatM1 Set heat circuit 1 switching times for Saturday
getTimerSunM1 Get heat circuit 1 switching times for Sunday
setTimerSunM1 Set heat circuit 1 switching times for Sunday
getTimerMonWW Get warm-water switching times for Monday
setTimerMonWW Set warm-water switching times for Monday
getTimerTueWW Get warm-water switching times for Tuesday
setTimerTueWW Set warm-water switching times for Tuesday
getTimerWedWW Get warm-water switching times for Wednesday
setTimerWedWW Set warm-water switching times for Wednesday
getTimerThuWW Get warm-water switching times for Thursday
setTimerThuWW Set warm-water switching times for Thursday
getTimerFriWW Get warm-water switching times for Friday
setTimerFriWW Set warm-water switching times for Friday
getTimerSatWW Get warm-water switching times for Saturday
setTimerSatWW Set warm-water switching times for Saturday
getTimerSunWW Get warm-water switching times for Sunday
setTimerSunWW Set warm-water switching times for Sunday
getTimerMonWWcirculation Get warm-water circulation pump switching times for Monday
setTimerMonWWcirculation Set warm-water circulation pump switching times for Monday
getTimerTueWWcirculation Get warm-water circulation pump switching times for Tuesday
setTimerTueWWcirculation Set warm-water circulation pump switching times for Tuesday
getTimerWedWWcirculation Get warm-water circulation pump switching times for Wednesday
setTimerWedWWcirculation Set warm-water circulation pump switching times for Wednesday
getTimerThuWWcirculation Get warm-water circulation pump switching times for Thursday
setTimerThuWWcirculation Set warm-water circulation pump switching times for Thursday
getTimerFriWWcirculation Get warm-water circulation pump switching times for Friday
setTimerFriWWcirculation Set warm-water circulation pump switching times for Friday
getTimerSatWWcirculation Get warm-water circulation pump switching times for Saturday
setTimerSatWWcirculation Set warm-water circulation pump switching times for Saturday
getTimerSunWWcirculation Get warm-water circulation pump switching times for Sunday
setTimerSunWWcirculation Set warm-water circulation pump switching times for Sunday
getError1 Get error message 1
getError2 Get error message 2
getError3 Get error message 3
getError4 Get error message 4
getError5 Get error message 5
getError6 Get error message 6
getError7 Get error message 7
getError8 Get error message 8
getError9 Get error message 9
getError10 Get error message 10
getSystemTime Get current system time
getDeviceConfig Get device configuration in use
getPartyTtargetM2 Get target temperature in party mode state
setPartyTtargetM2 Set target temperature in party mode state
getPartyTtargetM3 Get target temperature in party mode state
setPartyTtargetM3 Set target temperature in party mode state
getTimerMonM2 Get heat circuit 2 switching times for Monday
setTimerMonM2 Set heat circuit 2 switching times for Monday
getTimerTueM2 Get heat circuit 2 switching times for Tuesday
setTimerTueM2 Set heat circuit 2 switching times for Tuesday
getTimerWedM2 Get heat circuit 2 switching times for Wednesday
setTimerWedM2 Set heat circuit 2 switching times for Wednesday
getTimerThuM2 Get heat circuit 2 switching times for Thursday
setTimerThuM2 Set heat circuit 2 switching times for Thursday
getTimerFriM2 Get heat circuit 2 switching times for Friday
setTimerFriM2 Set heat circuit 2 switching times for Friday
getTimerSatM2 Get heat circuit 2 switching times for Saturday
setTimerSatM2 Set heat circuit 2 switching times for Saturday
getTimerSunM2 Get heat circuit 2 switching times for Sunday
setTimerSunM2 Set heat circuit 2 switching times for Sunday
getTimerMonM3 Get heat circuit 3 switching times for Monday
setTimerMonM3 Set heat circuit 3 switching times for Monday
getTimerTueM3 Get heat circuit 3 switching times for Tuesday
setTimerTueM3 Set heat circuit 3 switching times for Tuesday
getTimerWedM3 Get heat circuit 3 switching times for Wednesday
setTimerWedM3 Set heat circuit 3 switching times for Wednesday
getTimerThuM3 Get heat circuit 3 switching times for Thursday
setTimerThuM3 Set heat circuit 3 switching times for Thursday
getTimerFriM3 Get heat circuit 3 switching times for Friday
setTimerFriM3 Set heat circuit 3 switching times for Friday
getTimerSatM3 Get heat circuit 3 switching times for Saturday
setTimerSatM3 Set heat circuit 3 switching times for Saturday
getTimerSunM3 Get heat circuit 3 switching times for Sunday
setTimerSunM3 Set heat circuit 3 switching times for Sunday
getBoilerTcurrent_vito Get current boiler temperature [°C] (Vito data group)
getFlowlineTcurrentM1 Get current flowline temperature heat circuit 1 [°C]
getFlowlineTcurrentM2 Get current flowline temperature heat circuit 2 [°C]
getFlowlineTcurrentM3 Get current flowline temperature heat circuit 2 [°C]
getSolarWWstatus Get solar load suppression status
getOpModeM1_vito Get operations mode heat circuit 1
setOpModeM1_vito Set operations mode heat circuit 1
getOpModeM2_vito Get operations mode heat circuit 2
setOpModeM2_vito Set operations mode heat circuit 2
getOpModeM3_vito Get operations mode heat circuit 3
setOpModeM3_vito Set operations mode heat circuit 3
getBurnerLevel2Hop Get operation hours of burner level 2
getDeviceType Get device ID and type
getControllerID Get ID of controller
getLowpassedBufferT Get buffer temperature with lowpass applied [°C]
getInventory Get number of device
getExternalRequest Get status of external request
getExternalLock Get status of external lock
getVolumetricFlow Get volumetric flow of heat circuit [l/h]
getCodePlugInventory Get number from code plug
getBufferPriorityA1M1 Get buffer priority heat circuit 1
setBufferPriorityA1M1 Set buffer priority heat circuit 1
getFrostLimitA1M1 Get temperature limit for frost detection heat circuit 1 [°C] (KA3)
getSummerLogicA1M1 Get summer mode logic function heat circuit 1 (KA5)
setSummerLogicA1M1 Set summer mode logic function heat circuit 1 (KA5)
getAbsoluteSummerA1M1 Get temperature limit for absolute summer savings mode heat circuit 1 [°C] (KA6)
setAbsoluteSummerA1M1 Set temperature limit for absolute summer savings mode heat circuit 1 [°C] (KA6)
getBufferPriorityM2 Get buffer priority heat circuit 2
setBufferPriorityM2 Set buffer priority heat circuit 2
getFrostLimitM2 Get temperature limit for frost detection heat circuit 2 [°C] (KA3)
getSummerLogicM2 Get summer mode logic function heat circuit 2 (KA5)
getAbsoluteSummerM2 Get temperature limit for absolute summer savings mode heat circuit 2 [°C] (KA6)
setAbsoluteSummerM2 Set temperature limit for absolute summer savings mode heat circuit 2 [°C] (KA6)
getMixerInfluenceOnInternalPump Get influence of the mixer on the internal circulation pump
setMixerInfluenceOnInternalPump Set influence of the mixer on the internal circulation pump
getBufferPriorityM3 Get buffer priority heat circuit 3
setBufferPriorityM3 Set buffer priority heat circuit 3
getFrostLimitM3 Get temperature limit for frost detection heat circuit 3 [°C] (KA3)
getSummerLogicM3 Get summer mode logic function heat circuit 3 (KA5)
setSummerLogicM3 Set summer mode logic function heat circuit 3 (KA5)
getAbsoluteSummerM3 Get temperature limit for absolute summer savings mode heat circuit 3 [°C] (KA6)
setAbsoluteSummerM3 Set temperature limit for absolute summer savings mode heat circuit 3 [°C] (KA6)
getLowpassedToutdoor_vito300 Get outdoor temperature with lowpass applied (Vito300 data group)
getBurnerStatus Get burner status
getBoilerToffsetToWW Get boiler temperature offset related to warm-water temperature [°C]
setBoilerToffsetToWW Set boiler temperature offset related to warm-water temperature [°C]
getCirculationPumpPostRun Get status of warm-water circulation pump post run
setCirculationPumpPostRun Set status of warm-water circulation pump post run
getPanelSoftwareIndex Get index of panel software
getKScardType Get type of KS card
getTflowlineM1_vito300 Get current flowline temperature of heat circuit 1 [°C] (Vito300 data group)
getTflowlineM2_vito300 Get current flowline temperature of heat circuit 2 [°C] (Vito300 data group)
getTflowlineM3_vito300 Get current flowline temperature of heat circuit 3 [°C] (Vito300 data group)
getHeatCircuitPumpM3 Get heating pump state for heat circuit 3

 

to be continued

Leave a Reply

Your email address will not be published. Required fields are marked *