Nov 26, 2017

[howto] RF control for Viessmann Vitovent 200-D (HRM B55)

I installed 3 Viessmann Vitovent 200-D in my home for controlled air ventilation.

They come with the option for a seperate RF remote switch to control the airstream. Airstream can be set to different levels:

  • Blow air from outside to inside
  • Blow air from inside to outside
  • off
  • automatic mode (if you buy a airquality sensor for 150-200€)
  • 1 to 4 for slow to fast air ventilation.

The RF remote wall switch ZK02582 costs between 150-400€ and has 4 buttons for Up, Down, Max and Auto mode.

The plan was to integrate this somewhen into my home automation and control it by external sensors, depending on time or by occupancy state.

Unfortunately Viessmann did not share any futher information about the used protocol etc. So the idea was to buy a ZK02582, sniff and clone the radio traffic and sell it again :-)

Luckily I disassembled the indoor cover and found a USB connector behind a sticker and an EnOcean TCM module!



So I ordered an EnOcean USB300 adapter and played some hours with it (without success). After half a year I started again. Now here are the results ;-)

EnOcean provides a development application named DolphinStudio with that you can send custom commands using the USB300.



DolphinView did NOT work with the TCM module inside the Vitovent. Probably they are using another firmware. I would not recommend to override it (if possible at all). In case you want to play with it, make sure that you do not have a dangerous voltage on the USB connector!!

So let's take a look on the RF protocol.

EnOcean uses different protocols:
  • ESP: Serial protocol
  • ERP: Radio protocol (wrapped inside ESP)
  • EEP: Equipment profile (wrapped inside ERP)
I found a document that describes some of the possible EEPs (web archived) and also figured out that the wall switch might be similiar to a rocker switch with 4 buttons. This means the RORG (radio telegram type) must be set to RPS (Repeated Switch).

The sender ID must be probably in the range of BaseID + 127. BaseID you can read out using Set ID in DolphinView.

Sending data 00 and status 00 to broadcast destination (0xFF FF FF FF) let me allow to pair the Vitovent! Voilá!

Now just needed to analyse and try some bits in data and status field. They are quite similiar to what you can find in the EEP document.

The binary data format is ###x$$$$, where ### is the button, x is the state of the button (pressed = 1, released = 0) and $$$$ seems to be unused or not recognized. (DolphinView expects hex data.)
  • 0b0001 0000 = 0x10 (down button)
  • 0b0011 0000 = 0x30 (up button)
  • 0b0101 0000 = 0x50 (auto button)
  • 0b0111 0000 = 0x70 (max button)
Possible buttons 4-7 are not recognized. The first 4 bits of the status field seems to be ignored. The last 4 bits are the repeating count (probably used for telegram routing). Easiest is to just leave status field untouched at 0x00.

That's it :)


I think that most EnOcean rocker switches with 4 buttons will work fine with Vitovent. So you can choose your prefered style and price :)

I will not test it, 'cause the next step is to integrate it into domoticz. If you tested any other wall switch it would be nice if you leave a comment.


Update 26.11.17
Integration in domoticz was easier than expected.

  1. Add USB300 under hardware setup. Choose the right USB port. If you have more USB devices connected it might be that they are reordered on a new boot.
  2. In Switches create a manual switch.
  3. Select Blinds and EnOcean, give it a name and that ID to e.g. 1. Use Rocker ID 1 for Up/Down.
  4. On the vitovent select the first channel C1 in RC menu.
  5. Press test in domoticz. Vitovent stops blinking, indicating that it is paired now.
  6. Click on Save.
If you also want to have Max/Auto you have to add a second switch with Rocker ID 2. Selectors do not seem to work yet with EnOcean. You can also chooses other switch types, but Blinds with its two buttons were most satisfying for me.