Modbus Sensor TCP for Komfovent

Recently I have installed Komfovent recoperation system with C6 controller. C6 exposed modbus over TCP. Tried to read holding registers on Windows software client for modbus. Everything works great. Trying to hookup to home assistant classic running on raspberry pi. I dont see any errors in logs and pretty sure that modbus plugin connects to C6 but my value returned is always 0. Trying to read register 5 which holds the information about recuperator mode. Values are 1 to 5 . It doesn’t matter if I supply data_type or not. Still I get 0 as response. Anything I missed in modbus configuration?
My configuration.yaml contains following

modbus:
  type: tcp
  host: 192.168.1.50
  port: 502
  name: Komfovent
sensor: !include sensors.yaml

and my sensors.yaml looks like this

  - platform: modbus
    scan_interval: 10
    registers:
      - name: "Actve mode"
        hub: Komfovent
        slave: 100
        register_type: holding
        register: 5
        count: 1
        offset: 0
        precision: 1
        data_type: int
2 Likes

Hi i also have struggled reading Komfovent C6 values over modbus. you should try reading register 4 instead of 5. At least this works for me. I think it is python modbus implementation and all register addresses start at 0.

Here is my sample configuration

  - platform: modbus
    scan_interval: 10
    registers:
      - name: komfovent-panel-temperature
        hub: komfovent
        unit_of_measurement: "°C"
        device_class: temperature
        register: 945
        scale: 0.1
        precision: 1
        data_type: int
      - name: komfovent-panel-humidity
        hub: komfovent
        unit_of_measurement: "%"
        device_class: humidity
        register: 946
      - name: komfovent-current-mode
        hub: komfovent
        register: 4
        data_type: int

Indeed, this seems to do the trick. Wonder if this is a bug to report or is it specifics of C6

how looks panel in HA? Can you control the C6/Komfovent recuperator by the HA or only read?

For now I only use Sensors to display RO. I didn’t try the switch yet.

Ok, so I was interested if its easy to control via ModBus. So I have created a working solution for changing modes on register 4.
First thing you have to do is to go to Overview tab, and click Configure UI. It will change to edit mode.
Click + and add an Entity of type Button.Name it Away.
Switch to Code Editor, its easier this way. The logic behind is that you have to call a service modbus_write when you hit this button. So you can configure it as following to switch your comfovent to Away mode. You will need to create as many buttons as necessary for different modes.

type: button
tap_action:
  action: call-service
  service: modbus.write_register
  service_data:
    hub: komfovent
    unit: 254
    address: 4
    value: 2
hold_action:
  action: none
show_icon: false
show_name: true
name: Away

After couple days of trying Komfovent modbus
Result:

Thanks All, for this post

1 Like

Nice looking panel. care to share your config?

Btw. Its spelled Maintenance :wink:

Panel version
image

configuration.yaml

modbus:
  name: Komfovent
  type: tcp
  host: 192.168.0.60
  port: 502
----
switch:
  - platform: modbus
    registers:
      - name: "Komfovent Auto Mode"
        hub: Komfovent
        slave: 1
        register: 3
        command_on: 1
        command_off: 0
  - platform: modbus
    registers:
      - name: "Komfovent Power"
        hub: Komfovent
        slave: 1
        register: 0
        command_on: 1
        command_off: 0  
  - platform: modbus
    registers:
      - name: "Komfovent Eco Mode"
        hub: Komfovent
        slave: 1
        register: 2
        command_on: 1
        command_off: 0
---
sensor:
  - platform: modbus
    scan_interval: 10
    registers:
      - name: "Komfovent Power"
        hub: Komfovent
        register: 0
        register_type: holding
  - platform: modbus
    scan_interval: 10
    registers:
      - name: "Komfovent Eco"
        hub: Komfovent
        register: 2
        register_type: holding
  - platform: modbus
    scan_interval: 10
    registers:
      - name: "Komfovent Auto"
        hub: Komfovent
        register: 3
        register_type: holding
  - platform: modbus
    scan_interval: 10
    registers:
      - name: "Komfovent Mode"
        hub: Komfovent
        register: 4
        register_type: holding
  - platform: modbus
    scan_interval: 10
    registers:
      - name: "Komfovent Shedule"
        hub: Komfovent
        register: 5
        register_type: holding
  - platform: modbus
    scan_interval: 10
    registers:
      - name: "Komfovent Supply temperature 'C"
        hub: Komfovent
        register: 901
        register_type: holding
        unit_of_measurement: °C        
        scale: 0.1
        precision: 1
  - platform: modbus
    scan_interval: 10
    registers:
      - name: "Komfovent Extract temperature 'C"
        hub: Komfovent
        register: 902
        register_type: holding
        scale: 0.1
        unit_of_measurement: °C
        precision: 1
  - platform: modbus
    scan_interval: 10
    registers:
      - name: "Komfovent Supply Flow '%"
        hub: Komfovent
        register: 905
        count: 2            
        register_type: holding
        precision: 1
  - platform: modbus
    scan_interval: 10
    registers:
      - name: "Komfovent Extract Flow '%"
        hub: Komfovent
        register: 907
        count: 2          
        register_type: holding
        precision: 1
  - platform: modbus
    scan_interval: 10
    registers:
      - name: "Komfovent Supply Fan Intensivity '%"
        hub: Komfovent
        register: 909
        register_type: holding
        scale: 0.1
        precision: 1
  - platform: modbus
    scan_interval: 10
    registers:
      - name: "Komfovent Extract Fan Intensivity '%"
        hub: Komfovent
        register: 910
        register_type: holding
        scale: 0.1
        precision: 1        
  - platform: modbus
    scan_interval: 10
    registers:
      - name: "Komfovent Outdoor temperature 'C"
        hub: Komfovent
        register: 903
        register_type: holding
        unit_of_measurement: °C        
        scale: 0.1
        precision: 1        
  - platform: modbus
    scan_interval: 10
    registers:
      - name: "Komfovent Filter Dirt, %"
        hub: Komfovent
        register: 918
        register_type: holding
  - platform: modbus
    scan_interval: 10
    registers:
      - name: "Komfovent Filter Dirt, %"
        hub: Komfovent
        register: 917
        register_type: holding
  - platform: modbus
    scan_interval: 10
    registers:
      - name: "Komfovent Filter Impurity, %"
        hub: Komfovent
        register: 916
        register_type: holding        
  - platform: modbus
    scan_interval: 10
    registers:
      - name: "Komfovent Heating power, W"
        hub: Komfovent
        register: 912
        register_type: holding
  - platform: modbus
    scan_interval: 10
    registers:
      - name: "Komfovent Power consumption, W"
        hub: Komfovent
        register: 920
        register_type: holding          
  - platform: modbus
    scan_interval: 10
    registers:
      - name: "Komfovent Heating Recovery Day, kWh"
        hub: Komfovent
        register: 938
        register_type: holding
        count: 2
        precision: 2
        scale: 0.001        
  - platform: modbus
    scan_interval: 10
    registers:
      - name: "Komfovent Heating Recovery Month, kWh"
        hub: Komfovent
        register: 940
        register_type: holding
        count: 2
        precision: 2
        scale: 0.001        
  - platform: modbus
    scan_interval: 10
    registers:
      - name: "Komfovent Heating Recovery Total, kWh"
        hub: Komfovent
        register: 942
        count: 2
        register_type: holding
        precision: 2
        scale: 0.001
  - platform: modbus
    scan_interval: 10
    registers:
      - name: "Komfovent Heat Recovery, W"
        hub: Komfovent
        register: 922
        register_type: holding 
  - platform: modbus
    scan_interval: 10
    registers:
      - name: "Komfovent Heat exchanger efficiency, %"
        hub: Komfovent
        register: 923
        register_type: holding 
        scale: 0.1
        precision: 2
  - platform: modbus
    scan_interval: 10
    registers:
      - name: "Komfovent Energy saving, %"
        hub: Komfovent
        register: 924
        register_type: holding 
  - platform: modbus
    scan_interval: 10
    registers:
      - name: "Komfovent Specific power (SPI)"
        hub: Komfovent
        register: 925
        register_type: holding 
        scale: 0.001
        precision: 2

Lovelace

type: vertical-stack
name: Recuperation
cards:
  - type: horizontal-stack
    title: Recuperation
    cards:
      - type: button
        entity: switch.komfovent_auto_mode
        name: Auto
        icon: 'mdi:atom-variant'
        hold_action: more_info
      - type: button
        entity: switch.komfovent_eco_mode
        name: Eco
        icon: 'mdi:snowflake-variant'
        hold_action: more-info
  - type: horizontal-stack
    cards:
      - type: button
        tap_action:
          action: call-service
          service: modbus.write_register
          service_data:
            address: 4
            hub: Komfovent
            unit: 1
            value: 1
        hold_action:
          action: none
        name: Away
        show_name: true
        icon: 'mdi:home-export-outline'
      - type: button
        tap_action:
          action: call-service
          service: modbus.write_register
          service_data:
            address: 4
            hub: Komfovent
            unit: 1
            value: 2
        hold_action:
          action: none
        name: Normal
        show_name: true
        icon: 'mdi:home-account'
      - type: button
        tap_action:
          action: call-service
          service: modbus.write_register
          service_data:
            address: 4
            hub: Komfovent
            unit: 1
            value: 3
        hold_action:
          action: none
        name: Intensive
        show_name: true
        icon: 'mdi:weather-windy'
      - type: button
        tap_action:
          action: call-service
          service: modbus.write_register
          service_data:
            address: 4
            hub: Komfovent
            unit: 1
            value: 4
        hold_action:
          action: none
        name: Boost
        show_name: true
        icon: 'mdi:fan'
  - type: horizontal-stack
    cards:
      - type: sensor
        entity: sensor.komfovent_outdoor_temperature_c
        name: 'Outside, C'
        icon: 'mdi:thermometer'
        tap_action:
          action: none
        hold_action: more-info
      - type: sensor
        entity: sensor.komfovent_supply_temperature_c
        name: 'Supply, C'
        icon: 'mdi:home-import-outline'
        tap_action:
          action: none
        hold_action: more-info
      - type: sensor
        entity: sensor.komfovent_extract_temperature_c
        name: 'Extract, C'
        icon: 'mdi:home-export-outline'
        tap_action:
          action: none
        hold_action: more-info
  - type: horizontal-stack
    title: Maintenance
    cards:
      - type: sensor
        entity: sensor.komfovent_supply_flow
        name: 'Fan, %'
        icon: 'mdi:fan'
        tap_action:
          action: none
        hold_action: more-info
      - type: sensor
        entity: sensor.komfovent_filter_impurity
        name: 'Filter, %'
        icon: 'mdi:find-replace'
        tap_action:
          action: none
        hold_action: more-info
      - type: button
        entity: switch.komfovent_power
        name: Power
        icon: 'mdi:power'
        hold_action: more-info
  - type: horizontal-stack
    title: Schedule
    cards:
      - type: button
        tap_action:
          action: call-service
          service: modbus.write_register
          service_data:
            address: 5
            hub: Komfovent
            unit: 1
            value: 0
        hold_action:
          action: none
        name: Stay at Home
        show_name: true
        icon: 'mdi:home-outline'
      - type: button
        tap_action:
          action: call-service
          service: modbus.write_register
          service_data:
            address: 5
            hub: Komfovent
            unit: 1
            value: 1
        hold_action:
          action: none
        name: Work week
        show_name: true
        icon: 'mdi:home-city-outline'
2 Likes

This as very nice setup. Did you consider the multi value switch like a slider to for Register 4 to be able to switch for Away -> Normal-> Kitchen … etc. ?

No idea how :slight_smile:

For me is needed colors on active modes and schedules.
No time to reserch now:)

Yes, your solution is really nice. It resembles original C6.1 panel. I was looking into something more fancy. Also need to think how to adopt this in TileBoard. Anyway, good job.

what modbus over tcp are you using?

Build in is 6.2 standard controller. Nothing additional.

you are awesome, thanks!

i was able to merge registers into one platform:modbus sensor configuration item. not sure if that would decrease amount of polling it does.

great!. Also I found https://www.vortvent.nl/wp-content/uploads/2018/04/Vortvent-Komfovent-C6-Modbus-registerlijst-EN-2017.pdf

1 Like

Hi. I am planning to buy a Komfovent recoperation system. In the PDF you linked there is a LAN connection to the recoperator itself? Is the C6 wall controller necessary to connect to HA?

Hi, Today I got Komfovent. Wall controller isn’t necessary for HA.
P.S I don’t understand how to setup " kitchen" or “fireplace” modes, because for them is needed to set timers.

They trigers max air mode for particular time. For me they are not needed. Maybe you can connect them for WC light switch :slight_smile: