Сторінка 1 з 1

Growatt SPF 6000 ES Plus

Додано: 25 квітня 2026, 11:44
bootuse
Off-Grid.
2 PV входи по 16А.
Вхід для генератора.
Є функція паралельної роботи, сухі контакти, додатковий порт RS485, порт USB та в комплекті є донг Wifi.

Офіційний постачальник -
https://bootuse.com/GrowattSPF6000ESPlus
Код інсталятора ZAKUPUS - EDWJP5.

Re: Growatt SPF 6000 ES Plus

Додано: 25 квітня 2026, 11:49
bootuse
Через вільний порт RS485 можна додати до Home Assistant і моніторити його без обмежень по частоті зчитування інформації та без блокування аккаунта на 24 години.

Для підключення потрібен 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

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

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

substitutions:
  device_name: Growatt
  device_description: "Esphome for Growatt"
  modbus_update_interval: 10s
  update_fast: 15s
  update_slow: 60s
  skip_updates_slow: "6" 
  tx_pin: GPIO19  
  rx_pin: GPIO20

esphome:
  name: growattspf6000
  friendly_name: Growatt

esp32:
  board: esp32-c6-devkitm-1
  framework:
    type: esp-idf

# Enable Home Assistant API
api:
  encryption:
    key: #insert your data

ota:
  - platform: esphome
    password: #insert your data

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Rs232Battery Fallback Hotspot"
    password: "Kj9hbVNQxKzr"

captive_portal:



# Enable logging
logger:
  baud_rate: 0
  level: DEBUG



uart:
  id: uart_bus
  rx_pin: ${rx_pin}
  tx_pin: ${tx_pin}
  baud_rate: 9600
  stop_bits: 1
  rx_buffer_size: 512
  debug:
      direction: both


modbus:
  id: modbus1
  uart_id: uart_bus
  send_wait_time: 200ms


modbus_controller:
  - id: modbus_pv
    address: 1
    modbus_id: modbus1
    update_interval: 5s


# Growatt read-only sensors with home assistant config
sensor:
  - platform: modbus_controller
    address: 0
    register_type: "read"
    internal: true
    accuracy_decimals: 0
    id: status

  - platform: modbus_controller
    modbus_controller_id: modbus_pv
    name: "Growatt AC Output Power"
    address: 09 
    register_count: 2
    register_type: "read"
    unit_of_measurement: W
    device_class: power
    state_class: measurement
    icon: mdi:power-plug
    value_type: U_DWORD
    accuracy_decimals: 1
    filters:
      - multiply: 0.1

  - platform: modbus_controller
    name: "Load"
    address: 27
    register_type: "read"
    unit_of_measurement: "%"
    value_type: U_WORD
    accuracy_decimals: 0


  - platform: modbus_controller
    modbus_controller_id: modbus_pv
    name: "Growatt Inverter Temperature"
    address: 25
    register_type: "read"
    unit_of_measurement: °C
    device_class: temperature
    state_class: measurement
    icon: mdi:thermometer
    value_type: U_WORD
    accuracy_decimals: 1
    filters:
      - multiply: 0.1

  - platform: modbus_controller
    modbus_controller_id: modbus_pv
    name: "Battery Temperature"
    address: 206
    register_type: "read"
    unit_of_measurement: °C
    device_class: temperature
    state_class: measurement
    icon: mdi:thermometer
    value_type: U_WORD
    accuracy_decimals: 1
    filters:
      - multiply: 0.1

  - platform: modbus_controller
    modbus_controller_id: modbus_pv
    name: "Growatt Grid Voltage"
    address: 20  # Vac1
    register_type: "read"
    unit_of_measurement: V
    device_class: voltage
    state_class: measurement
    icon: mdi:sine-wave
    value_type: U_WORD
    accuracy_decimals: 1
    filters:
      - multiply: 0.1

  - platform: modbus_controller
    modbus_controller_id: modbus_pv
    name: "Growatt Grid Frequency"
    address: 21  # Fac
    register_type: "read"
    unit_of_measurement: Hz
    device_class: frequency
    state_class: measurement
    icon: mdi:waveform
    value_type: U_WORD
    accuracy_decimals: 2
    filters:
      - multiply: 0.01

  - platform: modbus_controller
    modbus_controller_id: modbus_pv
    name: "Growatt Fault Code"
    address: 105
    register_type: "read"
    value_type: U_WORD
    entity_category: diagnostic

  - platform: modbus_controller
    name: "DC Voltage"
    address: 17
    register_type: "read"
    unit_of_measurement: V
    device_class: voltage
    icon: mdi:sine-wave
    value_type: U_WORD
    accuracy_decimals: 1
    filters:
    - multiply: 0.01

  - platform: modbus_controller
    name: "Battery SoC"
    skip_updates: $skip_updates_slow
    address: 18
    register_type: "read"
    unit_of_measurement: "%"
    icon: mdi:home-battery
    value_type: U_WORD
    accuracy_decimals: 0

  - platform: modbus_controller
    name: "Battery Charge Current"
    address: 83     
    register_type: "read"
    value_type: U_WORD
    unit_of_measurement: A
    accuracy_decimals: 1
    filters:
      - multiply: 0.1

  - platform: modbus_controller
    name: "Battery Discharge Current"
    address: 84     
    register_type: "read"
    value_type: U_WORD
    unit_of_measurement: A
    accuracy_decimals: 1
    filters:
      - multiply: 0.1
    

  - platform: modbus_controller
    name: "Inverter fan speed"
    address: 82
    register_type: "read"
    unit_of_measurement: "%"
    device_class: POWER_FACTOR
    state_class: measurement
    icon: mdi:flash
    value_type: U_WORD
    accuracy_decimals: 0
    filters:
    - multiply: 1




text_sensor:
  - platform: template
    name: "Growatt Status"
    icon: mdi:eye
    entity_category: diagnostic
    lambda: |-
      if ((id(status).state) == 1) {
          return {"Normal"};
        } else if ((id(status).state) == 0)  {
          return {"Standby"};
        } else if ((id(status).state) == 2)  {
          return {"Discharge"};
        } else if ((id(status).state) == 3)  {
          return {"Fault"};
        } else if ((id(status).state) == 4)  {
          return {"Flash"};
        } else if ((id(status).state) == 5)  {
          return {"PV Charging"};
        } else if ((id(status).state) == 6)  {
          return {"AC Charging"};
        } else if ((id(status).state) == 7)  {
          return {"Combined Charging"};
        } else if ((id(status).state) == 8)  {
          return {"Combined Charging & Bypass"};
        } else if ((id(status).state) == 9)  {
          return {"PV Charging & Bypass"};
        } else if ((id(status).state) == 10)  {
          return {"AC Charging & Bypass"};
        } else if ((id(status).state) == 11)  {
          return {"Bypass"};
        } else if (id(status).state == 12)  {
          return {"PV Charge and Discharge"};
        } else {
          return {"Unknown"};
        }