Configuring GoodWe inverter in Home Assistant


In this post we are explaining how to setup a GoodWe inverter in Home Assistant (aka hassio) with an add-on that provides direct LAN communication with the inverter.

SETUP STEPS

HACS is a community of hassio add-ons. Follow instructions here to configure HACS in hassio.

For the setup step we need to install previously a SSH add-on as explained here and then execute the following command from the shel:

wget -O - https://get.hacs.xyz | bash -

Restart hassio

Then, go to Configuration|Integrations menu and follow steps here

After HACS setup, open HACS menu

Now click on [EXPLORE AND ADD REPOSITORIES] button in the riight down corner:

Search for goodwe, select GoodWe Inverter Solar Sensor (UDP – no cloud) and click [add]

Integration component appears on page:

Restart hassio again and go to Configurations menu

Click on [ADD INTEGRATION] button in the rigth down corner

Search for goodwe

Select GoodWe Inverter and set the IP address of the inverter

NOTE: Configure your router to make a reservation for the inverter IP address. One method to know the mac address and other interesting data obtained from the inverter are explained in the troubleshooting section at the end of the post

After a while, the integration will be ready

A bunch of sensors are now ready to be used in automations

In next posts we’ll show how to made automations with these sensors.

TROUBLESHOOTING

From a computer in your network execute the following (you need python installed):

git clone https://github.com/mletenay/home-assistant-goodwe-inverter.git
cd home-assistant-goodwe-inverter/
pip3 install goodwe
python3 inverter_scan.py

Important information of the inverter is printed out:

2021-11-04 08:03:06,924 __init__(59) - DEBUG: Using selector: KqueueSelector
2021-11-04 08:03:06,925 search_inverters(116) - DEBUG: Searching inverters by broadcast to port 48899
2021-11-04 08:03:06,925 _send_request(37) - DEBUG: Sent: 574946494b49542d3231343032382d52454144 to None
2021-11-04 08:03:07,238 datagram_received(51) - DEBUG: Received: 3139322e3136382e312e33362c3334454145373936453532382c536f6c61722d576946693231375830323038
Located inverter at IP: 192.168.1.36, mac: 34EAE796E528, name: Solar-WiFi217X0208
Trying command: AA55C07F0102000241
No response to AA55C07F0102000241 command
Trying command: 7F03753100280409
No response to 7F03753100280409 command
Trying command: 197d0001000dff045e50303036564657f6e60d
No response to 197d0001000dff045e50303036564657f6e60d command
Trying command: 680241b132313758303230380100b116
No response to 680241b132313758303230380100b116 command
Trying command: 680241b138303230583731320100b116
No response to 680241b138303230583731320100b116 command
Identifying inverter at IP: 192.168.1.36
2021-11-04 08:03:07,239 __init__(59) - DEBUG: Using selector: KqueueSelector
2021-11-04 08:03:07,240 discover(67) - DEBUG: Probing inverter at 192.168.1.36
2021-11-04 08:03:07,240 _send_request(37) - DEBUG: Sent: aa55c07f0102000241 to ('192.168.1.36', 8899)
2021-11-04 08:03:07,740 datagram_received(51) - DEBUG: Received: aa557fc001824d31313131434757353034382d454d20233130202020202020202020202020203935303438454d553231375830323038333630303431302d30343030302d3131213431302d30323033342d31321811c6
2021-11-04 08:03:07,740 discover(79) - DEBUG: Detected ES/EM/BP inverter GW5048-EM, S/N:95...8
2021-11-04 08:03:07,741 _send_request(37) - DEBUG: Sent: aa55c07f0102000241 to ('192.168.1.36', 8899)
2021-11-04 08:03:08,130 datagram_received(51) - DEBUG: Received: aa557fc001824d31313131434757353034382d454d20233130202020202020202020202020203935303438454d553231375830323038333630303431302d30343030302d3131213431302d30323033342d31321811c6
Identified inverter model: GW5048-EM, serialNr: 9.....8

Now edit the file inverter_test.py and put the discovered IP address before:

Run the following:

python3 inverter_test.py 

Inverter sensor data is printed:

2021-11-04 08:05:04,858 __init__(59) - DEBUG: Using selector: KqueueSelector
2021-11-04 08:05:04,858 discover(67) - DEBUG: Probing inverter at 192.168.1.36
...
...
ede020840470000150a1e0d33040000000000000000000000000000000000000000000000000000000000000000020000000000000d8c
vpv1: 		 PV1 Voltage = 268.4 V
ipv1: 		 PV1 Current = 0.2 A
ppv1: 		 PV1 Power = 54 W
pv1_mode: 		 PV1 Mode code = 2 
pv1_mode_label: 		 PV1 Mode = PV panels connected, producing power 
vpv2: 		 PV2 Voltage = 271.5 V
ipv2: 		 PV2 Current = 0.1 A
ppv2: 		 PV2 Power = 27 W
pv2_mode: 		 PV2 Mode code = 2 
pv2_mode_label: 		 PV2 Mode = PV panels connected, producing power 
ppv: 		 PV Power = 81 W
vbattery1: 		 Battery Voltage = 0.0 V
battery_status: 		 Battery Status = 0 
battery_temperature: 		 Battery Temperature = 0.0 C
ibattery1: 		 Battery Current = 0.0 A
pbattery1: 		 Battery Power = 0 W
battery_charge_limit: 		 Battery Charge Limit = 0 A
battery_discharge_limit: 		 Battery Discharge Limit = 0 A
battery_error: 		 Battery Error Code = 256 
battery_soc: 		 Battery State of Charge = 0 %
warning: 		 Warning Code = 0 
battery_soh: 		 Battery State of Health = 0 %
battery_mode: 		 Battery Mode code = 0 
battery_mode_label: 		 Battery Mode = No battery 
battery_warning: 		 Battery Warning = 0 
meter_status: 		 Meter Status code = 1 
vgrid: 		 On-grid Voltage = 237.3 V
igrid: 		 On-grid Current = 0.3 A
pgrid: 		 On-grid Export Power = -109 W
fgrid: 		 On-grid Frequency = 50.02 Hz
grid_mode: 		 Work Mode code = 1 
grid_mode_label: 		 Work Mode = Inverter On 
vload: 		 Back-up Voltage = 237.3 V
iload: 		 Back-up Current = 0.2 A
pload: 		 On-grid Power = 161 W
fload: 		 Back-up Frequency = 50.02 Hz
load_mode: 		 Load Mode code = 1 
load_mode_label: 		 Load Mode = The inverter is connected to a load 
work_mode: 		 Energy Mode code = 2 
work_mode_label: 		 Energy Mode = Normal (On-Grid) 
temperature: 		 Inverter Temperature = 13.4 C
error_codes: 		 Error Codes = 0 
e_total: 		 Total PV Generation = 68.1 kWh
h_total: 		 Hours Total = 56 h
e_day: 		 Today's PV Generation = 67.7 kWh
e_load_day: 		 Today's Load = 84.5 kWh
e_load_total: 		 Total Load = 86.9 kWh
total_power: 		 Total Power = 59 W
effective_work_mode: 		 Effective Work Mode code = 1 
effective_relay_control: 		 Effective Relay Control = 32 
grid_in_out: 		 On-grid Mode code = 2 
grid_in_out_label: 		 On-grid Mode = Importing 
pback_up: 		 Back-up Power = 0 W
plant_power: 		 Plant Power = 161 W
meter_power_factor: 		 Meter Power Factor = 0.001 
diagnose_result: 		 Diag Status Code = 34095175 
diagnose_result_label: 		 Diag Status = Battery voltage low, Battery SOC low, Battery SOC in back, Discharge Driver On, Battery Disconnected, Self-use off, PF value set 
house_consumption: 		 House Consumption = 190 W

That’s all, hope it helps 🙂

One Comment

  1. Norman

    Hi, great instructions! Can you tell me how I can send all received data from the Goodwe in home-assistant to an MQTT broker? I would like to use the performance data in an external application (Loxone). Unfortunately, I haven’t made it yet. thank you

    Like

Leave a comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.