The Jablotron Futura L+ is a heat-recovery ventilation unit (MVHR) with an enthalpy counter-current exchanger, built by JABLOTRON LIVING TECHNOLOGY CZ for residential buildings. TapHome connects directly to the unit via Modbus TCP over Ethernet — no gateway or accessory module is required.
The template exposes ventilation mode selection, timed boost/circulation/overpressure functions, filter wear, supply/exhaust/outdoor temperature and humidity, heat-recovery and power metrics, feature enable switches (bypass, heating, cooling, anti-radon, auto-circulation), a temperature setpoint and read/write access to the 8 external-sensor and 8 external-button zones.
The Futura L+ has a condensed register address space that differs from the Futura L/M/S. A separate TapHome template (Jablotron Futura L, M, S) exists for the older models. Importing the wrong template will produce ILLEGAL_DATA_ADDRESS errors or silently read junk. Verify the unit model before import.
The Futura unit has a single RJ45 Ethernet connector on the main control board (X1 — LAN). Connect it to the same local network as TapHome Core using a standard Ethernet cable — no additional gateway, converter or accessory is required for TapHome integration.
Only the LAN connector (X1) is relevant for TapHome. The RS-485 buses (X2, X3) and AA bus (X6) are reserved for Jablotron’s own accessories (Alfa control panels, wall sensors, CoolBreeze, VarioBreeze) and are not exposed for external BMS use.
Control board connectors
Connector
Type
Function
X1
RJ45
LAN — Modbus TCP to TapHome, MyJABLOTRON cloud
X2
Phoenix Contact 3-pin
RS-485 bus — reserved / unused
X3
Phoenix Contact 4-pin
RS-485 bus for Alfa panels, CO2 sensors, CoolBreeze
X4
Phoenix Contact 2-pin
NTC 10 kΩ outdoor-temperature sensor
X5
Phoenix Contact 5-pin
IN/OUT: LED, BST (boost), IN2, IN1 (0–10 V or contact), GND
X6
Phoenix Contact 2-pin
AA bus (legacy single-panel bus)
T1
PCB button
Short press = filter init, long press = Bluetooth service mode
Analog inputs IN1/IN2 on X5 (0–10 V or potential-free contact) are an optional parallel BMS channel. Per the installation manual, analog control is superior to CO2 sensors (overrides them) — useful when Modbus TCP is not feasible, but TapHome integration uses only the LAN port.
No activation, DIP switch or service menu is required to enable Modbus TCP on the Futura L+. The TCP server is active by default once the unit is powered and connected to the LAN.
The Futura L+ accepts only one Modbus TCP client at a time. If another system (Home Assistant, custom Modbus client, second TapHome Core) is already connected, TapHome will be unable to open the socket. Disconnect other Modbus TCP clients before importing the template. The MyJABLOTRON cloud link uses outbound HTTPS and does not occupy the Modbus socket.
Assign a static IP address to the Futura L+ in the router’s DHCP reservation table. The unit does not advertise itself via mDNS/Zeroconf, so a stable IP is required for reliable reconnection after power cycles.
Composite registers (uint32, int32) must be read and written in a single Modbus operation — partial reads return ILLEGAL_DATA_ADDRESS. The TapHome template batches reads correctly; this error during normal operation typically indicates the wrong template variant (L/M/S vs L+) was imported.
Optional password protection
Holding register HR:920 (user_password) is 65535 = disabled by default, meaning Modbus writes are accepted without authentication. If an installer has enabled password protection via the MyJABLOTRON / MyCOMPANY app, Modbus writes will silently fail until the access code is written to HR:900 within the password timeout (default 300 s, HR:922). For typical TapHome installations, leave the password disabled.
The template exposes 84 devices covering unit-wide metrics, timed functions, feature toggles, the temperature setpoint and the 8 external-sensor and 8 external-button zones.
Ventilation mode
Ventilation Mode — selector for fan power via holding register HR:0. Exposed values: Off (0), manual Level 1–5 (1–5), Automatic (6). The template additionally exposes numeric values 7–9 that have no documented meaning in the register map and should be treated as reserved.
Timed functions
Three timed functions are exposed as multi-value switches with 10 preset durations (Off, 30 s, 60 s, 5 min, 10 min, 15 min, 30 min, 1 h, 1.5 h, 2 h). Each function also exposes a Remaining Time [s] service attribute and a service action accepting a custom countdown value (1–7200 s):
Boost Function (HR:1) — maximum ventilation for the selected period
Circulation Function (HR:2) — air recirculation (internal loop) without heat recovery
Overpressure Function (HR:3) — supply > exhaust, useful during fireplace ignition
Reading the register returns the remaining countdown in seconds; writing arms the function.
Air path sensors
Three of the unit’s air-path sensor positions are exposed, each combining temperature and humidity from separate input registers:
Device
Temperature
Humidity
Description
Outdoor Air
IR:12
IR:16
Ambient air before heat recovery
Supply Air
IR:13
IR:17
Fresh air delivered into the building
Exhaust Air
IR:15
IR:19
Waste air leaving the building
External NTC Sensor
IR:20
—
Optional NTC 10 kΩ outdoor probe on X4
Temperatures are stored as 0.1 °C (int16) and scaled to °C in the template; humidity values are scaled to fractions (0–1) from the raw 0.1 % reading.
The External NTC Sensor reports -99 when no probe is connected to the X4 connector. The template maps this sentinel to NaN so the value does not appear as a valid temperature in TapHome.
Performance monitoring
Heat Recovery (IR:23) — instantaneous heat recovered from exhaust into supply, in W
Power Consumption (IR:22) — total electrical power draw of the unit, in W
Heating Power (IR:24) — current draw of the internal 350 W electric post-heater, in W
Air Flow (IR:25) — combined supply + exhaust volumetric flow, in m³/h
Preferred Temperature (HR:4) — indoor temperature setpoint for the unit’s internal control loop, in °C. Reads and writes are scaled ×10 (0.1 °C resolution).
Feature enable switches
Binary on/off switches controlling unit behavior:
Bypass Enable (HR:7) — automatic bypass of the heat exchanger when free cooling is useful
Verify the Ethernet cable is connected to X1 (LAN) on the main board — not to any Phoenix Contact terminal
Confirm the unit’s IP address via the router’s DHCP lease table or the MyJABLOTRON app; ensure TapHome Core and the Futura are on the same subnet
Check that no firewall is blocking TCP port 502 between TapHome and the unit
Ensure no other Modbus TCP client (Home Assistant, diagnostic tool, second TapHome Core) is holding the single available socket — disconnect any such client and retry
Verify firmware is FLA.P.01.06 or newer (visible in MyJABLOTRON)
ILLEGAL_DATA_ADDRESS errors
Composite registers (uint32 bitmaps, int32 timestamps) must be read in a single Modbus operation. In practice this error during normal TapHome polling indicates the wrong template variant was imported. The L/M/S template addresses registers at IR:30–52 / HR:0–17 which do not exist in the L+ map (L+ starts at IR:0 and HR:0 with a condensed layout). Re-import the correct Jablotron Futura L+ template.
Modbus writes have no effect
If the unit responds to reads but ignores writes (mode changes, timer starts, enable toggles), the installer may have enabled the user password in MyJABLOTRON. Either disable the password (write 65535 to HR:920 while logged in) or keep HR:900 authenticated by writing the access code within the HR:922 timeout window. For typical TapHome installations the password should remain disabled.
Mode or timer values look wrong
The Futura L+ uses 0.1 °C and 0.1 % encoding for temperatures and humidity. The TapHome template already applies the correct scaling (÷10 for temperature, ÷1000 for humidity in the supply/exhaust/outdoor devices). If values appear 10× or 1000× off, the wrong template (L/M/S) was imported — the scaling factors differ between variants.
Available devices
Jablotron Futura L+Module
Service Attributes
MAC Address
Firmware Version
Jablotron Futura L+
Read (module)
var Code := MODBUSR(A,6, UInt32);
IF (GETBIT(Code,0), ADDINFO(0,"Aktivní funkce Boost"));
IF (GETBIT(Code,1), ADDINFO(1,"Aktivní funkce Cirkulace"));
IF (GETBIT(Code,2), ADDINFO(2,"Aktivní časový program"));
IF (GETBIT(Code,3), ADDINFO(3,"Aktivní funkce Přetlak"));
IF (GETBIT(Code,4), ADDINFO(4,"Aktivní funkce Dovolená"));
IF (GETBIT(Code,5), ADDINFO(5,"Aktivní funkce Párty"));
IF (GETBIT(Code,6), ADDINFO(6,"Aktivní funkce Noční režim"));
IF (GETBIT(Code,7), ADDINFO(7,"Aktivní funkce Protiradonová ochrana"));
IF (GETBIT(Code,8), ADDINFO(8,"Zařízení je zapnuto, není v režimu snížené spotřeby"));
IF (GETBIT(Code,9), ADDINFO(9,"Probíhá kontrola filtrů"));
IF (GETBIT(Code,10), ADDINFO(10,"Probíhá vysoušení"));
IF (GETBIT(Code,11), ADDINFO(11,"Otevřený Bypass"));
IF (GETBIT(Code,12), ADDINFO(12,"Nízká venkovní teplota, omezená funkce větrání"));
IF (GETBIT(Code,13), ADDINFO(13,"Odstavení po chybě"));
IF (GETBIT(Code,14), ADDINFO(14,"Zařízení se spouští"));
IF (GETBIT(Code,15), ADDINFO(15,"Aktivní servisní režim"));
IF (GETBIT(Code,16), ADDINFO(16,"Teplota odpadního vzduchu < -3°C (splněna podmínka ochrany před zamrznutím)"));
IF (GETBIT(Code,17), ADDINFO(17,"Nouzové vypnutí"));
IF (GETBIT(Code,18), ADDINFO(18,"Nouzové vypnutí"));
IF (GETBIT(Code,19), ADDINFO(19,"Odměřování tlakové ztráty"));
IF (GETBIT(Code,20), ADDINFO(20,"Stand-by"));
IF (GETBIT(Code,21), ADDINFO(21,"Zónový boost"));
IF (GETBIT(Code,22), ADDINFO(22,"Odměřování tlakové ztráty zón"));
Code := MODBUSR(A,8, UInt32);
IF (GETBIT(Code,0), ADDERROR(0,"Chyba senzoru ambient"));
IF (GETBIT(Code,1), ADDERROR(1,"Chyba senzoru indoor"));
IF (GETBIT(Code,2), ADDERROR(2,"Chyba senzoru fresh"));
IF (GETBIT(Code,3), ADDERROR(3,"Chyba senzoru waste"));
IF (GETBIT(Code,4), ADDERROR(4,"Chyba přívodního ventilátoru"));
IF (GETBIT(Code,5), ADDERROR(5,"Chyba odtahového ventilátoru"));
IF (GETBIT(Code,6), ADDERROR(6,"Chyba komunikace s výměníkem"));
IF (GETBIT(Code,7), ADDERROR(7,"Chyba polohy klapek výměníku"));
IF (GETBIT(Code,8), ADDERROR(8,"Chyba komunikace s IO deskou"));
IF (GETBIT(Code,9), ADDERROR(9,"Zablokovaný přívodní ventilátor"));
IF (GETBIT(Code,10), ADDERROR(10,"Zablokovaný odtahový ventilátor"));
IF (GETBIT(Code,11), ADDERROR(11,"Chyba komunikace s Coolbreeze"));
IF (GETBIT(Code,12), ADDERROR(12,"Chyba venkovní jednotky Coolbreeze"));
Code := MODBUSR(A,10, UInt32);
IF (GETBIT(Code,0), ADDWARNING(0,"Neinicializovaný filtr"));
IF (GETBIT(Code,1), ADDWARNING(1,"Filtr je příliš zanesený"));
IF (GETBIT(Code,2), ADDWARNING(2,"Filtr se používá příliš dlouho"));
IF (GETBIT(Code,3), ADDWARNING(3,"Nízké napětí RTC baterie"));
IF (GETBIT(Code,4), ADDWARNING(4,"Příliš vysoké otáčky přívodního ventilátoru"));
IF (GETBIT(Code,5), ADDWARNING(5,"Příliš vysoké otáčky odtahového ventilátoru"));
IF (GETBIT(Code,8), ADDWARNING(8,"Příliš nízká venkovní teplota, omezená funkce větrání"));
IF (GETBIT(Code,9), ADDWARNING(9,"Nesprávná konfigurace zónového větrání - přívod"));
IF (GETBIT(Code,10), ADDWARNING(10,"Nesprávná konfigurace zónového větrání - odtah"));
IF (GETBIT(Code,11), ADDWARNING(11,"Nouzové vypnutí"));
IF (GETBIT(Code,12), ADDWARNING(12,"Chyba komunikace se SuperBreeze"));
IF (GETBIT(Code,13), ADDWARNING(13,"Obecná chyba SuperBreeze"));
IR:6-7Operation Mode Bitmap (fut_mode) — UInt32, bitmap of 24 active mode/status bits — template parses this in readscript for info/error/warning ADDINFO calls but does not expose a dedicated device
IR:8-9Error Bitmap (fut_error) — UInt32, 22 error bits (sensor errors, fan errors, exchanger errors) — parsed in readscript as ADDERROR, not exposed as device
IR:10-11Warning Bitmap (fut_warning) — UInt32, 18 warning bits (filter, battery, zone config) — parsed in readscript as ADDWARNING, not exposed as device
IR:14Indoor Air Temperature (fut_temp_indoor) — Int16, 0.1°C — indoor/extract air temperature upstream of the exchanger
IR:18Indoor Air Humidity (fut_humi_indoor) — Int16, 0.1% — indoor/extract air humidity
IR:26Heating/Cooling Status (fut_heat_cool_status) — UInt16, bitmask: inner heating, CoolBreeze heating/cooling active; L+ only
HR:8Heating Enable (cfg_heating_enable, per register map) — UInt16, 0/1 — register map documents L+ cfg_heating_enable at HR:8. Template uses HR:15 instead (see Inconsistency Report)
HR:101, 111, …, 171External Sensor Invalidate (ext_sens_invalidate[1–8]) — UInt16 bitmask per zone — bit0=temp, bit1=humidity, bit2=CO2, bit3=floor temp invalidation flags
HR:105, 115, …, 175External Floor Temperature (ext_sens_t_floor[1–8]) — Int16, 0.1°C per zone — floor temperature sensor channel, R/W
HR:900Access Code — UInt16 — write to unlock service registers after user_password is set
HR:920User Password — UInt16, 65535 = disabled — gates Modbus writes when enabled by installer
HR:922Password Timeout — UInt16, default 300 s — auto-logout after inactivity