GoodWe GW9.999K-EHA-G20 and GoodWe GW8.3-BAT-D-G21

Hi All,

I am planning to install ESA Goodwe Solar + Battery System .
Comparing to Sigenergy , i cannot find much information for HA integration , VPP Controlling .
I appreciate further details from expert HA members.
Thanks :slight_smile:

Hi, I’m a newbie with Home Assistant. So here’s my two cents.

I just had my installed few days ago and only been trialling it. There is so many information about different goodwe system and it’s integration but nothing on EHA SERIES. And since you’ve started this thread, I thought I would contribute and hopeful others out there might share their set-up with this series to help tweak a few things.

I’ve set up my system fairly similar to other goodwe series. Except that I don’t have an eco mode. I have TOU mode (which is the same thing but renamed). In this TOU mode, it let’s you set time periods to charge or discharge to the grid. So I’ve just set my time period to 0:00 to 23:00 all year round, with Max discharge 90% of my rate.

Side note, the operation mode (or working mode) will switch between TOU and self use mode between your time period setting.

In home assistant, I use the “experiential Goodwe inverter” integration via HAC. Once set up, I have my “Inverter Operation Mode” in “General Mode” (unlike many other threads where they’ve set it to Eco discharge mode and switch back to general). Then I mainly turn on my “grid export limit switch” and set a export limit.

Anyway. Hope that helps…

Hi Tom ,
This is really helpful .
Could you share the entities mapped in HA as well ?
Thanks

Hi, a week ago a GoodWe GW9.999K-EHA-G20 inverter and GoodWe GW8.3-BAT-D-G21 battery were installed, but the installer did not explain or provide any instructions on how to use the app. Could you please tell me where I can find Eco / TOU mode and provide instructions for setting export limits and time schedules?

This system does not support the Amber Smart Switch, so I cannot control exports during peak times. A couple of providers offer peak-time tariffs between 5:30 pm and 7:30 pm, and I would like to set an export limit so that my battery does not drain during these hours.

I would appreciate your help with these settings.

Regards
Kiran

I’m considering purchasing what seems to be a near identical setup.

I’m also hoping to be able to change the configuration (export mode, time limits, thresholds) via HA, and will be aiming to add also an EV charger (GW7K-HCA-20) which I’m led to believe by Google that can also be controlled from HA through the Inverter.

@Kiran27 if you haven’t already found it, it seems that the primary requirement to ensure that it’s detectable by HA is to ensure that “Modbus TCP” is enabled in the settings from the App (not sure which section sorry, possibly advanced).

I also noted that the EHA-G20 (ESA series!?) wasn’t yet supported by Amber, though it appears that a trial has been completed and there’s a waitlist process to hopefully get on board here: Amber&GoodWe VPP integration initial limited release announcement-News-GOODWE

I’m keen to learn more about what is exposed, and note that it seems that the HACS version GitHub - mletenay/home-assistant-goodwe-inverter: Experimental version of Home Assistant integration for Goodwe solar inverters has documentation about setting up cumulative energy sensors (for that version).

Is Modbus included as part of the ESA series hardware - or is another piece of kit required to give access to HA?

Hi ,

Finally I got my system installed . MODBUS TCP IP activated .
I am using GoodWe official integration with HACS experimental.
I am shocked by the amount of entities. I need lot of time to digest all those sensors.



Hi Tom, thanks for sharing and can I ask you how much it cost you from out of pocket. I am also considering to get one for our home and it will help a lot when getting quotes.

Thanks in advance for your reply.

Best regards,

Hi All ,

I was wondering if there is a dynamic way to control the battery charging current during the morning ? in another term , i would like to control the inverter output to be distributed between charging battery and house consumption ?
Thanks

Hello. How did you get MODBUS TCP IP activated? Any steps you can provide?
Thanks.

Hi Ben,
Install SolarGo , Login as User with default password using Bluetooth, you will be forced to change it.
Go to the Dongle (I have Wifi/Lan Kit 2.0) Communication settings/ RS485 and turn it ON
See manual of SolarGO page 13 : https://www.goodwe.com.au/Ftp/EN/Downloads/ZUO/GW_SBP-G2_SolarGo-User-Manual-AU-C.pdf

Thanks! I had checked that and it was setup but will go back and double check. Are you using wifi or connected via cable?
I have a sinking feeling I might need to be cable connected.

Hey Ben
I am using LAN Cable , Static IP
You can also do it via local access from Sems+ App

Here my modbus settings in HA , i hope it helps

OK. So posting a bit of detail here to save folks some time in the future. Just wanted to share some findings for anyone else trying to get local Modbus TCP access from a GoodWe inverter.

Wifi/Lan Kit 2.0 Dongle: LAN cable is required. WiFi will not work for Modbus TCP.

I spent a fair bit of time troubleshooting this with a GoodWe WiFi/LAN Kit 20 dongle. The inverter was connected, visible on the network, reporting correctly to the SEMS portal but port 8899 was completely unresponsive to any local query over WiFi.

After a lot of digging it turns out this is by design. GoodWe’s own documentation states that Modbus TCP is only supported when the LAN port on the dongle is in use. WiFi mode is outbound cloud only. This is confirmed in multiple places:

The WiFi/LAN Kit 20 does support both simultaneously once cabled so you don’t lose SEMS portal reporting. You simply gain local Modbus TCP access via the wired connection.

If you’re getting a GoodWe system installed, ask your electrician to run a LAN cable from the inverter to your nearest switch at the same time. It’s a trivial job during install for me a painful one after the fact.

RS485/ModBus and LAN: This should be obligatory for anybody considering HomeAssistant integration with GoodWe equipment. WiFi just doesn’t integrate well.

Ignore this wise advice at your own peril and many hours of futzing and hair loss.

It makes sense to me. Never seen Modbus over wifi.
Modbus can be over TCP/IP - Cat6 Cable or Serial Cable (2 pairs) Modbus RS485 or Modbus RS232.

Hi Mina. I’m considering getting a GoodWe ESA system installed. I was glad to see this thread and what looks to be a decent HA integration. I just wanted to check in to see if you’re happy with your system and the level of integration? It certainly looks like it has all the entities that I would need, but can you confirm that we can easily set charge/discharge modes and limit export power from the integration? Do you have any other important feedback to share? Thanks.

Just to add my 2c. We had the ESA installed a couple of days ago. I enabled WLAN control and Modbus via the Solar go app. I did not use a LAN cable, and the ESA is on a IOT wifi connection, separate from the rest of the house. I dont like smart home things on my normal network. As soon as I did that, I just enabled the official integration with the correct IP and it popped up! I’m still messing with it, but so far its all working well. Its taken a few minutes to work out what all of the entities are for. I wish they would document this stuff properly. eg, sensor.goodwe_active_power seems to be grid import or export, but it didnt work properly in the flow card, so I had to flip it so the chart worked properly. At some point my house was using 28kw apparently! I’m still not sure the battery flow is correct, but I’ll find out tonight. Overall I’m pretty impressed so far. I have no interest in export limits or anything, but the functions on offer in HA seem to match the official app pretty well so far.

Anyone know what the experimental version offers above the official one?

  • default_entity_id: sensor.goodwe_active_power_flowcard
    name: “GoodWe Active Power Flowcard”
    unit_of_measurement: “W”
    device_class: power
    state_class: measurement
    state: >-
    {% set p = states(‘sensor.goodwe_active_power’) | float(0) %}
    {{ (p * -1) | round(0) }}

Hi Dzerovibe ,
Absoulty fantastic system . Yes I can confirm that Using Official GoodWe and HACS Experimental . You can easily control the inverter through EMS mode.
Charge/Discharge/Buy Power (Import)/Sell Power (Export)
I had it for 3 weeks and i am in the learning curve now .
I will post my automation for dynamic schedule export on this thread .
Please look at GitHub - mletenay/home-assistant-goodwe-inverter: Experimental version of Home Assistant integration for Goodwe solar inverters ¡ GitHub

Also, I am using this Card GitHub - 0xAHA/solar-bar-card: Home Assistant card for representing rooftop solar systems ¡ GitHub

Hi All ,

I am using modbus/tcp-ip , Goodwe official+ HACS experimental.
I have created simple 3 automations to export power during peak happy hours.
My Assumptions are:
-House Consumption

  • Create Sensor ( Helper ) to calculate Inverter Capacity minus the instantaneous house power consumption .
    -Maximum Capacity of the inverter (9.99kw 1ph)
    -Goodwe Official & HACS Experimental
    -Utilizing EMS mode / Export Limit Switch / Export Maximum Capacity (set 90% for safety)

The automation is split into 3 different stages

One : At 5:30 set EMS and Inverter into Sell Power , Self Consumption (priority to house) and Limit Switch ON

Two: Ongoing Automation to update EMS export power every 1 min between 5:30 -7:30 pm ( dynamic ems update )

Three : Revert EMS to self consumption, Inverter Status Auto and Set Export Limit to Zero.

Helper :
{% set other_sensor = states(‘sensor.goodwe_house_consumption’) | float(0) %}
{{ 9000 - other_sensor }}

First Automation:
alias: EMS Export Start
description: “”
triggers:

  • at: “17:29:30”
    trigger: time
    actions:
  • action: switch.turn_on
    metadata: {}
    target:
    entity_id: switch.goodwe_grid_export_limit_switch
    data: {}
  • target:
    entity_id: number.goodwe_grid_export_limit
    data:
    value: “9000”
    action: number.set_value
  • target:
    entity_id: select.goodwe_ems_mode
    data:
    option: export_ac
    action: select.select_option
  • data:
    option: self_use
    action: select.select_option
    target:
    entity_id: select.goodwe_inverter_operation_mode
  • action: notify.mobile_app
    data:
    title: Goodwe
    message: EMS export control started. Grid Export limit set to 9000.
    mode: single

Second Automation:
alias: EMS Export Dynamic Control
description: “”
triggers:

  • trigger: time_pattern
    minutes: /1
    conditions:
  • condition: time
    after: “17:30:00”
    before: “19:30:00”
    enabled: true
    actions:
  • variables:
    new_value: “{{ states(‘sensor.goodwe_export_max_power’) | float(0) }}”
    current_value: “{{ states(‘number.goodwe_ems_power_limit’) | float(0) }}”
  • condition: template
    value_template: “{{ new_value != current_value }}”
  • data:
    value: “{{ new_value }}”
    action: number.set_value
    target:
    entity_id: number.goodwe_ems_power_limit
    mode: single

Third Automation:
alias: EMS Export Stop
description: “”
triggers:

  • at: “19:30:30”
    trigger: time
    actions:
  • target:
    entity_id: number.goodwe_grid_export_limit
    data:
    value: “0”
    action: number.set_value
  • target:
    entity_id: number.goodwe_ems_power_limit
    data:
    value: “0”
    action: number.set_value
  • data:
    option: auto
    action: select.select_option
    target:
    entity_id: select.goodwe_ems_mode
  • action: notify.mobile_app
    data:
    message: EMS export control stopped. Limits reset to 0.
    title: Goodwe
    mode: single

I encourage everyone to share their experience and development.
Thanks.