Orcon MVS Ventilation System

I have an Orcon MVS-15R ventilation system in my home. From what I can tell, the only way I can control is it using a remote that was delivered with the unit. I think the remote works on RF, and sends a signal, and then waits for a confirmation (though I don’t know if the latter is important.

Does anyone know how I can automate this? Basically what I want is to be able to tell the ventilation system what speed to run at. I don’t need readings from the machine in terms of RPMs or humidity or anything like that.

Of course, one way to automate it would be to get another remote, and solder something to an ESP32 or whatever other module to imitate someone pressing the buttons, but I was hoping not to go that route.

Any thoughts?

The RFXCOM RFXtrx868XL supports Orcon and Itho.
And also Alecto ACH2010/WS5500, WH2900, Davis Vantage Vue, FS20, Edisio and Visonic

1 Like

Thanks for the tips. Judging by your name, your based in NL. I see these are very varied in terms of price and functionality. Since I’ll have some ZigBee sensors, I just need something to tell the ventilation what to do, don’t really need to sense anything.

What would be my cheapest option?

I can’t find any info on these. Are you saying that the weather station ALSO includes a 868Mhz transceiver so I can use it to manage my Orcon?

From my Googling it seems your first suggestion (RFXCOM…) is simply a 868Mhz transceiver that I can then use with HA, and the rest are weather stations?

Struggling to find the right info, so thanks for any extra help!

This kit is very soon available: RFXtrxUSB met RFX868
It is a transceiver that can receive those weather stations and Visonic security sensors.
And can control FS20, Edisio, Itho CVE RFT, Itho CVE ECO RFT and Orcon

I just finished solving this problem, after a year.
The RF way was a dead end.

But there is an esphome based solution for sale on tindie OrconWifiController for Orcon MVS-15 from Orcon met Wifi on Tindie

It sits between the original PCB of the orcon and the ventilator. Installing is a matter of plugging in two connectors. Done in a minute. Works like a charm.

I do recommend you experiment a bit with esphome first. This allows you to generate firmware for esp32/esp8266 with sensors attached which integrates with home assistant and exposes sensors, switches etc.
Also try to understand what relative humidity means and how your ventilation works. This is important for the automation.

The orconwificontroller is a wemos D1 mini on a PCB with some additional components.
When it is in the mode to bypass the factory pcb it sends a PWM (pulse width modulation) to the ventilator. This regulates the speed.

Integration with HA would require you to measure the humidity and create an automation to activate the fan until the humidity in within an acceptable range again. You can refine this as needed.

In my case, the ORCON takes air from outside and blows it in the bathroom.
Version 1 took the relative humidity in the bathroom and if it is above 90 - PWM 100% , between 70 and 90: 75% and switch off if below 70% . The automation triggers on a change in relative humidity and executes a service fan.turn_on etc.

Version 2 optimizes this to avoid calling the service if there is no need to change the speed of the ventilator. If it is at 75%speed and the humidity changes by 1% RH, no need to send a new command to the ORCON. This is done by storing the current state (0,1,2) in a helper input_number. and setting that in the automation.

It is a rainy day and outside relative humidity is 95% at outside temperature. This means that ventilating will never reduce the relative in the bathroom below the treashold I programmed. It will go on forever.
Version 3 deals with that.
I have a weather station and hence know the outside temperature and relative humidity.
Using the HACS integration Thermal Comfort I have sensors that calculate the absolute humidity from the temperature and the relative humidity, for the bathroom and for outside.
I create a template variable dividing both absolute humidities and operator the ventilator based on that value:
inside/outside ratio: if greater that 1.02 : ventilate, if below 1.02 stop ventilator. (if above 1.1 pwm at 100%).
Example: bathroom 10,69 g/m³ , outside: 10,53 g/m³ ratio: 1.01 - do not ventilate.
Shower taken: bathroom 12,04 g/m³ ratio: 1,14 - ventilate full power.

So - there is a lot of fun to be had in automating the ventilation !

If (any of) you want to go this path, reply and I can answer more details and share YAML if needed.

3 Likes

I might end up doing this, but I am planning to buy the RF device as well. The Orcon has 3 states (low, medium, high).

I am sure I can use the RF adapter to send a code for activating one of those states (or have you tried and failed with this?) I wouldn’t be able to set a ventilation speed outside those 3 ranges, but I think 3 speeds are fine for my needs.

So I’d be able to measure humidity (thanks for the absolute humidity tip!!) and then choose whether it blows faster or not, etc.

Either way, I’d love to see your code for the humidity helpers, as this will be needed no matter what control mechanism I use.

I tried to write/find MCU (esp,arduino) firmware for a CC1101 that would implement reverse engineered RF protocol.
There is quite some information about this (github) but I never got it working.

The RFX you found solves all this. The developer has programmed quite an impressive number of protocols and integrations with home automation. You basically get a programmable transceiver with you connect with USB to your Home Assistant Server.

I can appreciate this type of solution, but I do think that installing a wifi-enabled MCU in the orcon is the way to go. And I can assure you that this was not my first attitude. I was afraid of screwing up the orcon. But the wificontroller installs very easily. The price is about the same.

The orcon ventilator speed is set using pulse width modulation. The same principle as controlling a LED.
The PWM setting corresponding with speed 1, 2, 3 of the remote is done with the DIP switches. If you control the ventilator with an MCU, you can set any speed you want, between 0 and 3400 RPM (apparently).

Anyway you go, you will end up with a fan device, so yes you can use my yaml if you want in both cases. Here it comes.

alias: Ventilatie bad tav buiten
description: versie 2 mbv verschil abs binnen buiten
trigger:
  - platform: state
    entity_id:
      - sensor.diff_absh_buiten_bad
condition: []
action:
  - choose:
      - conditions:
          - condition: and
            conditions:
              - condition: numeric_state
                entity_id: sensor.diff_absh_buiten_bad
                below: 1.02
              - condition: not
                conditions:
                  - condition: state
                    entity_id: input_number.vent_state
                    state: "0"
        sequence:
          - service: fan.turn_off
            data: {}
            target:
              area_id: badkamer
          - service: input_number.set_value
            data:
              value: 0
            target:
              entity_id: input_number.vent_state
      - conditions:
          - condition: and
            conditions:
              - condition: numeric_state
                entity_id: sensor.diff_absh_buiten_bad
                above: 1.02
                below: 1.07
              - condition: not
                conditions:
                  - condition: state
                    entity_id: input_number.vent_state
                    state: "1"
        sequence:
          - service: fan.turn_on
            data:
              percentage: 75
            target:
              area_id: badkamer
          - service: input_number.set_value
            data:
              value: 1
            target:
              entity_id: input_number.vent_state
      - conditions:
          - condition: and
            conditions:
              - condition: numeric_state
                entity_id: sensor.diff_absh_buiten_bad
                above: 1.07
              - condition: not
                conditions:
                  - condition: state
                    entity_id: input_number.vent_state
                    state: "2"
        sequence:
          - service: fan.turn_on
            data:
              percentage: 95
            target:
              area_id: badkamer
          - service: input_number.set_value
            data:
              value: 2
            target:
              entity_id: input_number.vent_state
mode: single

input_number is a helper defined in the gui.

sensor.diff_absh_buiten_bad is a template sensor:
in templates.yaml (!include in configuration.yaml)

- sensor:
      - name: diff_absh_buiten_bad
        state:  >
          {{ ((states('sensor.comfort_badkamer_absolutehumidity') | float) / (states('sensor.comfort_buiten_absolutehumidity')| float) ) | round(2)}}

Have fun !

1 Like

I have an Orcon ventilation system, with a 15RF remote control. I have a working setup on ESP8266 + CC1101 + ESP Easy with P118 plugin. It is very easy to set up, a minimum of soldering (it was my first such project, no any problems) plus flashing climate build directly from the browser.
The hardest part for me was to configure mqtt device on HA side. This is my current version:

fan:
    - name: Orcon
      command_topic: "esp_climate/orcon/cmd"
      state_topic : "esp_climate/orcon/state"
      state_value_template: >
        {{ "state " + iif(value == "100", value, "104") }}
      payload_on: "state 104"
      payload_off: "state 100"
      optimistic: true
      preset_modes:
        - "manual"
        - "auto"
        - "auto 1h"
        - "off 12h"
        - "low 1h"
        - "medium 12h"
        - "high 1h"
      preset_mode_command_topic: "esp_climate/orcon/cmd"
      preset_mode_command_template: >
        {% if value == 'manual' %}
          {{ "state 10" + (((state_attr('fan.orcon', 'percentage') or 132) / 33) | string) }}
        {% elif value == 'auto' %}
          state 104
        {% elif value == 'off 12h' %}
          state 110
        {% elif value == 'low 1h' %}
          state 111
        {% elif value == 'medium 12h' %}
          state 112
        {% elif value == 'high 1h' %}
          state 113
        {% elif value == 'auto 1h' %}
          state 114
        {% else %}
          state 104
        {% endif %}
      preset_mode_state_topic: "esp_climate/orcon/state"
      preset_mode_value_template: >
        {% if value == "100" %}
          None
        {% elif value == "101" %}
          manual
        {% elif value == "102" %}
          manual
        {% elif value == "103" %}
          manual
        {% elif value == "104" %}
          auto
        {% elif value == "111" %}
          low 1h
        {% elif value == "112" %}
          medium 12h
        {% elif value == "113" %}
          high 1h
        {% elif value == "114" %}
          auto 1h
        {% else %}
          None
        {% endif %}
      speed_range_max: 3
      speed_range_min: 1
      percentage_command_topic: "esp_climate/orcon/cmd"
      percentage_command_template: >
        {% if value == 0 %}
          state 104
        {% elif value == 1 %}
          state 101
        {% elif value == 2 %}
          state 102
        {% elif value == 3 %}
          state 103
        {% else %}
          state 104
        {% endif %}
      percentage_state_topic: "esp_climate/orcon/state"
      percentage_value_template: >
        {% if value == "101" %}
          1
        {% elif value == "102" %}
          2
        {% elif value == "103" %}
          3
        {% elif value == "104" %}
          None
        {% elif state_attr('fan.orcon', 'percentage') %}
          {{ ((state_attr('fan.orcon', 'percentage')) / 33) }}
        {% else %}
          None
        {% endif %}

I have some problems with displaying the current state of the fan (strange status values ​​are coming from the controller after the end of the temporary presets), but in general it works fine.
It has off 12h/auto/low 1h/medium 12h/high 1h presets similar to original remote control, plus the ability to set the speed mode manually.

1 Like

Hello @poksh , Great that you have a working solution. Could you be kind enough to share more details about the hardware setup that could help amateur like me…

I am just looking for an option to change the fan speed based on humidity. I have separate sensors to calibrate humidity in each room. I just now need a hardware setup like you with which I could automate the rest.

Hi @TonyStark , You just need to get esp8266 with 4mb memory (ESP8266-F12 in my case) and CC1101, and then use such connection schema Hardware · Man-fred/culfw.esp8266 Wiki · GitHub
It was my first soldering experience and I spent about 20 minutes (after viewing How to solder header pins - YouTube)
Actually you can try to use breadboard and wires set, without soldering, but in such case you need to find already pinned esp8266 and cc1101 (with already soldered antenna).
Then you need to connect esp8266 by usb to your pc, open https://td-er.nl/ESPEasy/ in your browser and flash climate build.

Hello @poksh,

I’ve flashed the climate build, but have no idea how to proceed.

I see a WIFI is created using ssid “Climate”.
I am guessing I need to connect to this wifi to setup the device to connect to my wifi?
But for wifi “Climate” a password is needed.
Where do I find this?

Is any additoinal information available?

Thanks!

I just starting playing around with HA on RPi and last year my housing corporation installed the ORCON with CO2 monitor and a remote. On one of the home automation supply dealers in The Netherlands I bought the 868MHz RFXCom USB dongles. The integration sees the USB device, but I can’t seem to clone the Orcon Remote. Anyone have ideas? I don’t have a Windows computer available to install the tools RFXcom has on download. Tried Virtual box to recognise the device running windows on my MacBook.
Or is my best bet to buy a Shelly 2.5 and hardwire it into my Orion ventilator? (like a coworker suggested)

1 Like

Try configesp ?

2 Likes

? Where to find?

As @MsG already said, password is “configesp”
Sorry for delayed answer, missed notification

Sorry for the delay, being sick as f…k. Where do I type that password? But got it to work with the Shelly 2PM. Connected it with Homebridge and my apple home app. Every time the Hue Motion is activated the fan turns on in High mode,

You need this password to initial connect to esp by esp’s wifi

I’ve finally installed the wifi module and it seems to be working fine. The only thing is that it seems the creator of the system defined the fan as a light. This is the yaml in the ESPHome Config:

light:
  - platform: monochromatic
    output: mv_pwm_out
    name: "mv_unit_speed"
    gamma_correct: 1

From your code it seems yours is set up as a fan. How did you accomplish that? I can’t find a way in an automation to set the percentage power in this case, which is why I ended up with this question.

1 Like

Hi alex, almost a year later! Struggling with the same challenge. I bought the same pcb last week, would you mind sharing the esp yaml and automation as an example for me to work on?

I would appreciate it! Thx!