Сторінка 1 з 1

Datouboss 2433. Інтеграція з Home Assistant через ESPhome та rs485.

Додано: 13 травня 2026, 16:38
bootuse
Інвертор 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

Увага! В програмі лише частина регістрів витягується з інвертора, якщо потрібно ще якість регістри, то тут вже додавайте їх самостійно.

Код: Виділити все

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