TapHome

HomEvap Humidifier

Modbus TCP
Submitted by
Last updated: 06. 2026

Requires external gateway

TapHome Modbus RTU Gateway — product page

HomEvap Humidifier

The HomEvap Humidifier is a duct-mounted adiabatic humidifier manufactured by HomEvap B.V. (Netherlands). It sits in the supply-air duct downstream of a Heat Recovery Ventilation (HRV) unit and evaporates fresh LegioSafe-filtered water into the airflow via a fibreglass matrix cassette. The same PCB and register map are shared with the sibling HomEvap Cooler, Combi Comfort (All Season) and Direct variants, so the template can also be used as a reference for those units.

The device speaks Modbus RTU over RS-485 (the same bus also carries BACnet MS/TP). TapHome’s template is a ModbusTcpCCU, so an RTU-to-TCP gateway is required — the TapHome Modbus RTU Gateway is the recommended bridge. Through this link TapHome reads the built-in duct sensor (SHC80 humidity and temperature), writes the duct temperature and humidity setpoints, controls the primary SystemMode register (Auto / Humidify / Cool / Off) and surfaces telemetry from the wireless-hygrometer accessory.

Hardware connection

The HomEvap main PCB exposes a single 2-wire RS-485 pair on terminal block TB1. The same physical bus carries Modbus RTU or BACnet MS/TP — the protocol is selected by DIP switch settings (see Enabling Modbus communication below), not by wiring.

TB1 pinSignalNotes
1A+RS-485 non-inverting
2B−RS-485 inverting

Run a shielded twisted-pair (e.g. dedicated RS-485 cable) from the HomEvap TB1 screws to the A/B terminals of the Modbus RTU gateway. Connect the gateway to the same local network as the TapHome Core via Ethernet. The gateway then exposes the HomEvap on Modbus TCP port 502 with the slave address configured on the device.

Wiring diagram
HomEvap main PCB wiring diagram showing TB1 BACnet/Modbus RS-485 terminals, DIP blocks DS1/DS2, SHC80 duct sensor, heater, water valve and fan control terminals

Key terminals relevant to the TapHome integration:

TerminalPurpose
TB1BACnet / Modbus RS-485 — TapHome link via gateway
TB3Dry-contact inputs — drain blocked, main enable, user enable, airflow switch
TB11T1/RH1 duct sensor (SHC80) — source of LocalDuctHumidity / LocalDuctTemperature
TB624 V DC power (internal)
DS1 (DIP)Control source for internal logic (wireless controller / 0–10 V / hygrostat / T3 auto)
DS2 (DIP)Modbus enable (DS2.8) and slave address (DS2.1–DS2.7)

The HomEvap does not have an Ethernet or Wi-Fi port — it is an RS-485 device only. A Modbus RTU-to-TCP gateway is mandatory; TapHome cannot reach the unit directly.

Enabling Modbus communication

Modbus is enabled and addressed entirely through the DS2 DIP switch block on the main PCB. It is fully independent of the DS1 block (which configures the local control source).

  1. Enable the bus: set DS2.8 = ON. This switches the RS-485 interface on TB1 from BACnet MS/TP to Modbus RTU and activates the protocol handler.
  2. Set a unique slave address: switches DS2.1 through DS2.7 form the slave address as a 7-bit binary value (LSB = DS2.1). Each chained unit needs its own address.
    • Unit #1: DS2.1 ON, DS2.8 ON → address 1
    • Unit #2: DS2.1 OFF, DS2.2 ON, DS2.8 ON → address 2
  3. Verify traffic: once the gateway starts polling, the green LD2 / LD3 (TXD / RXD) LEDs next to TB1 flash with every successful request.

Default serial parameters are 8N2 at AutoBaud — the controller auto-selects between 9600, 19200, 38400 and 57600. Most RTU-to-TCP gateways work best at a fixed baud rate; configure the gateway for 9600 8N2 (or 8N1 — the device is tolerant, as confirmed by the community ESPHome bridge).

The HomEvap supports function codes 0x03 Read Holding Registers, 0x06 Write Single Register and 0x10 Write Multiple Registers. All addresses in the template are holding registers (H:*).

Writing the value 0 to register 0x01 (BaudRate) re-enables AutoBaud on the device. Do not include this register in a BMS poll or write loop — lock the baud rate at the gateway instead.

Terminating the RS-485 bus

Enable 120 Ω termination and fail-safe bias resistors only at the two physical ends of the RS-485 bus. On a short point-to-point run with a single HomEvap this means termination at the gateway and at the HomEvap TB1 end; when chaining multiple HomEvap units, terminate only at the first and last device on the line.

Configuration

When importing the template in TapHome, provide:

  • IP Address — the IP address of the RTU-to-TCP gateway on the local network
  • Slave ID — the Modbus slave address configured on the HomEvap via DS2.1–DS2.7 (default 1)

The HomEvap itself has no IP address. Assign a static IP to the gateway in the router’s DHCP reservation list so it does not change after a power cycle.

Device capabilities

The template exposes the following devices, all mapped onto holding registers H:15 — H:108:

Duct sensor readings
  • Duct Temperature / Humidity — reads the built-in SHC80 sensor mounted in the supply duct. Temperature comes from H:16 (LocalDuctTemperature, factor 10) and humidity from H:15 (LocalDuctHumidity). The duct sensor is also the unit’s internal high-humidity limiter (78 %RH cut-off).
Setpoints
  • Duct Temperature Setpoint — thermostat pairing the live duct temperature (H:16) with the writable duct temperature setpoint (H:45 DuctTempSetPoint, factor 10, range 1–50 °C, default 18 °C).
  • Duct Humidity Setpoint — writable duct humidity setpoint (H:55 DuctHumidifSetPoint, spec factor 10 %RH, range 0–90 %RH, default 78 %RH), exposed as a ModbusDimmer on a 0–1 scale.
  • Room Humidity Setpoint — writable room humidity setpoint (H:54 RoomHumidifSetPoint, spec factor 10 %RH, range 5–90 %RH, default 45 %RH), also exposed as a 0–1 dimmer.

Scaling note. The manufacturer’s register table defines humidity registers (H:15, H:54, H:55) with a factor of 10 (raw / 10 = %RH). The TapHome XML divides by 1000 instead, so that these registers map cleanly onto ModbusDimmer / ModbusTemperatureSensor device models which expect a 0–1 scale rather than 0–100 %RH. This is an intentional rescale, not a bug — the value in TapHome is simply %RH / 100.

Operating mode control
  • System Mode — multi-value switch on the primary control register H:88 (SystemMode). The manufacturer specification defines four modes: 1 = Auto, 2 = Humidify, 3 = Cool, 4 = Off. The template reserves additional placeholder slots (values 0 and 5–9) that map to raw values 64 and 69–73 — these are unused in the current firmware and exist so that new modes added in future firmware revisions can be surfaced without re-cutting the template.
Wireless hygrometer telemetry

The HomEvap ships with an optional 868 MHz wireless hygrometer-controller accessory. The template exposes its readings and setpoints via registers outside the published v3_03 table:

  • Wireless Hygrometer Temperature / Humidity — temperature (H:91, factor 100) and humidity (H:94) from the wireless accessory. Both Int16 and UInt16 variants are included as separate devices so the correct one can be selected on-site depending on firmware behaviour.
  • Wireless Hygrometer Temperature Setpoint / Humidity Setpoint — temperature setpoint (H:92) and humidity setpoint (H:95).
  • Wireless Hygrometer Humidity Setpoint — dedicated read-only view of H:95 in raw %RH units (factor 10), useful when the other device in the template reads the same register as a 0–1 dimmer value.
  • Wireless Hygrometer Mode — read-only operating mode from H:108. Value map matches SystemMode (1=Auto, 2=Humidify, 3=Cool, 4=Off).
  • Wireless Hygrometer Battery — raw battery status / level from H:97.

Undocumented registers. H:91, H:92, H:94, H:95, H:97 and H:108 are not listed in the official HomEvap v3_03 register table. They were reverse-engineered from live devices and are confirmed to work in the field (both by the TapHome template and by the community ESPHome Modbus bridge). HomEvap may re-assign them in future firmware updates — validate the readings on-site after any controller firmware upgrade.

If the RF link between the HomEvap and its wireless controller is unreliable (solid walls, long distances), install the optional T8 return-duct sensor on TB9 instead. It replaces the wireless hygrometer’s measurements on the local controller; the duct sensor (SHC80) remains the internal high-humidity limiter.

Troubleshooting

No Modbus communication
  1. Confirm DS2.8 = ON on the HomEvap main PCB — without this the TB1 bus is in BACnet mode.
  2. Verify the slave address on DS2.1–DS2.7 matches the Slave ID entered in the TapHome template.
  3. Check the TXD / RXD LEDs (LD2 / LD3) on the PCB during polling — if they stay dark the request never reaches the unit (cable polarity on A+/B−, gateway wiring or ground reference).
  4. Lock the gateway to a fixed baud rate (recommended 9600 8N2) rather than relying on AutoBaud.
  5. Confirm the RTU-to-TCP gateway is reachable from TapHome Core (ping the gateway IP, test port 502).
Humidity values look like 0.45 instead of 45 %RH

This is expected. TapHome’s ModbusDimmer / ModbusTemperatureSensor humidity inputs use a 0–1 scale, so the XML divides the spec’s factor-10 raw value by 1000 (raw 7800.78). Display it as a percentage in the app by multiplying by 100, or use the numeric value directly in smart rules.

Mode write has no effect

Check the unit’s local alarm state. If the alarm LED on the bottom is lit (M OFF on the controller display), the Main Enable dry contact on TB3 pin 4 is open and the unit is latched off regardless of Modbus commands. Restore the enable contact and the write will take effect on the next SystemMode update.

SystemMode returns an unexpected value

The XML exposes 10 slots (Value0Value9) but only 1 = Auto, 2 = Humidify, 3 = Cool, 4 = Off are defined in the v3_03 spec. If the register reads back as 64 or in the range 69–73, the unit has reported one of the placeholder values — treat these as “undefined / reserved” and check the controller display for the real state.

Spurious no-water or drain alarms

Persistent alarms map to System_status2 bits 10–15 — Drain Blocked, Airflow Switch, No Airflow, No Water, Heater Default, Service Alarm — and are also indicated by the alarm LED blink pattern on the bottom of the unit (3× = sensor, 9× = water, 11× = no airflow, 15× = heater, 17× = airflow, 19× = T2). Follow the installation manual’s fault table for corrective action; to clear a latched alarm remove the mains plug, wait 10 s and re-plug.

Available devices

HomEvap Humidifier Module
Duct Temperature / Humidity Temperature Sensor Read-only

Built-in SHC80 duct sensor — supply-duct air temperature and relative humidity. Humidity is reported on a 0–1 scale (%RH / 100).

Register: H:16 (temp), H:15 (humidity) Int16 Unit: °C / %RH

Duct Temperature / Humidity

Read humidity
MODBUSR(H, 15, Int16) / 1000
Read temperature
MODBUSR(H, 16, Int16) / 10
Local Room Temperature / Humidity Temperature Sensor Read-only

Room temperature and humidity from the wireless hygrometer accessory (UInt16 variant). Humidity is reported on a 0–1 scale (%RH / 100).

Register: H:91 (temp), H:94 (humidity) UInt16 Unit: °C / %RH

Local Room Temperature / Humidity

Read humidity
MODBUSR(H, 94, UInt16) / 1000
Read temperature
MODBUSR(H, 91, UInt16) / 100
Duct Temperature Setpoint Thermostat

Thermostat for the supply-duct temperature — reads the current duct temperature and writes the duct temperature setpoint (range 1–50 °C, default 18 °C).

Register: H:16 (current), H:45 (desired)H:45 Int16 Unit: °C

Duct Temperature Setpoint

Read temperature
MODBUSR(H, 16, Int16) / 10
Read desired temperature
MODBUSR(H, 45, Int16) / 10
Write desired temperature
MODBUSWNE(H, 45, Int16, Se * 10)
System Mode Multi-value Switch

Primary operating-mode selector for the HomEvap unit: Auto, Humidify, Cool or Off. Values 0 and 5–9 are placeholder slots reserved for future firmware.

Register: H:88 Int16 numeric
Values / States: Auto · Zvlhčování · Chlazení · Vypnuto

System Mode

Read switch state
MODBUSR(H, 88, Int16)
Write switch state
MODBUSWNE(H, 88, Int16, Mu)
Wireless Hygrometer Temperature / Humidity Temperature Sensor Read-only

Temperature and humidity reported by the wireless hygrometer accessory (Int16 variant on the same registers as the UInt16 device). Humidity is reported on a 0–1 scale (%RH / 100).

Register: H:91 (temp), H:94 (humidity) Int16 Unit: °C / %RH

Wireless Hygrometer Temperature / Humidity

Read humidity
MODBUSR(H, 94, Int16) / 1000
Read temperature
MODBUSR(H, 91, Int16) / 100
Wireless Hygrometer Humidity Setpoint Variable Read-only

Read-only view of the wireless hygrometer's humidity setpoint in %RH (raw register value divided by 10).

Register: H:95 Int16 Unit: %RH

Wireless Hygrometer Humidity Setpoint

Read
MODBUSR(H, 95, Int16)/10
Wireless Hygrometer Battery Variable Read-only

Battery status or level of the wireless hygrometer accessory (raw value — manufacturer does not document the interpretation).

Register: H:97 Int16

Wireless Hygrometer Battery

Read
MODBUSR(H, 97, Int16)
Wireless Hygrometer Mode Multi-value Switch Read-only

Read-only operating mode reported by the wireless hygrometer accessory. Same value map as System Mode: Auto, Humidify, Cool, Off.

Register: H:108 Int16 numeric
Values / States: Auto · Zvlhčování · Chlazení · Vypnuto

Wireless Hygrometer Mode

Read switch state
MODBUSR(H, 108, Int16)
Duct Humidity Setpoint Dimmer

Duct humidity setpoint (range 0–90 %RH, default 78 %RH) exposed as a ModbusDimmer on a 0–1 scale (%RH / 100).

Register: H:55 Int16 (read), UInt16 (write) Unit: %RH (as 0–1 dimmer level)

Duct Humidity Setpoint

Read level
MODBUSR(H, 55, Int16) / 1000
Write level
MODBUSWNE(H, 55, UInt16, Le * 1000)
Wireless Hygrometer Setpoints Temperature Sensor Read-only

Wireless hygrometer temperature setpoint and humidity setpoint, exposed as a temperature sensor with an attached humidity readout.

Register: H:92 (temp setpoint), H:95 (humidity setpoint) Int16 Unit: °C / %RH

Wireless Hygrometer Setpoints

Read humidity
MODBUSR(H, 95, Int16)/1000
Read temperature
MODBUSR(H, 92, Int16)/10
Room Humidity Setpoint Dimmer

Room humidity setpoint (range 5–90 %RH, default 45 %RH) exposed as a ModbusDimmer on a 0–1 scale (%RH / 100).

Register: H:54 Int16 Unit: %RH (as 0–1 dimmer level)

Room Humidity Setpoint

Read level
MODBUSR(H, 54, Int16) / 1000
Write level
MODBUSWNE(H, 54, Int16, Le * 1000)
Connection: Modbus TCP • Slave ID: $[SlaveId]
Possible improvements (19)
  • H:13 (0x0D) LocalRoomHumidity — AI1 room humidity from SHC80 (factor 10, %RH, 0-100). Could be exposed as ModbusTemperatureSensor humidity.
  • H:14 (0x0E) LocalRoomTemperature — AI2 room temperature from SHC80 (factor 10, °C, 0-100). Built-in wired room sensor, complement to duct sensor (device #0).
  • H:17 (0x11) T2_Temperature — AI5 T2 RTD temperature (factor 10, °C, 0-50).
  • H:18 (0x12) T3_Temperature (outside air) — AI6 T3 outside-air RTD temperature (factor 10, °C, 0-50).
  • H:9 (0x09) System_status1 — Status flag register — bit 10 = System OFF, bit 14 = NO T3 SENSOR, bit 15 = duct sensor disconnected. Useful diagnostics.
  • H:10 (0x0A) System_status2 (alarms) — Alarm register — bits 10–15 are critical alarms: Drain Blocked, Airflow Switch, No Airflow, No Water, Heater Default, Service Alarm. Recommended minimum register per spec.
  • H:11 (0x0B) System_status3 — Secondary alarm register — wireless device communication error (bit 5), NoAir/NoCool/Outdef/Retdef/T2def/SupplyDef alarms (bits 10–15).
  • H:26 (0x1A) FanOutput — Current fan output status (factor 10, %, 0-100).
  • H:27 (0x1B) SSROutput (heater) — SSR pulsing output for heater (factor 10, %, 0-100).
  • H:28 (0x1C) TPM_Valve1 — Valve 1 TPM output status (factor 10, %, 0-100).
  • H:29 (0x1D) TPM_Valve2 — Valve 2 TPM output status (factor 10, %, 0-100).
  • H:35 (0x23) HeatingDemand — Heating PID output (factor 10, %, 0-100).
  • H:44 (0x2C) RoomTempSetPoint — Room temperature setpoint, R/W (signed, factor 10, °C, default 19, range 1–45). Could be exposed as a Thermostat device alongside the duct setpoint.
  • H:56 (0x38) HumidifDemand — Humidity PID output (factor 10, %, 0-100).
  • H:62 (0x3E) Valve1CycleCount — Valve 1 cycle counter — service metric.
  • H:66 (0x42) Valve2CycleCount — Valve 2 cycle counter — service metric.
  • H:67 (0x43) Cfg_ServiceInterval — Valve service cycle count max (R/W, default 15000, range 5000-30000).
  • H:83 (0x53) bit 1 Clear Service Alarm — Write bit 1 of System command register to clear service alarm (recommended minimum per spec).
  • H:83 (0x53) bit 2 Clear System Alarm — Write bit 2 of System command register to clear system alarm.

Sources

Found a problem with this device template?

Tell us what's wrong, what's missing, or how the template should behave. We rely on your feedback to keep the catalog accurate.

Verified by TapHome

Want to use this in your TapHome Core?

Open this template in the Customer Portal to apply it to one of your homes, or to draft a refinement and submit it back to the catalog.

Open in portal