Hello, I’m having issues integrating my Growatt inverter via the ShineWifi‑X WiFi module. The Growatt needs to communicate locally — not through the cloud — with my Home Assistant. To achieve this, the ShineWifi‑X firmware needs to be adjusted, and that part works perfectly.
I installed MQTT (Mosquitto Broker) and the Grott app in Home Assistant. In the Grott logbook I can clearly see communication between Growatt and Home Assistant. However, the MQTT part refuses to work, which means I don’t get any entities in Home Assistant.
I’ve already tried everything: creating a user for Growatt, using it with and without login credentials, … nothing works. Has anyone here managed to get this working? Why not use the ready‑made cloud solution? Because I want instant, real‑time Growatt data.
Grott itself does not create entities, it only forwards to MQTT. There is an integration part mentioned somewhere by muppet3000 that create them in HA.
I just created them via the mqtt yaml and this is not all, just the elements I need.
mqtt:
sensor:
- state_topic: energy/growatt
value_template: "{{ value_json['device'] }}"
unique_id: growatt_serial
name: Growatt - Serial number
icon: mdi:select-inverse
- state_topic: energy/growatt
# If you like to have the date in another format, please change "timestamp_custom('%d-%m-%Y')"
# For more information: https://docs.python.org/3/library/time.html#time.strftime
value_template: "{{ as_timestamp(strptime(value_json['time'], '%Y-%m-%dT%H:%M:%S')) | timestamp_custom('%d-%m-%Y') }}"
unique_id: growatt_date
name: Growatt - Date
icon: mdi:calendar
- state_topic: energy/growatt
# If you like to have the date in another format, please change "timestamp_custom('%H:%M:%S')"
# For more information: https://docs.python.org/3/library/time.html#time.strftime
value_template: "{{ as_timestamp(strptime(value_json['time'], '%Y-%m-%dT%H:%M:%S')) | timestamp_custom('%H:%M:%S') }}"
unique_id: growatt_time
name: Growatt - Time
icon: mdi:clock-digital
- state_topic: energy/growatt
value_template: >
{% if (value_json['values']['pvstatus'] | int == 0) %}
Waiting
{% elif (value_json['values']['pvstatus'] | int == 1) %}
Normal
{% elif (value_json['values']['pvstatus'] | int == 2) %}
Fault
{% else %}
Unknown
{% endif %}
unique_id: growatt_status
name: Growatt - State
icon: mdi:power-settings
- state_topic: energy/growatt
value_template: "{{ value_json['values']['pv1watt'] | int / 10 }}"
unique_id: growatt_string1_watt
device_class: power
unit_of_measurement: "W"
name: Growatt - String 1 (Watt)
- state_topic: energy/growatt
value_template: "{{ value_json['values']['pv1voltage'] | int / 10 }}"
unique_id: growatt_string1_voltage
device_class: voltage
unit_of_measurement: "V"
name: Growatt - String 1 (Voltage)
- state_topic: energy/growatt
value_template: "{{ value_json['values']['pv1current'] | int / 10 }}"
unique_id: growatt_string1_current
device_class: current
unit_of_measurement: "A"
name: Growatt - String 1 (Current)
- state_topic: energy/growatt
value_template: "{{ value_json['values']['pv2watt'] | int / 10 }}"
unique_id: growatt_string2_watt
device_class: power
unit_of_measurement: "W"
name: Growatt - String 2 (Watt)
- state_topic: energy/growatt
value_template: "{{ value_json['values']['pv2voltage'] | int / 10 }}"
unique_id: growatt_string2_voltage
device_class: voltage
unit_of_measurement: "V"
name: Growatt - String 2 (Voltage)
- state_topic: energy/growatt
value_template: "{{ value_json['values']['pv2current'] | int / 10 }}"
unique_id: growatt_string2_current
device_class: current
unit_of_measurement: "A"
name: Growatt - String 2 (Current)
- state_topic: energy/growatt
value_template: "{{ value_json['values']['pvpowerin'] | int / 10 }}"
unique_id: growatt_actual_input_power
device_class: power
unit_of_measurement: "W"
name: Growatt - Input watt (Actual)
- state_topic: energy/growatt
value_template: "{{ value_json['values']['pvpowerout'] | int / 10 }}"
unique_id: growatt_actual_output_power
device_class: power
unit_of_measurement: "W"
name: Growatt - Output watt (Actual)
- state_topic: energy/growatt
value_template: "{{ value_json['values']['pvfrequentie'] | int / 100 }}"
unique_id: growatt_grid_frequency
unit_of_measurement: "Hz"
name: Growatt - Grid frequency
icon: mdi:waveform
- state_topic: energy/growatt
value_template: "{{ value_json['values']['pvgridvoltage'] | int / 10 }}"
unique_id: growatt_phase_voltage
device_class: voltage
unit_of_measurement: "V"
name: Growatt - Phase voltage
- state_topic: energy/growatt
value_template: "{{ value_json['values']['pvenergytoday'] | int / 10 }}"
unique_id: growatt_generated_energy_today
device_class: energy
state_class: total
unit_of_measurement: "kWh"
name: Growatt - Generated energy (Today)
icon: mdi:solar-power
- state_topic: energy/growatt
value_template: "{{ value_json['values']['pvenergytotal'] | int / 10 }}"
unique_id: growatt_generated_energy_total
device_class: energy
state_class: total
unit_of_measurement: "kWh"
name: Growatt - Generated energy (Total)
icon: mdi:solar-power
- state_topic: energy/growatt
value_template: "{{ value_json['values']['epvtotal'] | int / 10 }}"
unique_id: growatt_epv_total
device_class: energy
state_class: total
unit_of_measurement: "kWh"
name: Growatt - EPV (Total)
icon: mdi:solar-power
- state_topic: energy/growatt
value_template: "{{ value_json['values']['epv1today'] | int / 10 }}"
unique_id: growatt_epv_today
device_class: energy
state_class: total
unit_of_measurement: "kWh"
name: Growatt - EPV (Today)
icon: mdi:solar-power
- state_topic: energy/growatt
value_template: "{{ value_json['values']['pvtemperature'] | int / 10 }}"
unique_id: growatt_inverer_temperature
device_class: temperature
unit_of_measurement: "°C"
name: Growatt - Inverter temperature