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

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