Hi everyone,
I would like to share a fully verified and working Modbus TCP integration guide for the Brink Flair 325 ventilation unit (built 2021)[cite: 11] using a Waveshare RS485 TO POE ETH (B) industrial gateway[cite: 8].
After testing and resolving shifted register addresses, here is the complete, true physical register map matching the physical LCD display[cite: 9, 10], along with the configuration.yaml and Lovelace cards.
Full documentation and future updates are also available in my GitHub Gist:
https://gist.github.com/MiraKubin/a6b0ecba16310544d34924c715bb11a3
1. Hardware & Wiring
- Unit: Brink Flair 325 4/0 R EU[cite: 11]
- Gateway: Waveshare RS485 TO POE ETH (B)[cite: 8]
- Connections (Red 3-pin Modbus terminal on the Brink mainboard)[cite: 14]:
- Pin A (+) → 485A on Waveshare[cite: 8, 14]
- Pin B (-) → 485B on Waveshare[cite: 8, 14]
- Pin GND → GND on Waveshare[cite: 8, 14]
Serial Settings (Waveshare Web GUI)
- Baud Rate: 19200 bps
- Data Bits: 8
- Parity: EVEN
- Stop Bits: 1
- Mode: Modbus TCP to RTU / TCP Server (Port 502)
- Brink Slave ID: 11[cite: 9]
2. Verified Modbus Register Map
| Parameter | Register Type | Address | Data Type | Scale | Unit | Notes |
|---|---|---|---|---|---|---|
| Operating Hours | Input | 4000 |
uint16 | 1 | h | Fan running hours |
| Exhaust from interior (T3) | Input | 4001 |
int16 | 0.1 | °C | Air extracted from house |
| Fresh outdoor air (T1) | Input | 4005 |
int16 | 0.1 | °C | Fresh intake from outside |
| Bypass damper status | Input | 4020 |
uint16 | 1 | code | 4 = Closed |
| Operating mode | Input | 4022 |
uint16 | 1 | code | 1 = Auto/Profile[cite: 9] |
| Supply pressure (Inlet) | Input | 4023 |
uint16 | 1 | Pa | Supply branch pressure[cite: 9] |
| Exhaust pressure (Outlet) | Input | 4024 |
uint16 | 1 | Pa | Exhaust branch pressure[cite: 9] |
| Target flow rate | Input | 4031 |
uint16 | 1 | m³/h | Target setting[cite: 9] |
| Actual flow supply | Input | 4032 |
uint16 | 1 | m³/h | Measured supply air flow |
| Supply fan speed | Input | 4034 |
uint16 | 1 | RPM | Supply blower RPM[cite: 9] |
| Supply to interior (T2) | Input | 4036 |
int16 | 0.1 | °C | Heated air entering living areas |
| Supply humidity | Input | 4037 |
uint16 | 1 | % RH | Humidity inlet |
| Actual flow exhaust | Input | 4041 |
uint16 | 1 | m³/h | Measured exhaust air flow |
| Exhaust fan speed | Input | 4044 |
uint16 | 1 | RPM | Exhaust blower RPM |
| Exhaust to outdoor (T4) | Input | 4046 |
int16 | 0.1 | °C | Cold exhaust leaving house |
| Exhaust humidity | Input | 4047 |
uint16 | 1 | % RH | Humid to outside |
| Flow rate control | Holding | 6001 |
uint16 | 1 | m³/h | Writable register (50–300 m³/h)[cite: 9] |
3. Home Assistant Configuration (configuration.yaml)
modbus:
- name: brink
type: tcp
host: 10.0.0.51 # Replace with your Waveshare IP[cite: 9]
port: 502
timeout: 5
delay: 1
sensors:
- name: "Brink Aktuální provozní režim"
unique_id: brink_current_mode
slave: 11
address: 4022
input_type: input
data_type: uint16
- name: "Brink Stav bypass klapky"
unique_id: brink_bypass_state
slave: 11
address: 4020
input_type: input
data_type: uint16
- name: "Brink Teplota čerstvý vzduch venkovní T1"
unique_id: brink_temp_t1
slave: 11
address: 4005
input_type: input
data_type: int16
scale: 0.1
precision: 1
unit_of_measurement: "°C"
device_class: temperature
state_class: measurement
- name: "Brink Teplota přívod do interiéru T2"
unique_id: brink_temp_t2
slave: 11
address: 4036
input_type: input
data_type: int16
scale: 0.1
precision: 1
unit_of_measurement: "°C"
device_class: temperature
state_class: measurement
- name: "Brink Teplota odtah z interiéru T3"
unique_id: brink_temp_t3
slave: 11
address: 4001
input_type: input
data_type: int16
scale: 0.1
precision: 1
unit_of_measurement: "°C"
device_class: temperature
state_class: measurement
- name: "Brink Teplota výfuk do exteriéru T4"
unique_id: brink_temp_t4
slave: 11
address: 4046
input_type: input
data_type: int16
scale: 0.1
precision: 1
unit_of_measurement: "°C"
device_class: temperature
state_class: measurement
- name: "Brink Vlhkost přívod do interiéru"
unique_id: brink_humidity_supply
slave: 11
address: 4037
input_type: input
data_type: uint16
unit_of_measurement: "%"
device_class: humidity
state_class: measurement
- name: "Brink Vlhkost výfuk do exteriéru"
unique_id: brink_humidity_exhaust
slave: 11
address: 4047
input_type: input
data_type: uint16
unit_of_measurement: "%"
device_class: humidity
state_class: measurement
- name: "Brink Průtok požadovaný"
unique_id: brink_flow_target
slave: 11
address: 4031
input_type: input
data_type: uint16
unit_of_measurement: "m³/h"
state_class: measurement
- name: "Brink Průtok aktuální přívod"
unique_id: brink_flow_supply_actual
slave: 11
address: 4032
input_type: input
data_type: uint16
unit_of_measurement: "m³/h"
state_class: measurement
- name: "Brink Otáčky ventilátoru přívod"
unique_id: brink_fan_rpm_supply
slave: 11
address: 4034
input_type: input
data_type: uint16
unit_of_measurement: "RPM"
state_class: measurement
- name: "Brink Tlak přívod"
unique_id: brink_pressure_supply
slave: 11
address: 4023
input_type: input
data_type: uint16
unit_of_measurement: "Pa"
device_class: pressure
state_class: measurement
- name: "Brink Průtok aktuální odtah"
unique_id: brink_flow_extract_actual
slave: 11
address: 4041
input_type: input
data_type: uint16
unit_of_measurement: "m³/h"
state_class: measurement
- name: "Brink Otáčky ventilátoru odtah"
unique_id: brink_fan_rpm_extract
slave: 11
address: 4044
input_type: input
data_type: uint16
unit_of_measurement: "RPM"
state_class: measurement
- name: "Brink Tlak odtah"
unique_id: brink_pressure_extract
slave: 11
address: 4024
input_type: input
data_type: uint16
unit_of_measurement: "Pa"
device_class: pressure
state_class: measurement
- name: "Brink Provozní hodiny"
unique_id: brink_operating_hours
slave: 11
address: 4000
input_type: input
data_type: uint16
unit_of_measurement: "h"
state_class: total_increasing
template:
- number:
- name: "Brink Výkon rekuperace"
unique_id: brink_vykon_rekuperace_procenta
min: 15
max: 100
step: 5
unit_of_measurement: "%"
icon: mdi:fan
state: >-
{% set m3 = states('sensor.brink_prutok_pozadovany') | float(50) %}
{{ ([15, ((m3 / 300) * 100)] | max) | round(0) }}
set_value:
- action: modbus.write_register
data:
hub: brink
slave: 11
address: 6001
value: >-
{% set flow = ((value | float * 3) | round(0)) | int %}
{{ [50, [flow, 300] | min] | max }}
4. Lovelace Dashboard Cards
# Telemetry Card
type: entities
title: Telemetrie rekuperace
grid_options:
columns: 12
rows: auto
show_header_toggle: false
entities:
- type: section
label: Temperatures & Humidity
- entity: sensor.brink_teplota_cerstvy_vzduch_venkovni_t1
name: Outdoor Intake (T1)
icon: mdi:thermometer-chevron-down
- entity: sensor.brink_teplota_privod_do_interieru_t2
name: Supply to House (T2)
icon: mdi:thermometer-chevron-up
- entity: sensor.brink_teplota_odtah_z_interieru_t3
name: Extract from House (T3)
icon: mdi:home-thermometer-outline
- entity: sensor.brink_teplota_vyfuk_do_exterieru_t4
name: Exhaust to Outside (T4)
icon: mdi:weather-dust
- entity: sensor.brink_vlhkost_privod_do_interieru
name: Supply Humidity
icon: mdi:water-percent
- entity: sensor.brink_vlhkost_vyfuk_do_exterieru
name: Exhaust Humidity
icon: mdi:water-percent-alert
- type: section
label: Airflow & Blowers
- entity: sensor.brink_prutok_pozadovany
name: Target Airflow
icon: mdi:target
- entity: sensor.brink_prutok_aktualni_privod
name: Actual Supply Flow
icon: mdi:weather-windy
- entity: sensor.brink_otacky_ventilatoru_privod
name: Supply Fan RPM
icon: mdi:fan-speed-2
- entity: sensor.brink_tlak_privod
name: Supply Pressure
icon: mdi:gauge
- entity: sensor.brink_prutok_aktualni_odtah
name: Actual Extract Flow
icon: mdi:weather-windy-variant
- entity: sensor.brink_otacky_ventilatoru_odtah
name: Extract Fan RPM
icon: mdi:fan-speed-2
- entity: sensor.brink_tlak_odtah
name: Extract Pressure
icon: mdi:gauge
- type: section
label: System
- entity: sensor.brink_stav_bypass_klapky
name: Bypass State
icon: mdi:valve
- entity: sensor.brink_aktualni_provozni_rezim
name: Operating Mode
icon: mdi:tune-vertical
- entity: sensor.brink_provozni_hodiny
name: Total Operating Hours
icon: mdi:clock-outline