Hi,
I am trying to follow Brink Flair 325 Heat recovery unit ESPhome modbus integration (~$5). I managed to connect my Nodemcuv2 with RS485 and then with the device I want to control - HRV unit. Interestingly enough, I can control e.g. the airflow, which corresponds to this part of the config:
number:
- platform: modbus_controller
modbus_controller_id: rekup
name: "Rekup Modbus step setting"
id: rekup_step_setting
register_type: holding
address: 8001
value_type: S_WORD
min_value: 0
max_value: 3
mode: slider
i.e. when I change the step, it does change it physically on the unit as expected. Similarly, I can change the bypass mode (open/close). So I think my setup is correct (and it’s very similar to what I used before via RPi, so I know it works with the unit and that the registers and commands are correct). But I cannot actually “read” anything else:
Full config:
esphome:
name: esphome-web-aee2ce
platform: ESP8266
board: nodemcuv2
# Enable logging
logger:
level: VERBOSE
# Enable Home Assistant API
api:
ota:
web_server:
port: 80
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: "Esphome HRV control"
password: "GvJ6AafkENq6"
captive_portal:
uart:
id: mod_bus
tx_pin: D3
rx_pin: D2
baud_rate: 19200
stop_bits: 1
parity: even
modbus:
id: modbus1
modbus_controller:
- id: rekup
address: 0x14
modbus_id: modbus1
setup_priority: -10
text_sensor:
- platform: modbus_controller
modbus_controller_id: rekup
id: rekup_bypass_status_text
register_type: read
address: 4050
raw_encode: NONE
name: Rekup Bypass Status
lambda: |-
uint16_t int_mode = (data[item->offset] << 8) + data[item->offset+1];
ESP_LOGD("main","Parsed operation mode int : %d", int_mode);
std::string mode_str;
switch (int_mode) {
case 0: mode_str = "INITIALIZATING"; break;
case 1: mode_str = "OPEN"; break;
case 2: mode_str = "CLOSED"; break;
case 3: mode_str = "OPEN"; break;
case 4: mode_str = "CLOSED"; break;
default: mode_str = "Unknown"; break;
}
return mode_str;
sensor:
- platform: modbus_controller
modbus_controller_id: rekup
name: "Rekup To House temperature"
id: rekup_to_house_temp
register_type: read
address: 4036
unit_of_measurement: "°C"
value_type: S_WORD
accuracy_decimals: 1
filters:
- multiply: 0.1
- platform: modbus_controller
modbus_controller_id: rekup
name: "Rekup To House humidity"
id: rekup_to_house_humidity
register_type: read
address: 4037
unit_of_measurement: "%"
value_type: S_WORD
accuracy_decimals: 1
- platform: modbus_controller
modbus_controller_id: rekup
name: "Rekup To Outside Temperature"
id: rekup_to_outside_temp
register_type: read
address: 4046
unit_of_measurement: "°C"
value_type: S_WORD
accuracy_decimals: 1
filters:
- multiply: 0.1
- platform: modbus_controller
modbus_controller_id: rekup
name: "Rekup To Outside humidity"
id: rekup_to_outside_humidity
register_type: read
address: 4047
unit_of_measurement: "%"
value_type: S_WORD
accuracy_decimals: 1
- platform: modbus_controller
modbus_controller_id: rekup
name: "Rekup From Outside Temperature"
id: rekup_from_outside_temp
register_type: read
address: 4081
unit_of_measurement: "°C"
value_type: S_WORD
accuracy_decimals: 1
filters:
- multiply: 0.1
- platform: modbus_controller
modbus_controller_id: rekup
name: "Rekup Flow Actual Intake"
id: rekup_prutok_in
register_type: read
address: 4032
unit_of_measurement: "m3/h"
value_type: S_WORD
- platform: modbus_controller
modbus_controller_id: rekup
name: "Rekup Flow Actual Exhaust"
id: rekup_prutok_out
register_type: read
address: 4042
unit_of_measurement: "m3/h"
value_type: S_WORD
select:
- platform: modbus_controller
modbus_controller_id: rekup
name: "Rekup Modbus Control Mode"
address: 8000
value_type: S_WORD
optimistic : TRUE
optionsmap:
"Device LCD": 0
"Modbus Step": 1
"Modbus Flow": 2
- platform: modbus_controller
modbus_controller_id: rekup
name: "Rekup Bypass Mode"
address: 6100
value_type: S_WORD
optimistic : TRUE
optionsmap:
"Auto": 0
"Closed": 1
"Open": 2
switch:
- platform: modbus_controller
modbus_controller_id: rekup
name: "Rekup Bypass Boost switch"
register_type: holding
address: 6104
bitmask: 1
entity_category: config
icon: "mdi:toggle-switch"
number:
- platform: modbus_controller
modbus_controller_id: rekup
name: "Rekup Modbus step setting"
id: rekup_step_setting
register_type: holding
address: 8001
value_type: S_WORD
min_value: 0
max_value: 3
mode: slider
- platform: modbus_controller
modbus_controller_id: rekup
name: "Rekup Modbus flow value"
id: rekup_prutok_nastaveni
register_type: holding
address: 8002
value_type: S_WORD
min_value: 0
max_value: 400
mode: slider
- platform: modbus_controller
modbus_controller_id: rekup
name: "Rekup Flow 1"
id: rekup_flow_1
register_type: holding
address: 6001
unit_of_measurement: "m3/h"
value_type: S_WORD
min_value: 50
max_value: 400
mode: slider
- platform: modbus_controller
modbus_controller_id: rekup
name: "Rekup Flow 2"
id: rekup_flow_2
register_type: holding
address: 6002
unit_of_measurement: "m3/h"
value_type: S_WORD
min_value: 50
max_value: 400
mode: slider
- platform: modbus_controller
modbus_controller_id: rekup
name: "Rekup Flow 3"
id: rekup_flow_3
register_type: holding
address: 6003
unit_of_measurement: "m3/h"
value_type: S_WORD
min_value: 50
max_value: 400
mode: slider
- platform: modbus_controller
modbus_controller_id: rekup
name: "Rekup Fan Imbalance Intake"
id: rekup_imbalance_intake
register_type: holding
address: 6035
unit_of_measurement: "%"
value_type: S_WORD
multiply: 10
min_value: -15
max_value: 15
mode: slider
- platform: modbus_controller
modbus_controller_id: rekup
name: "Rekup Fan Imbalance Exhaust"
id: rekup_imbalance_exhaust
register_type: holding
address: 6036
unit_of_measurement: "%"
value_type: S_WORD
multiply: 10
min_value: -15
max_value: 15
mode: slider
Anyone knows what to do, please? Could it be that my RS485 converter doesn’t have enough power (currently taking 3.3v from nodemcu)?