Datouboss 2433. Інтеграція з Home Assistant через ESPhome та rs485.
Додано: 13 травня 2026, 16:38
Інвертор Datouboss 2433 (24В, 3300Вт) має 2 порти RS485.
Один для підключення до БМС, другий - можна використовувати для зчитування інформації з інвертора.
https://www.datouboss.com/uk/collection ... =BOOTUSEUA
Для підключення потрібен RS485-TTL адаптер та esp32 (я використовую esp32c6 але правильну).
Живлення RS485-TTL адаптера - 5В, підключення до інвертора - лише лінії А та В (без GND).
RS485-TTL - https://s.click.aliexpress.com/e/_c3yN9U9d
esp32c6 - https://s.click.aliexpress.com/e/_c3HYdofD
Увага! В програмі лише частина регістрів витягується з інвертора, якщо потрібно ще якість регістри, то тут вже додавайте їх самостійно.
Один для підключення до БМС, другий - можна використовувати для зчитування інформації з інвертора.
https://www.datouboss.com/uk/collection ... =BOOTUSEUA
Для підключення потрібен RS485-TTL адаптер та esp32 (я використовую esp32c6 але правильну).
Живлення RS485-TTL адаптера - 5В, підключення до інвертора - лише лінії А та В (без GND).
RS485-TTL - https://s.click.aliexpress.com/e/_c3yN9U9d
esp32c6 - https://s.click.aliexpress.com/e/_c3HYdofD
Увага! В програмі лише частина регістрів витягується з інвертора, якщо потрібно ще якість регістри, то тут вже додавайте їх самостійно.
Код: Виділити все
uart:
id: mod_bus
tx_pin: GPIO19
rx_pin: GPIO20
baud_rate: 9600
rx_timeout: 92
modbus:
- id: modbus1
uart_id: mod_bus
# Збільшуємо час очікування відповіді до 2 секунд
send_wait_time: 500ms
modbus_controller:
- id: inverter
address: 1
modbus_id: modbus1
# Даємо інвертору велику паузу між командами
command_throttle: 500ms
update_interval: 30s
sensor:
- platform: modbus_controller
modbus_controller_id: inverter
id: ac_voltage
name: "AC Voltage"
address: 0x0002
register_type: holding
value_type: U_WORD
unit_of_measurement: "V"
device_class: voltage
state_class: measurement
- platform: modbus_controller
modbus_controller_id: inverter
id: bus_voltage
name: "Bus Voltage"
address: 0x0004
register_type: holding
value_type: U_WORD
unit_of_measurement: "V"
device_class: voltage
state_class: measurement
accuracy_decimals: 1
filters:
- multiply: 0.1
- platform: modbus_controller
modbus_controller_id: inverter
id: battery_voltage
name: "Battery Voltage"
address: 0x0008
register_type: holding
value_type: U_WORD
unit_of_measurement: "V"
device_class: voltage
state_class: measurement
accuracy_decimals: 1
filters:
- multiply: 0.1
- platform: modbus_controller
modbus_controller_id: inverter
id: pv_voltage
name: "PV Voltage"
address: 0x000A
register_type: holding
value_type: U_WORD
unit_of_measurement: "V"
device_class: voltage
state_class: measurement
- platform: modbus_controller
modbus_controller_id: inverter
id: pv_power
name: "PV Power"
address: 0x000B
register_type: holding
value_type: U_WORD
unit_of_measurement: "W"
device_class: power
state_class: measurement
- platform: modbus_controller
modbus_controller_id: inverter
id: output_power
name: "Output Power"
address: 0x000C
register_type: holding
value_type: U_WORD
unit_of_measurement: "W"
device_class: power
state_class: measurement
- platform: modbus_controller
modbus_controller_id: inverter
id: inverter_temperature
name: "Inverter Temperature"
address: 0x0010
register_type: holding
value_type: U_WORD
unit_of_measurement: "°C"
device_class: temperature
state_class: measurement
- platform: modbus_controller
modbus_controller_id: inverter
id: battery_current
name: "Battery Current"
address: 0x0011
force_new_range: true
register_type: holding
value_type: S_WORD
unit_of_measurement: "A"
accuracy_decimals: 1
filters:
- multiply: 0.1
- platform: modbus_controller
modbus_controller_id: inverter
id: ac_frequency
name: "AC Frequency"
address: 0x0012
register_type: holding
value_type: U_WORD
unit_of_measurement: "Hz"
device_class: frequency
state_class: measurement
accuracy_decimals: 1
filters:
- multiply: 0.1
- platform: template
id: battery_power
name: "Battery Power"
unit_of_measurement: "W"
device_class: power
state_class: measurement
accuracy_decimals: 0
lambda: |-
return id(battery_voltage).state * id(battery_current).state;
update_interval: 10s
- platform: template
id: battery_discharge_power
name: "Battery DisCharge Power"
unit_of_measurement: "W"
device_class: power
state_class: measurement
accuracy_decimals: 0
lambda: |-
float p = id(battery_voltage).state * id(battery_current).state;
if (p < 0) return -p;
return 0;
update_interval: 10s
- platform: template
id: battery_charge_power
name: "Battery charge Power"
unit_of_measurement: "W"
device_class: power
state_class: measurement
accuracy_decimals: 0
lambda: |-
float p = id(battery_voltage).state * id(battery_current).state;
if (p > 0) return p;
return 0;
update_interval: 10s