Domekt Komfovent C4 Plus Modbus Registers
Domekt Komfovent C4 is a AHU (Air Handling Unit) for use in a balanced HVAC system. The C4 is an older standard use from approx. 2011 to 2016.
If you have a unit without a control panel or want to interface the unit with an external automation. ex. Home Assistant, the following data will make that possible.
To make sure the unit works at all, jump the FC-wires together and the unit should start spinning at max. after three seconds. This confirms that the MCU works as expected.
- Domekt Komfovent C4 Modbus Register Document
- Domekt Komfovent C4 (buttons) Installation and Operation Manual
- Domekt Komfovent C4 (buttons) and C4 Plus (LCD) Installation and Operation Manual
Tools
To manually interface with the unit over Modbus, I would recommend trying the trail version of Modbus Poll. You will have a complete control interface and can easily send queries and receive responses from the unit.
Later you can use Home Assistant to build an entire control panel, better than what is provided by the OEM.
Connection
Connect the unit to a computer using the provided RS485/ModBus cable extruding from the top. There is no need to add 820 Ohm 5V pull-up/gnd pull-down or 120 Ohm termination. It works fine as is.
The pin-out is as the following:
RJ-45 flat cable | Wire color | Function |
---|---|---|
Pin 1 | - | Not used |
Pin 2 | - | Not used |
Pin 3 | Red | +24VDC |
Pin 4 | Yellow | RS485 A+ |
Pin 5 | Green | RS485 B- |
Pin 6 | White | Gnd |
Pin 7 | - | Not used |
Pin 8 | - | Not used |
Modbus settings
To establish a working connection, it's important to match the following connection parameters. A single wrong setting will make the connection not work at all.
Bits per second/baudrate | 19200 |
Data bits/word length | 8 |
Parity | Even |
Stop bits | 1 |
It is also important to use the correct Modbus ID. It's the identifier on the bus and has to be correct in order for communication to happen with the AHU.
The C4 unit has a different Modbus ID than later models, so make sure to double check. Either of the following will work with only one unit on the Modbus line.
Modbus ID | 20 (specific C4 identification address) 254 (common identification address) |
Register list
The C4 unit uses the following Modbus data register functions to read and write data.
A CR2032 battery keeps the registers concurrent when the unit is unplugged, ex. the time and date. Needs replacing after 8 years.
The unit will respond 01 Illegal register or 01 Illegal data register if you are trying to access something that does not exist. If you receive Timeout responses, make sure you use Modbus ID 20, cabling is correct, and the unit is plugged into the mains.
Description | Modbus protocol | Function description | Unit properties |
---|---|---|---|
Read data | Function code 03 | Read Holding Registers / analog output holding registers | Operation status, temperatures, fans speed, and etc. |
Write data single register | Function code 06 | Preset Single Register / analog output holding register | Turn on/off unit, set temperature, change auto/manual mode |
Write multiple data registers | Function code 16 | Preset Multiple Registers / two analog output holding registers | Set values with decimals/floating integers (not used on C4) |
Controller registers available on the C4 unit. When manually inquiring the unit, use the actual register address. This is because Domekt offsets the register address by add 9000 and subtract -1, ex. register address 1000 => 99999.
- EC = Stepper type fan motor, digitally controlled - DIP switch 3 set to ON
- AC = Regular alternating current type motor, transformer controlled - DIP switch 3 set to OFF
General settings and status
Modbus register | Actual register | Type | Access | Range | Description | Data values |
1000 | 99999 | Read/write | Integer | 0..1 | C4 Start/stop unit | 1-Start, 0-Stop |
1001 | 10000 | Read/write | Integer | 0..1 | Season (heating permitted or prohibited) | 1-Winter, 0-Summer (heating element off) |
1002 | 10001 | Read/write | 2x Char | 0x0000..0x2359 | Time, hhmm | Ex. 8:05 => 0x0805 |
1003 | 10002 | Read/write | Integer | 1-7 | Day of the week | 1-Mon, 2-Tue, 3-Wed, 4-Thu, 5-Fri, 6-Sat, 7-Sun |
1004 | 10003 | Read/write | 2x Char | 0x0101..0x1231 | Month-day date, mmdd | Ex. 9th May => 0x0509 |
1005 | 10004 | Read/write | Integer | 1900-2100 | Year date, yyyy | Ex. 2023 |
1006 | 10005 | Read/write | Integer | 1..100 | Modbus ID, default 20 | Ex. 20 |
1007 | 10006 | Read | Integer | 11..14 | Alarm status (warnings) | 14-Service, 13-Heater off, 11-Rotor stop |
1008 | 10007 | Read | Binary | 0x00..0x7F [b0-b7, 0..1] Ex. 0x40=>64=>01000000 b1=1, supply sensor B1 fault |
Alarm status (stop flags) | b1-Supply sensor B1, b2-Heater overheating, b3-Water temp. low, b4-Rotor stop, b5-Frost possibility, b6-Air temp. high, b7-Air temp. low (1-Fault, 0-None) |
1009 | 10008 | Read | Integer | 3..28 | Alarm status (stop code) | 3-Rotor stop, 4-Heater overheating, 9-Supply sensor B1, 19-Air temp. low, 20-Air temp. high, 27-Water temp. low, 28-Frost possibility |
1010 | 10009 | Read | Integer | 0..100 | Recuperation level (rotating heat exchanger, DIP switch 1 set to ON - not adjustable directly only through setpoint temperature) | 0 to 100% |
1011 | 10010 | Read | Integer | 0..100 | Electric heater level (heating element, DIP switch 2 set to OFF) | 0 to 100% |
1012 | 10011 | Read | Integer | 0..100 | Water heating level (external, if installed, DIP switch 2 set to ON) | 0 to 100% |
1013 | 10012 | Read | Integer | 0..100 | Water cooling level (external, if installed, DIP switch 2 set to ON) | 0 to 100% |
Ventilation settings and status
Modbus register | Actual register | Type | Access | Range | Description | Data values |
1100 | 10099 | Read/write | Integer | 1..3 | Ventilation intensity level (manual mode) | 1-Low fan speed, 2-Normal fan speed (recommended), 3-High fan speed |
1101 | 10100 | Read | Integer | 0..4 | Ventilation intensity level (current operation) | 0-Standby, 1-Low fan speed, 2-Normal fan speed, 3-High fan speed, 4-Override mode |
1102 | 10101 | Read/write | Integer | 0..1 | Mode (Auto/Manual) (no Comfort or Economy mode available) | 0-Manual (preset fan speed), 1-Auto (schedule) |
1103 | 10102 | Read/write | Integer | 20..100 / 0 | Supply ventilation intensity level 1 (EC-type fan) | 20 to 100% (EC-fan only) |
1104 | 10103 | Read/write | Integer | 20..100 / 0..2 | Supply ventilation intensity level 2 (EC-type fan / AC-type fan) | 20 to 100% (EC-fan), 0 to 2 (AC-fan) |
1105 | 10104 | Read/write | Integer | 20..100 / 0 | Supply ventilation intensity level 3 (EC-type fan) | 20 to 100% (EC-fan only) |
1106 | 10105 | Read/write | Integer | 20..100 / 0 | Supply ventilation intensity level 4 (EC-type fan) | 20 to 100% (EC-fan only) |
1107 | 10106 | Read/write | Integer | 20..100 / 0 | Exhaust ventilation intensity level 1 (EC-type fan) | 20 to 100% (EC-fan only) |
1108 | 10107 | Read/write | Integer | 20..100 / 0..2 | Exhaust ventilation intensity level 2 (EC-type fan / AC-type fan) | 20 to 100% (EC-fan), 0 to 2 (AC-fan) |
1109 | 10108 | Read/write | Integer | 20..100 / 0 | Exhaust ventilation intensity level 3 (EC-type fan) | 20 to 100% (EC-fan only) |
1110 | 10109 | Read/write | Integer | 20..100 / 0 | Exhaust ventilation intensity level 4 (EC-type fan) | 20 to 100% (EC-fan only) |
1111 | 10110 | Read/write | Integer | 0..1 | Override/"OVR"-mode, enables fan intensity level 4 maximum | 0-Disable, 1-Enable - DIP switch 4 set to ON will disable the exhaust fan, or OFF to leave both fans running |
1112 | 10111 | Read/write | Integer | 1..90 | Override mode timer | 1 to 90 minutes |
1113 | 10112 | Read | Integer | 0..90 | Override mode timer (current count down) | 0 to 90 minutes |
1114 | 10113 | Read | Binary | 0..1 | AHU (Air Handling Unit) fans status | 0-Stopped, 1-Operating |
1115 | 10114 | Read | Integer | 0..100 | Supply fan level (current level) | 0 to 100% |
1116 | 10115 | Read | Integer | 0..100 | Exhaust fan level (current level) | 0 to 100% |
Temperature settings and status
Modbus register | Actual register | Type | Access | Range | Description | Data values |
1200 | 10199 | Read | Integer | -300..750 | Supply air temperature, C (after heat exchanger and heater element, to rooms) | -30 to 75C, 10x C, ex. 250 => 25.0C |
1201 | 10200 | Read/write | Integer | 0..300 | Setpoint temperature, C (for calculation of recuperation, heating levels) | 0 to 30C, 10x C, ex. 25.0C => 250 |
1202 | 10201 | Read/write | Integer | 0..300 | Temperature correction, C (time based, lower or raise temperature in a set period) | -90 to +90C, 10x C, ex. +4.5C => 45 |
1203 | 10202 | Read/write | 2x Char | 0x0000..0x2359 | Temperature correction start time | Ex. 08:05 => 0x0805 |
1204 | 10203 | Read/write | 2x Char | 0x0000..0x2359 | Temperature correction end time | Ex. 15:05 => 0x1505 |
1205 | 10204 | Read | Integer | -100..1100 | Water temperature, C (external, if installed, DIP switch 2 set to ON) | -10 to 110C, 10x C, ex. 320 => 32.0C |
Schedule settings
Modbus register | Actual register | Type | Access | Range | Description | Data values |
1300 | 10299 | Read/write | 2x Char | 0x0000..0x2359 | Mon1 start time | Ex. 08:05 => 0x0805 |
1301 | 10300 | Read/write | 2x Char | 0x0000..0x2359 | Mon1 stop time | Ex. 15:05 => 0x1505 |
1302 | 10301 | Read/write | 2x Char | 0x0000..0x2359 | Mon2 start time | Ex. 08:05 => 0x0805 |
1303 | 10302 | Read/write | 2x Char | 0x0000..0x2359 | Mon2 stop time | Ex. 15:05 => 0x1505 |
10303 | 1304 | Read/write | 2x Char | 0x0000..0x2359 | Mon3 start time | Ex. 08:05 => 0x0805 |
10304 | 1305 | Read/write | 2x Char | 0x0000..0x2359 | Mon3 stop time | Ex. 15:05 => 0x1505 |
1306 | 10305 | Read/write | 2x Char | 0x0000..0x2359 | Tue1 start time | Ex. 08:05 => 0x0805 |
1307 | 10306 | Read/write | 2x Char | 0x0000..0x2359 | Tue1 stop time | Ex. 15:05 => 0x1505 |
1308 | 10307 | Read/write | 2x Char | 0x0000..0x2359 | Tue2 start time | Ex. 08:05 => 0x0805 |
1309 | 10308 | Read/write | 2x Char | 0x0000..0x2359 | Tue2 stop time | Ex. 15:05 => 0x1505 |
1310 | 10309 | Read/write | 2x Char | 0x0000..0x2359 | Tue3 start time | Ex. 08:05 => 0x0805 |
1311 | 10310 | Read/write | 2x Char | 0x0000..0x2359 | Tue3 stop time | Ex. 15:05 => 0x1505 |
1312 | 10311 | Read/write | 2x Char | 0x0000..0x2359 | Wed1 start time | Ex. 08:05 => 0x0805 |
1313 | 10312 | Read/write | 2x Char | 0x0000..0x2359 | Wed1 stop time | Ex. 15:05 => 0x1505 |
1314 | 10313 | Read/write | 2x Char | 0x0000..0x2359 | Wed2 start time | Ex. 08:05 => 0x0805 |
1315 | 10314 | Read/write | 2x Char | 0x0000..0x2359 | Wed2 stop time | Ex. 15:05 => 0x1505 |
1316 | 10315 | Read/write | 2x Char | 0x0000..0x2359 | Wed3 start time | Ex. 08:05 => 0x0805 |
1317 | 10316 | Read/write | 2x Char | 0x0000..0x2359 | Wed3 stop time | Ex. 15:05 => 0x1505 |
1318 | 10317 | Read/write | 2x Char | 0x0000..0x2359 | Thu1 start time | Ex. 08:05 => 0x0805 |
1319 | 10318 | Read/write | 2x Char | 0x0000..0x2359 | Thu1 stop time | Ex. 15:05 => 0x1505 |
1320 | 10319 | Read/write | 2x Char | 0x0000..0x2359 | Thu2 start time | Ex. 08:05 => 0x0805 |
1321 | 10320 | Read/write | 2x Char | 0x0000..0x2359 | Thu2 stop time | Ex. 15:05 => 0x1505 |
1322 | 10321 | Read/write | 2x Char | 0x0000..0x2359 | Thu3 start time | Ex. 08:05 => 0x0805 |
1323 | 10322 | Read/write | 2x Char | 0x0000..0x2359 | Thu3 stop time | Ex. 15:05 => 0x1505 |
1324 | 10323 | Read/write | 2x Char | 0x0000..0x2359 | Fri1 start time | Ex. 08:05 => 0x0805 |
1325 | 10324 | Read/write | 2x Char | 0x0000..0x2359 | Fri1 stop time | Ex. 15:05 => 0x1505 |
1326 | 10325 | Read/write | 2x Char | 0x0000..0x2359 | Fri2 start time | Ex. 08:05 => 0x0805 |
1327 | 10326 | Read/write | 2x Char | 0x0000..0x2359 | Fri2 stop time | Ex. 15:05 => 0x1505 |
1328 | 10327 | Read/write | 2x Char | 0x0000..0x2359 | Fri3 start time | Ex. 08:05 => 0x0805 |
1329 | 10328 | Read/write | 2x Char | 0x0000..0x2359 | Fri3 stop time | Ex. 15:05 => 0x1505 |
1330 | 10329 | Read/write | 2x Char | 0x0000..0x2359 | Sat1 start time | Ex. 08:05 => 0x0805 |
1331 | 10330 | Read/write | 2x Char | 0x0000..0x2359 | Sat1 stop time | Ex. 15:05 => 0x1505 |
1332 | 10331 | Read/write | 2x Char | 0x0000..0x2359 | Sat2 start time | Ex. 08:05 => 0x0805 |
1333 | 10332 | Read/write | 2x Char | 0x0000..0x2359 | Sat2 stop time | Ex. 15:05 => 0x1505 |
1334 | 10333 | Read/write | 2x Char | 0x0000..0x2359 | Sat3 start time | Ex. 08:05 => 0x0805 |
1335 | 10334 | Read/write | 2x Char | 0x0000..0x2359 | Sat3 stop time | Ex. 15:05 => 0x1505 |
1336 | 10335 | Read/write | 2x Char | 0x0000..0x2359 | Sun1 start time | Ex. 08:05 => 0x0805 |
1337 | 10336 | Read/write | 2x Char | 0x0000..0x2359 | Sun1 stop time | Ex. 15:05 => 0x1505 |
1338 | 10337 | Read/write | 2x Char | 0x0000..0x2359 | Sun2 start time | Ex. 08:05 => 0x0805 |
1339 | 10338 | Read/write | 2x Char | 0x0000..0x2359 | Sun2 stop time | Ex. 15:05 => 0x1505 |
1340 | 10339 | Read/write | 2x Char | 0x0000..0x2359 | Sun3 start time | Ex. 08:05 => 0x0805 |
1341 | 10340 | Read/write | 2x Char | 0x0000..0x2359 | Sun3 stop time | Ex. 15:05 => 0x1505 |
1342 | 10341 | Read/write | Integer | 0..3 | Mon1 ventilation level (fan speed) | 0-Standby, 1-Low, 2-Normal, 3-High |
1343 | 10342 | Read/write | Integer | 0..3 | Mon2 ventilation level (fan speed) | 0 to 3 |
1344 | 10343 | Read/write | Integer | 0..3 | Mon3 ventilation level (fan speed) | 0 to 3 |
1345 | 10344 | Read/write | Integer | 0..3 | Tue1 ventilation level (fan speed) | 0-Standby, 1-Low, 2-Normal, 3-High |
1346 | 10345 | Read/write | Integer | 0..3 | Tue2 ventilation level (fan speed) | 0 to 3 |
1347 | 10346 | Read/write | Integer | 0..3 | Tue3 ventilation level (fan speed) | 0 to 3 |
1348 | 10347 | Read/write | Integer | 0..3 | Wed1 ventilation level (fan speed) | 0-Standby, 1-Low, 2-Normal, 3-High |
1349 | 10348 | Read/write | Integer | 0..3 | Wed2 ventilation level (fan speed) | 0 to 3 |
1350 | 10349 | Read/write | Integer | 0..3 | Wed3 ventilation level (fan speed) | 0 to 3 |
1351 | 10350 | Read/write | Integer | 0..3 | Thu1 ventilation level (fan speed) | 0-Standby, 1-Low, 2-Normal, 3-High |
1352 | 10351 | Read/write | Integer | 0..3 | Thu2 ventilation level (fan speed) | 0 to 3 |
1353 | 10352 | Read/write | Integer | 0..3 | Thu3 ventilation level (fan speed) | 0 to 3 |
1354 | 10353 | Read/write | Integer | 0..3 | Fri1 ventilation level (fan speed) | 0-Standby, 1-Low, 2-Normal, 3-High |
1355 | 10354 | Read/write | Integer | 0..3 | Fri2 ventilation level (fan speed) | 0 to 3 |
1356 | 10355 | Read/write | Integer | 0..3 | Fri3 ventilation level (fan speed) | 0 to 3 |
1357 | 10356 | Read/write | Integer | 0..3 | Sat1 ventilation level (fan speed) | 0-Standby, 1-Low, 2-Normal, 3-High |
1358 | 10357 | Read/write | Integer | 0..3 | Sat2 ventilation level (fan speed) | 0 to 3 |
1359 | 10358 | Read/write | Integer | 0..3 | Sat3 ventilation level (fan speed) | 0 to 3 |
1360 | 10359 | Read/write | Integer | 0..3 | Sun1 ventilation level (fan speed) | 0-Standby, 1-Low, 2-Normal, 3-High |
1361 | 10360 | Read/write | Integer | 0..3 | Sun2 ventilation level (fan speed) | 0 to 3 |
1362 | 10361 | Read/write | Integer | 0..3 | Sun3 ventilation level (fan speed) | 0 to 3 |