Growatt inverter modbus esp problem

According to the ESP Home dashboard, it is offline, but the sensors are usually accessible
the ota update is difficult to install
the wireless logra rarely responds and becomes available

For some time now, the sensors have become increasingly unavailable


Képernyőkép 2023-06-03 133122

substitutions:
  device_name: growatt-inverter
  friendly_name: "Inverter"
  # GAS Meter
  pulse_pin: D6
  pulse_rate: '100' # imp/m3

esphome:
  name: '${device_name}'

esp8266:
  board: d1_mini


# Enable Home Assistant API
api:
  encryption:
    key: "CRqV9zmrt6p9A6+p5spU5k/PsuRBjRUnwAfIZAJhhko="

ota:
  password: "588a075af33faa652b9be6978286353c"


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: "Growatt-Modbus Fallback Hotspot"
    password: "12345678"

captive_portal:

logger:
  level: DEBUG
  baud_rate: 0


time:
  - platform: homeassistant
    id: homeassistant_time

    
uart:
  - id: mod_bus
    baud_rate: 9600
    tx_pin: GPIO1
    rx_pin: GPIO3

modbus:
  id: modbus1
  uart_id: mod_bus


modbus_controller:
  - id: growatt
    address: 0x1
    modbus_id: modbus1
    setup_priority: -10  

text_sensor:
  - platform: template
    name: "${friendly_name} Status"
    icon: mdi:eye
    entity_category: diagnostic
    update_interval: 5s
    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"};
      }

sensor:
  - platform: wifi_signal
    name: "Growatt WiFi Signal Sensor"
    update_interval: 60s
    entity_category: "diagnostic"
    id: wifi_signal_db
    
    
  - platform: copy # Reports the WiFi signal strength in %
    source_id: wifi_signal_db
    name: "Growatt WiFi Signal Percent"
    filters:
      - lambda: return min(max(2 * (x + 100.0), 0.0), 100.0);
    unit_of_measurement: "%"
    entity_category: "diagnostic"


  - platform: modbus_controller
    address: 0
    register_type: "read"
    internal: true
    accuracy_decimals: 0
    id: status
    
  # PV1 Voltage
  - platform: modbus_controller
    id: "pv1_voltage"
    name: "${friendly_name} PV1 Voltage"
    address: 3
    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

  # PV2 Voltage
  - platform: modbus_controller
    id: "pv2_voltage"
    name: "${friendly_name} PV2 Voltage"
    address: 7
    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

  # PV1 Current
  - platform: modbus_controller
    id: "pv1_current"
    name: "${friendly_name} PV1 Current"
    address: 7
    register_type: "read"
    unit_of_measurement: A
    device_class: current
    state_class: measurement
    icon: mdi:current-ac
    value_type: U_WORD
    accuracy_decimals: 1
    filters:
    - multiply: 0.02

  # PV2 Current
  - platform: modbus_controller
    id: "pv2_current"
    name: "${friendly_name} PV2 Current"
    address: 8
    register_type: "read"
    unit_of_measurement: A
    device_class: current
    state_class: measurement
    icon: mdi:current-ac
    value_type: U_WORD
    accuracy_decimals: 1
    filters:
    - multiply: 0.02

  # AC Freqency
  - platform: modbus_controller
    name: "${friendly_name} AC Hz"
    address: 37
    register_type: "read"
    unit_of_measurement: Hz
    state_class: measurement
    icon: mdi:chart-bell-curve
    value_type: U_WORD
    accuracy_decimals: 1
    filters:
    - multiply: 0.01

  # Output Power 
  - platform: modbus_controller
    name: "${friendly_name} AC Output Power"
    id: ac_output_power_high
    address: 35
    register_type: "read"
    unit_of_measurement: W
    device_class: energy
    state_class: measurement
    icon: mdi:flash
    value_type: U_DWORD
    accuracy_decimals: 2
    filters:
    - multiply: 0.1

  # AC 3 Fázis Power (L1, L2, L3)
  - platform: modbus_controller
    name: "${friendly_name} L1 Power"
    address: 40
    register_type: "read"
    unit_of_measurement: W
    device_class: energy
    state_class: measurement
    icon: mdi:flash
    value_type: U_DWORD
    accuracy_decimals: 2
    filters:
    - multiply: 0.1

  - platform: modbus_controller
    name: "${friendly_name} L2 Power"
    address: 44
    register_type: "read"
    unit_of_measurement: W
    device_class: energy
    state_class: measurement
    icon: mdi:flash
    value_type: U_DWORD
    accuracy_decimals: 2
    filters:
    - multiply: 0.1

  - platform: modbus_controller
    name: "${friendly_name} L3 Power"
    address: 48
    register_type: "read"
    unit_of_measurement: W
    device_class: energy
    state_class: measurement
    icon: mdi:flash
    value_type: U_DWORD
    accuracy_decimals: 2
    filters:
    - multiply: 0.1


  # AC 3 Fázis Voltage (L1, L2, L3)
  - platform: modbus_controller
    name: "${friendly_name} L1 Voltage"
    address: 38
    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
    name: "${friendly_name} L2 Voltage"
    address: 42
    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
    name: "${friendly_name} L3 Voltage"
    address: 46
    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

  # AC 3 Fázis Current (L1, L2, L3)
  - platform: modbus_controller
    name: "${friendly_name} L1 Current"
    address: 39
    register_type: "read"
    unit_of_measurement: A
    device_class: current
    state_class: measurement
    icon: mdi:current-ac
    value_type: U_WORD
    accuracy_decimals: 1
    filters:
    - multiply: 0.1

  - platform: modbus_controller
    name: "${friendly_name} L2 Current"
    address: 43
    register_type: "read"
    unit_of_measurement: A
    device_class: current
    state_class: measurement
    icon: mdi:current-ac
    value_type: U_WORD
    accuracy_decimals: 1
    filters:
    - multiply: 0.1

  - platform: modbus_controller
    name: "${friendly_name} L3 Current"
    address: 47
    register_type: "read"
    unit_of_measurement: A
    device_class: current
    state_class: measurement
    icon: mdi:current-ac
    value_type: U_WORD
    accuracy_decimals: 1
    filters:
    - multiply: 0.1


  # AC 3 Fázis Voltage (RS, ST, RT)
  - platform: modbus_controller
    name: "${friendly_name} RS Voltage"
    address: 50
    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
    name: "${friendly_name} ST Voltage"
    address: 51
    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
    name: "${friendly_name} TR Voltage"
    address: 52
    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

  # Temp
  - platform: modbus_controller
    name: "${friendly_name} Inverter Temperature"
    address: 93
    register_type: "read"
    unit_of_measurement: °C
    device_class: temperature
    entity_category: diagnostic
    state_class: measurement
    icon: mdi:thermometer
    value_type: U_WORD
    accuracy_decimals: 1
    filters:
    - multiply: 0.1

  - platform: modbus_controller
    name: "${friendly_name} The inside IPM in inverter Temperature"
    address: 94
    register_type: "read"
    unit_of_measurement: °C
    device_class: temperature
    entity_category: diagnostic
    state_class: measurement
    icon: mdi:thermometer
    value_type: U_WORD
    accuracy_decimals: 1
    filters:
    - multiply: 0.1

  - platform: modbus_controller
    name: "${friendly_name} Boost temperature"
    address: 95
    register_type: "read"
    unit_of_measurement: °C
    device_class: temperature
    entity_category: diagnostic
    state_class: measurement
    icon: mdi:thermometer
    value_type: U_WORD
    accuracy_decimals: 1
    filters:
    - multiply: 0.1


  # KWh
  - platform: total_daily_energy
    name: "${friendly_name} AC Ouput Energy Today"
    power_id: ac_output_power_high
    unit_of_measurement: kWh
    icon: mdi:counter
    accuracy_decimals: 1
    restore: true
    filters:
    - multiply: 0.001

  # Pac3
  - platform: modbus_controller
    name: "${friendly_name} Pac3 H"
    address: 48
    register_type: "read"
    unit_of_measurement: VA
    device_class: energy
    state_class: measurement
    icon: mdi:flash
    value_type: U_DWORD
    accuracy_decimals: 2
    filters:
    - multiply: 0.1

 # Total/Today Energy
  - platform: modbus_controller
    name: "${device_name} Energy Today"
    address: 53
    register_type: "read"
    unit_of_measurement: kWh
    device_class: energy
    icon: mdi:flash
    value_type: U_DWORD
    accuracy_decimals: 1
    filters:
    - multiply: 0.1
    
  - platform: modbus_controller
    name: "${device_name} Energy Total"
    address: 55
    register_type: "read"
    unit_of_measurement: kWh
    state_class: total_increasing
    device_class: energy
    icon: mdi:flash
    value_type: U_DWORD
    accuracy_decimals: 1
    filters:
    - multiply: 0.1

# Gas meter
  - platform: pulse_meter
    pin:
      number: ${pulse_pin}
      mode: INPUT_PULLUP
    on_value:
      then:
        - light.turn_on:
            id: led_red
        - delay: 0.5s
        - light.turn_off:
            id: led_red
    internal_filter: 400ms
    name: "Gas consumption"
    filters:
      - multiply: 0.06
    unit_of_measurement: "m³/ min"
    id: gas
    accuracy_decimals: 2
    icon: 'mdi:fire'
    total:
      name: 'Gas total'
      state_class: total_increasing
      device_class: gas
      unit_of_measurement: "m³"
      accuracy_decimals: 2
      filters:
        - lambda: return x * (1.0 / ${pulse_rate});


# Outdoor Temp

  - platform: dht
    pin: D1
    temperature:
      name: "Outdoor Temperature GW"
    humidity:
      name: "Outdoor Humidity GW"
    update_interval: 60s

status_led:
  pin: GPIO2

# Gas LED
light:
  - platform: binary
    internal: true
    id: led_red
    name: Red
    output: output_red

output:
  - platform: gpio
    pin:
      number: D7
    id: output_red