ESPhome Growatt ShineWiFi-X error after compiling and flashing

Dear community,

I just started my first basic HA installation on RPi4b.
After doing some integrations and automations I now want to replace the Growatt “Cloud” integration by esphome using a ShineWifi-X.

The yaml I took from this community to start with looks like that:

substitutions:
  device_name: Growatt
  device_description: "Esphome for Growatt"
  modbus_update_interval: 15s
  skip_updates_slow: "6" 

esphome:
  name: growatt
  on_boot:
    priority: 600
    then:
      - lambda: |-        
          delay(60000);
  project:
    name: PVPro.ShineWifi-X
    version: "2.0"

esp8266:
  board: esp07s

# Enable logging
logger:
  baud_rate: 0

# Enable Home Assistant API
api:
  encryption:
    # key: somekey123

ota:
  - platform: esphome

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password
  min_auth_mode: WPA2
  
  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Growatt Fallback Hotspot"
    password: "12345678"

  # Enable Web server
web_server:
  port: 80

captive_portal:

time:
  - platform: homeassistant
    id: homeassistant_time

output:
# Blue Led
  - id: light_bl
    platform: gpio
    pin: 16
# Green Led
  - id: light_gr
    platform: gpio
    pin: 0
# Red Led
  - id: light_rd
    platform: gpio
    pin: 2

# etc. I stopped c/p here cause I assume the problem lies in the above and the rest of the code is well known 

After compiling and uploading I got this error:

========================= [SUCCESS] Took 14.93 seconds =========================
INFO Build Info: config_hash=0x3e766d12 build_time_str=2026-03-23 17:15:39 +0100
INFO Successfully compiled program.
ERROR Error resolving IP address of [‘growatt.local’]. Is it connected to WiFi?
ERROR (If this error persists, please set a static IP address: WiFi Component - ESPHome - Smart Home Made Simple)
ERROR Timeout resolving IP address: Timeout while resolving IP address for [‘growatt.local’]
WARNING Failed to upload to [‘growatt.local’]
========= [ERROR] /config/esphome/shinewifi-x.yaml =========

======================== [SUMMARY] ========================

  • /config/esphome/shinewifi-x.yaml: FAILED

SSID and key in /config/secrets.yaml are correct.
The fallback SSID is also not seen in the WiFi neighbourhood.
I # the API encryption to safe ressources.

Don’t know what to do next.

Any help is greatly appreciated!

Best regards
Holger

This is your issue:

It means, your network name ‘growatt’ is not available on your network. This is a (m)DNS problem on your network (probably your router).
You can resolve it by either specifying an IP address in the yaml, or manually add it to your dns server.

and…as side note…I can recommend this one for growatt using modbus

Thank you aceandy!

If it would connect to the configured SSID it would register it’s name, wouldn’t it?

I could set an IP (DHCP reservation) and resolve it’s hostname in DNS that way…

I’ll try to set an IP in the yaml probably (do know how to yet) and try your code.

My setup currently contains only one MOD10KTL3-XH BP, APX battery, SYN backup box, Eastron (TPM) smartmeter and a THOR wallbox. So it might be nice to see what the SOLAX implementation will see when I tack the backup box.

Best reagards Holger

Hello Andy, got lost somwhow now… I copied your code (which I already saw before) and saved it in my shinewifi-x.yaml.
I generated an API enc code (32 byte Base64) and copied it into secrets.yaml.

Resulting error:

INFO ESPHome 2026.3.1
INFO Reading configuration /config/esphome/shinewifi-x.yaml...
INFO Detected timezone 'Europe/Berlin'
Failed config

modbus_bridge: [source /config/esphome/shinewifi-x.yaml:115]
  id: mb_bridge
  uart_id: uart_bus
  tcp_port: 502
  tcp_poll_interval: 50
  tcp_client_timeout: 60000
  tcp_allowed_clients: 4
  rtu_response_timeout: 3000
  
  [flow_control_pin] is an invalid option for [modbus_bridge]. Please check the indentation.
  flow_control_pin: GPIO4
  on_tcp_clients_changed: 
    then: 
      - lambda: id(tcp_clients) = count;
      - logger.log: 

What to do next?

THANK YOU IN ADVANCE!

VBR Holger

Maybe because of that?

2026.01.2 Added separate RS-485 de_pin and re_pin; removed flow_control_pin

After the “install” routine didn’t like some other details like dashes and suggested underscores instead I updated your code a little bit.
“install” accepted it without errors but than kept “turning” (looping maybe) "download project: preparing download…

The compiler finally throw the same error and suggested setting a fixed IP.

So I did that, compiled it again and manually downloaded the firmware (.bin) file which I than flashed using web.esphome.io.

To clarify how I did that:
First shorten PINs GPIO0 and GND,
than plug the stick in the PCs USB port. Do NOT remove the shorting whatever you used.
Wait a bit and connect the web flasher.
Flash the bin file.
When it’s done you can remove the stick, remove the short and plug it in a charger e.g. to test the WiFi connection.

Thanks for pointing that out, I will check it asap!

Meaning you got it to work now?

Updated and tested, thanks !!

And just out of curiosity, where did the Andy come from ? :thinking:

Hallo aceIndy - sorry for the A instead an I :slight_smile:

Yes I got something working, basically.

Besides the small clinches with dashes MY finding was that:

  • it is necessary to manualy “download” (compile) the yaml to a PC instead of ticking “Stick is plugged into this computer” which trys to flash the stick directly.

  • After manually downloading and flashing through esphome web I got it up and running.

  • There is no need for a fixed IP and the error messages might be misleading when pointing to DNS issues.

I am struggling with the entities now.

  • My energy dashboard is messed up obviously and while recreating it I e.g. don’t know the difference between “Today’s Power Generation” and “Today’s Solar Energy” in PV module configuration…

And it looks like the system is occasionally still importing power from the grid for short moments.

  • A behaviour I didn’t see when using the “cloud” Growatt integration.
  • Maybe that’s caused be the way shorter polling interval?
  • Anyway it’s “wrong” and unwanted. Might that be caused by the inverter and not by HA?

Maybe you can help me here:

I need to preserve the “0-Export” setting which I entered directly in the inverter → don’t know how to set or at least visualize that! Is Growatt “Inverter Grid Export Limit” showing 0% correct?

I need to reconfigure my dashboard to see the current load from the house. That should be “growatt_total_load_power”?

And I need to see the actual power to grid export. That is caused by a second system, my first “contact” with the matter. It’s an Anker Solix that is still in my house and online…

Very best regards and sorry for the accumulation of questions here but it looks like you are the one to ask about this specific solution anyway :slight_smile:

Does this help?
https://homeassistant-solax-modbus.readthedocs.io/en/latest/energy-dashboard-setup/

Yes, unless you want to limit the return to grid?
In the Netherlands I will soon need it, especially when energy prices will become negatif (meaning o have to pay when returning power to the grid )
It was my main reason to switch from growatt to solax :woozy_face:

That should come from your power meter (here it is called a P1 meter).

Greetings to the netherlands from the alpine mountains!

I do want “zero export” for a similar reason. Currently we get 7ct for export and pay 34ct for import plus have to handle that “income” tax vise so I prefer not having to take care for that but using up all me energy myself instead. E.g. I electrically heat up the basement of my house :wink: (concrete core activation)

On the MODs OLED I set “export limit” to 000% which, as far as I understood the manual, means max. export rate is 000% of rated inverter output power. That did work when using the Growatt “cloud” integration.

As long as the Solix integration does not change values but only reads some it’s ok.

I think certain issues of importing and exporting a small amount will remain with 3 phase output ( and my setup is fully 3 phased incl. full backup). One cannot balance the exact same load on all three phases therefore differences might be exported.
Zero export devices might work better on single phase output inverters.

Regarding the energy dashboard: I will do some trial and error. The bit confusing part is the sheer number of entities the Solix integration offers. Don’t know which entity name to use for what yet… and first results are… not good let’s say.
Will let you know tomorrow.

For now the next “funny” issue with HA is that Zigbee HA devices get no route after they are easily integrated and configured…

Best regards
Holger