Integrating HVAC system to HA via BMS interface

@ptuk thanks. One question though, about the unit’s low (overnight) timer and the built in humidity sensor…

The sentinel kinetic BH will automatically adjust the fan speed as it detects rising humidity. It also has a schedule so that it can go into “low” mode at night.

So, when using the 0-10V input, does the system still do these things automatically? Or do you now have to control it fully yourself?

I want the unit to take care of itself most the time, and continue to work if the smart tech fails for whatever reason…

Can anyone please confirm whether it’s possible to stop and start the the sentinel kinetic by opening and closing SW5? Or do you need to power cycle it to restart again?

I don’t want the MVHR to run on those summer days when it’s warm outside and the doors and windows are detected as open via sensors in HA.

So I’m wondering how to stop and start the unit, and whether I need to switch it’s power on and off it to achieve this. Thanks!

Well, you can’t have it all sadly.

This machine has a one way communication. You can tell it what to do but it won’t tell you what it’s doing. The only way to automate this thing is to completely disable all the internal automations and rely on your own.

I’ve done that and it has been perfect (I have Aqara temp / humidity sensor in the bathrooms)

OK guys, here’s my update for those wanting answers in future…

This all is for a Vent-Axia (Low Carbon) Sentinel Kinetic BH (with humidity sensor). As discussed in this thread, this all depends on using Control Mode 2 on the unit to give more control over the unit’s operation.


Keeping things automatic vs manual override

According to Vent-Axia tech support, in my control mode 2, the MVHR unit will be ‘automatic’ unless overridden by one of the dry/volt-free contacts (SW1, SW2, SW3 or SW5.) Therefore, the absence of any connections on switches 1-3 means the humidity sensor and night time low fan timer will work as normal. And when you override, the unit will go to the mode and fan speed set in the commissioning menu.

All this means it satisfies my Rule 0 of Home Automation: smartness is an add-on; things should run always expected regardless of issues with smart controller, WiFi, Home Assistant etc


My recommended modes for each switch

Since, as noted above, the unit is in Normal mode ( automatic) by default, this means ‘normal’ mode is not really something that needs enforcing, but it might be good to override auto behaviour. I have therefore set up the following modes/switches combination:

  • SW1 = LOW – when contact made AKA normally open
  • SW2 = NORMAL – normally open
  • SW3 = BOOST – normally open
  • SW5 = STOP – note this switch is normally closed, so unit must have this contact made in order to run.

With these set it’s possible to enforce various fan speeds that are configured as part of commissioning the system and modes. In my case that will be normal and boost fan speeds to pass building regs, and then once they’re happy I’ll likely turn it down lower.

These work nicely with some Home Assistant automations… I can help to stop the house getting too hot, cold, stuffy etc using the temperature, door and heating (smart radiator valves) sensors. I can also save electricity - or use more of it at the right time - to better align with energy from solar panels and electricity tariff cheap/expensive periods.


Controller for these: Sonoff 4CH PRO reflashed with ESPHome

I chose this controller because it’s easy to flash, easy to wire (both normally open and normally closed terminals on the relay) and cheap-ish. I had to solder a 5 pin header to the open terminal holes to be able to flash it to start, but once flashed can be updated via wifi. I also desoldered the RF 433Mhz antenna to help avoid random signals that could switch the unit. Time will tell how good this controller is, but for now it’s an easy way to control 4 volt-free terminals without too much faff.

For those who maybe also want to use this device, my ESPHome Yaml config is below for reference… It provides:

  • Working status light
  • Interlocked relays, so only 1 mode/switch can be set at a time, plus a 1s gap between switching
  • Fixed IP to make the unit start up much faster
  • Physical buttons 1-4 mapped to the modes low, normal, boost and stop
esphome:
  name: mvhr-controller
  friendly_name: MVHR

esp8266:
  board: esp8285

# Enable logging
logger:

# Enable Home Assistant API
api:
  encryption:
    key: "YOUR OWN KEY"

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password
  manual_ip:
    static_ip: ((YOUR  IP))
    gateway: ((YOUR GATEWAY))
    subnet: 255.255.255.0

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "MVHR Controller Fallback Hotspot"
    password: "YOUR BACKUP PASSWORD"


# Buttons
binary_sensor:
  - platform: gpio
    pin:
      number: GPIO0
      mode:
        input: true
        pullup: true
      inverted: true
    name: "Controller Button 1"
    filters:
    - delayed_on: 10ms
    on_release: 
      then:
        - switch.toggle: relay1

  - platform: gpio
    pin:
      number: GPIO9
      mode:
        input: true
        pullup: true
      inverted: true
    name: "Controller Button 2"
    filters:
    - delayed_on: 10ms
    on_release: 
      then:
        - switch.toggle: relay2

  - platform: gpio
    pin:
      number: GPIO10
      mode:
        input: true
        pullup: true
      inverted: true
    name: "Controller Button 3"
    filters:
    - delayed_on: 10ms
    on_release: 
      then:
        - switch.toggle: relay3
        
  - platform: gpio
    pin:
      number: GPIO14
      mode:
        input: true
        pullup: true
      inverted: true
    name: "Controller Button 4"
    filters:
    - delayed_on: 10ms
    on_release: 
      then:
        - switch.toggle: relay4

  - platform: status
    name: "Controller Status"


switch:
  - platform: gpio
    id: relay1
    name: "Low"
    pin: GPIO12
    interlock: [relay2,relay3,relay4]
    interlock_wait_time: 1s
  
  - platform: gpio
    id: relay2
    name: "Normal"
    pin: GPIO5
    interlock: [relay1,relay3,relay4]
    interlock_wait_time: 1s
  
  - platform: gpio
    id: relay3
    name: "Boost"
    pin: GPIO4
    interlock: [relay1,relay2,relay4]
    interlock_wait_time: 1s
  
  - platform: gpio
    id: relay4
    name: "Stop"
    pin: GPIO15
    interlock: [relay1,relay2,relay3]
    interlock_wait_time: 1s

output:
  # Register the blue LED as a dimmable output ....
  - platform: esp8266_pwm
    id: blue_led
    pin: GPIO13

light:
  # ... and then make a light out of it.
  - platform: status_led
    id: status_light
    name: "Controller Status LED"
    output: blue_led

Hope this is useful to others :slightly_smiling_face:

3 Likes

Hi all,
I’m wondering to buy Sentinel Kinetic unit and I’m looking for possible way to integrate it into my HA.
Is it is clear that the power can be controlled by analog input P1/2 by 0-10V or by digital inputs SW1-5 to switch the modes. But nobody is mentioning the bypass in summer days. Is it also possible to turn on the bypass by SW inputs?

Some useful links I found, would be nice to integrate axia-remote protocol to ESPHome :slight_smile:

Summer Bypass is, to my knowledge, not controllable directly via switches it contacts. You can set temperatures in the setup menu that turn it automatically turns on, I think that’s all.

The wired remote protocol is just that, the way the UI is sent to the little LCD screen. With a lot of faff it might be possible to move to commissioning mode and set bypass values directly by implementing this protocol, but I think that’ll be quite a lot of work.

Thanks,
and the temperature sensor which is triggering the bypass is internal or external? Could it be hacked?

Hello,
I have a question about the free volt board, I have the same version of Sentinel Kinetic Advance SX. I have installed the board in HVAC, the board shows up as Vent-wise in my port settings where I can see SW1, SW2,SW3,SW4. Unfortunately I can change the drive mode settings for the whole board (all SW’s), I cannot change the mode for each SW separately. Please do you know if there is any way to set this or why I have it there?
Thank you very much
Kotyza

These links no longer work - can you share these files, please?

Hi,
I am wondering if anyone has is aware of or tried to connect via the wifi controller? I have the Sentinel Kinetic Advance S model with the wifi unit which allow you to control the unit via the Vent-Axia Connect app.

Detail of the wifi unit from the manual are here on page 42

I have made some basic attempts to intercept the traffic from the app to the unit using PCAPdroid but the messages are encrypted and I have had no success in decrypting them.

Thanks

Thanks for your help. I bought a very similar 0-10V Zigbee dimmer and updated my device settings as you specified.

I created an input helper which is used to adjust the speed of the fan and the automation below maps the value of the input helper to the brightness value of the Zigbee dimmer so that the fan speed matches the input control value (thanks to ChatGPT).

image

alias: Adjust MVHR Fan Speed
description: ""
trigger:
  - platform: state
    entity_id:
      - input_number.mvhr_fan_speed_control
action:
  - service: light.turn_on
    target:
      entity_id: light.mvhr_fan_speed
    data:
      brightness: >
        {% set speed = states('input_number.mvhr_fan_speed_control') | int %} {%
        if speed < 30 %}
          2
        {% elif speed <= 40 %}
          {{ 2 + (speed - 30) * (71 - 2) / (40 - 30) | round(0) | int }}
        {% elif speed <= 50 %}
          {{ 71 + (speed - 40) * (111 - 71) / (50 - 40) | round(0) | int }}
        {% elif speed <= 60 %}
          {{ 111 + (speed - 50) * (143 - 111) / (60 - 50) | round(0) | int }}
        {% elif speed <= 70 %}
          {{ 143 + (speed - 60) * (172 - 143) / (70 - 60) | round(0) | int }}
        {% elif speed <= 80 %}
          {{ 172 + (speed - 70) * (198 - 172) / (80 - 70) | round(0) | int }}
        {% elif speed <= 90 %}
          {{ 198 + (speed - 80) * (224 - 198) / (90 - 80) | round(0) | int }}
        {% else %}
          {{ 224 + (speed - 90) * (254 - 224) / (100 - 90) | round(0) | int }}
        {% endif %}
mode: single

1 Like