Growatt Local with MQTT

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