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 🙂
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
LikeLike