• Have you tried out dark mode?! Scroll to the bottom of any page to find a sun or moon icon to turn dark mode on or off!

diy solar

diy solar

Data collection options for EG4 Inverters

No route to host llooks like a network error. Can you ping that IP address?

Pinging the inverter, not the dongle, returns 75% packet loss and "Reply from 192.168.88.237: Destination host unreachable." which seems to mean the inverter is rejecting connections for some reason. I can ping the dongle successfully though. I was never able to access the datalogger network portal per the lxp-bridge setup instructions, which is confusing considering at least some connection exists to my MQTT server (sensors are published, etc.). I know this isn't a HA tech support forum, but if anybody has any ideas regarding why I can't access the datalogger portal, I'd appreciate it. I think that issue has something to do with that.

Why not make it public if he’s giving individuals access anyway?

No route to host would indicate it probably stopped responding to arp requests, ie it’s a network issue. Do you have a signal quality issue perhaps?
Totally agreed on the private vs. public thing, but I guess it's up to him. I did request access so if/when I get it, I'll report back.

I don't think I have a signal quality issue (do you mean wifi?), considering the dongle/inverter connect to my LAN just fine and I can see the traffic on my router. Happy to be correct on that.
 
Pinging the inverter, not the dongle, returns 75% packet loss and "Reply from 192.168.88.237: Destination host unreachable." which seems to mean the inverter is rejecting connections for some reason. I can ping the dongle successfully though.
Why (how?) does the inverter have a different IP address from the dongle? 192.168.88.237 is probably your host computer complaining it can’t reach 192.168.88.192 (your dongle connected to your inverter).

Either way 75% packet loss says something’s seriously wrong with your network.
 
The EG4 dongle does not expose any web interface like the LXC-bridge instructions indicate.

Your packet loss issues are most likely a wifi signal quality issue. Your inverter does not have a separate ip address, the only network interface is the wifi interface on the dongle.
 
Pinging the inverter, not the dongle, returns 75% packet loss and "Reply from 192.168.88.237: Destination host unreachable." which seems to mean the inverter is rejecting connections for some reason. I can ping the dongle successfully though. I was never able to access the datalogger network portal per the lxp-bridge setup instructions, which is confusing considering at least some connection exists to my MQTT server (sensors are published, etc.). I know this isn't a HA tech support forum, but if anybody has any ideas regarding why I can't access the datalogger portal, I'd appreciate it. I think that issue has something to do with that.


Totally agreed on the private vs. public thing, but I guess it's up to him. I did request access so if/when I get it, I'll report back.

I don't think I have a signal quality issue (do you mean wifi?), considering the dongle/inverter connect to my LAN just fine and I can see the traffic on my router. Happy to be correct on that.
The dongles are not that robust/powerful and break under load. I know that running SolarAssistant will mostly stop EG4 website from getting data.
 

Very nice, thanks! I'll add this to the list. I'm sure I'm going to come up with some uses for this. Have you tried implementing write operations yet, ie changing settings? I saw you mentioned in the other thread about creating an HA addon that uses this. Let me know when you have something ready, I'd be happy to help test and/or contribute to the code base.
 
Very nice, thanks! I'll add this to the list. I'm sure I'm going to come up with some uses for this. Have you tried implementing write operations yet, ie changing settings? I saw you mentioned in the other thread about creating an HA addon that uses this. Let me know when you have something ready, I'd be happy to help test and/or contribute to the code base.
I know how to do the writes but I'm hesitating until it's been used for reads for a while. My main issue is that I have only seen the API responses for the 12000xp and would need to see a few other models to ensure I'm writing the right things. Then I also have to find the source for the value limits (for which I may need to scrape the webpage)

Will post about the HA as I get to it
 
Very nice, thanks! I'll add this to the list. I'm sure I'm going to come up with some uses for this. Have you tried implementing write operations yet, ie changing settings? I saw you mentioned in the other thread about creating an HA addon that uses this. Let me know when you have something ready, I'd be happy to help test and/or contribute to the code base.
With Hotnoob's pythonprotocol I have been able to write.

It uses rs485 and does not rely on eg4's monitoring website to do anything and goes direct to the inveter rs485 port.

And it also provides around 30 second data samples (vs eg4's 3-4 minutes/sample).
 
eg4-inverter-api (Python)

I may take a look at incorporating LOCAL mode at some point, but that's a lot of modbus to decode. lxp-bridge is no longer maintained, so I'm thinking this cloud approach to the API may be the way for now, but I'll keep a view to adding a local mode in the future. I may be able to use lxp-bridge as a starting point for decoding the modbus and just translating it into the same API calls in my current project for consistency.
 
eg4-inverter-api (Python)

I may take a look at incorporating LOCAL mode at some point, but that's a lot of modbus to decode. lxp-bridge is no longer maintained, so I'm thinking this cloud approach to the API may be the way for now, but I'll keep a view to adding a local mode in the future. I may be able to use lxp-bridge as a starting point for decoding the modbus and just translating it into the same API calls in my current project for consistency.

The pythonprotocol code has several models of eg4 equipment modbus descriptions in it. So about the only decoding you need to to is figure out what sometimes poorly named variable is what. I change ongrid-eod which in the modbus is simply EOD. The already written code takes care of decoding the modbus and delivering that to mqtt, and takes care of writing/updating a parm when you update a MQTT parm in the write section. The only piece I don't have is a way to update/write parms from HA. You can see all of the MQTT parms in HA but some some setting require writing several variables (ie times are in modbus as an hour variable, and a minute variable), so updating start/end time would require updating 4 variables (2 hours and 2 minutes). Most of the modbus directly maps to stuff from the LCD and/or website.
 
This looks like exactly the thread I was looking for, mostly just saying hi and making sure I can find it again. I've got 3 12000XP's in a true off-grid setup (no cell even), I'd like to eventually have a nice local display and do some intelligent smart-load management to burn down excess power every night to keep my batteries happy. I've got experience reverse-engineering protocols so I could help with that side of things once construction finishes up.
 
This looks like exactly the thread I was looking for, mostly just saying hi and making sure I can find it again. I've got 3 12000XP's in a true off-grid setup (no cell even), I'd like to eventually have a nice local display and do some intelligent smart-load management to burn down excess power every night to keep my batteries happy. I've got experience reverse-engineering protocols so I could help with that side of things once construction finishes up.

Why do you think burning the batteries down low at night will somehow keep them happier?
 
I somehow inherited part of the luxpower/eg4 inverter project and am working to slowly decipher and make that code more robust and to push data directly to influxdb. I've been working to move to a more generic schema based model with the goal of making it more extensible and able to handle all the hardware sub-types and any variances that might exist.


pull requests welcome, but I'm not doing any HA stuff. One of the things that I did was added in a hex register dumper so if you decipher things later you can re-import and re-parse it with the right data. I've also tried to reverse engineer a few things and hoping that maybe we will get some better docs dropped in our lap at some point.

{"datalog":"BJ43500414","raw_data":{"254":"0x0014","255":"0x0000","256":"0x0000","257":"0x3B17","258":"0x0000","259":"0x0000","260":"0x0226","261":"0x0000","262":"0x0000","263":"0x0000","264":"0x0000","265":"0x0000","266":"0x0000","267":"0x0000","268":"0x0000","269":"0x0000","270":"0x0000","271":"0x0000","272":"0x0000","273":"0x0000","274":"0x0000","275":"0x0000","276":"0x0000","277":"0x0000","278":"0x0000","279":"0x0000","280":"0x0000","281":"0x0000","282":"0x0000","283":"0x0000","284":"0x0000","285":"0x0000","286":"0x0000","287":"0x0000","288":"0x0000","289":"0x0000","290":"0x0000","291":"0x0000","292":"0x0000","293":"0x0000","294":"0x0000","295":"0x0000","296":"0x0000","297":"0x0000","298":"0x0000","299":"0x0000","300":"0x0000","301":"0x0000","302":"0x0000","303":"0x0000","304":"0x0000","305":"0x0000","306":"0x0000","307":"0x0000","308":"0x0000","309":"0x0000","310":"0x0000","311":"0x0000","312":"0x0000","313":"0x0000","314":"0x0000","315":"0x0000","316":"0x0000","317":"0x0000","318":"0x0000","319":"0x0000","320":"0x0000","321":"0x0000","322":"0x0000","323":"0x0000","324":"0x0000","325":"0x0000","326":"0x0000","327":"0x0000","328":"0x0000","329":"0x0000","330":"0x0000","331":"0x0000","332":"0x0000","333":"0x0000","334":"0x0000","335":"0x0000","336":"0x0000","337":"0x0000","338":"0x0000","339":"0x0000","340":"0x0000","341":"0x0000","342":"0x0000","343":"0x0000","344":"0x0000","345":"0x0000","346":"0x0000","347":"0x0000","348":"0x0000","349":"0x0000","350":"0x0000","351":"0x0000","352":"0x0000","353":"0x0000","354":"0x0000","355":"0x0000","356":"0x0000","357":"0x0000","358":"0x0000","359":"0x0000","360":"0x0000","361":"0x0000","362":"0x0000","363":"0x0000","364":"0x0000","365":"0x0000","366":"0x0000","367":"0x0000","368":"0x0000","369":"0x0000","370":"0x0000","371":"0x0000","372":"0x0000","373":"0x0000","374":"0x0000","375":"0x0000","376":"0x0000","377":"0x0000","378":"0x0000","379":"0x0000","380":"0x0000"},"register_type":"input","serial":"4372830102","utc_timestamp":1742521639}
 
I noticed that lxp-bridge doesn't work if you block the dongle from reaching the internet. I may need to look at rs485 options instead and I have some extra esp32 boards anyway.
 
fyi, You can also ditch the wifi dongle on the EG4-6000xp and use rs-485 connected to the CT1 connector.
I'm doing this with Solar Assistant and it's rock solid (3 inverters)
 
has anyone gotten eg4-bridge running with eg4-18kpv?
I've started a discussion on that repo : https://github.com/jaredmauch/eg4-bridge/discussions/6

TL;DR
[2025-04-20T15:38:44.838 DEBUG eg4_bridge::eg4::inverter] inverter BA12345678: Successfully established connection at 192.168.1.21:8000
[2025-04-20T15:38:44.838 INFO eg4_bridge::eg4::inverter] inverter BA12345678: Successfully started and connected
[2025-04-20T15:39:26.160 DEBUG eg4_bridge::eg4::packet_decoder] Total frame length 19 is too small (minimum valid packet size is 20)
[2025-04-20T15:39:29.839 INFO eg4_bridge::eg4::inverter] [sender] Sent ReadParam packet to inverter - register: 4, datalog: BA12345678
[2025-04-20T15:39:29.839 INFO eg4_bridge::eg4::inverter] [sender] Sent ReadParam packet to inverter - register: 3, datalog: BA12345678
[2025-04-20T15:40:14.811 WARN eg4_bridge::eg4::inverter] Inverter BA12345678: No messages for 45 seconds (sent) / 90 seconds (received)
I used the SN from dongle for "datalog" id...

thank you
 
I noticed that lxp-bridge doesn't work if you block the dongle from reaching the internet. I may need to look at rs485 options instead and I have some extra esp32 boards anyway.
Hey mondurr just an FYI, I noticed the new EG4 dongles (ds series ) dont open port 8000 like the old BA series do-probably explains at least part of errors
 
Hey mondurr just an FYI, I noticed the new EG4 dongles (ds series ) dont open port 8000 like the old BA series do-probably explains at least part of errors
When I first went to setup lxp-bridge on my 12000xp, port 8000 was not open. I pulled the dongle and reseated it, then lxp-bridge immediately connected and port 8000 was open. If you can't connect maybe try doing what I did and see if 8000 is open after restarting the dongle.
 
I can login to my dongle (admin/admin) and there are 2 network connections (network 1 and network 2) under network setting. network 1 is set to send data to eg4 I assume (3.101.7.137/amazonaws), and network 2 is set as tcpserver local port 8000. So it may simply be that some of the dongles come with that disabled by default and you simply need to change it. And I might of messed around with mine and changed it from server to client, so if disabled you may want to try tcp server and tcp client.
 
Last edited:

diy solar

diy solar
Back
Top