
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 pin | Signal | Notes |
|---|---|---|
| 1 | A+ | RS-485 non-inverting |
| 2 | B− | 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

Key terminals relevant to the TapHome integration:
| Terminal | Purpose |
|---|---|
| TB1 | BACnet / Modbus RS-485 — TapHome link via gateway |
| TB3 | Dry-contact inputs — drain blocked, main enable, user enable, airflow switch |
| TB11 | T1/RH1 duct sensor (SHC80) — source of LocalDuctHumidity / LocalDuctTemperature |
| TB6 | 24 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).
- 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. - Set a unique slave address: switches
DS2.1throughDS2.7form 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
- Unit #1:
- 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
0to register0x01(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(default1)
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 fromH: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:45DuctTempSetPoint, factor 10, range 1–50 °C, default 18 °C). - Duct Humidity Setpoint — writable duct humidity setpoint (
H:55DuctHumidifSetPoint, spec factor 10 %RH, range 0–90 %RH, default 78 %RH), exposed as aModbusDimmeron a 0–1 scale. - Room Humidity Setpoint — writable room humidity setpoint (
H:54RoomHumidifSetPoint, 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 ontoModbusDimmer/ModbusTemperatureSensordevice 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 (values0and5–9) that map to raw values64and69–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. BothInt16andUInt16variants 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:95in 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 matchesSystemMode(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:97andH:108are 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
- Confirm
DS2.8 = ONon the HomEvap main PCB — without this the TB1 bus is in BACnet mode. - Verify the slave address on
DS2.1–DS2.7matches the Slave ID entered in the TapHome template. - 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). - Lock the gateway to a fixed baud rate (recommended 9600 8N2) rather than relying on AutoBaud.
- 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 780 → 0.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 (Value0–Value9) 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.
