I've been referring to the EG4 Modbus protocol spec (provided by EG4 here) and successfully polling my inverter for the usual suspects (inverter state, battery voltage, PV power in, load power out, bus current, etc.) directly via a DIY modbus controller I'm working on. The one thing I haven't been able to pull is the battery state of health.
As per the spec, both State of Charge (I believe that's a typo in the document, "capacity" is register 97!), and State of Health are input register address 5. I'm not sure how to interpret that. This isn't a register with multiple states mapped to individual bits where you can apply a bitmask to extract the information you want, since elsewhere they clearly spell out which bits map to which values. A good example of this is register 71 where bits 0-3 indicate AutoTestStart, and so on. Address 5 is the only register in the doc that's overloaded like this. I've tried querying both U_INT16 and U_INT32 values from it, and I've tried applying high- and low- WORD and DWORD masks to the return value. The only result I can extract is 42, which is the correct value for my battery's current State of Charge.
Has anyone had any success pulling the battery State of Health from the inverter?
Cheers,
-A
N.B. - since the inverter aggregates all of the batteries' status information into one representation, I'm making the assumption here that battery SoH would represent the worst value reported by any of the attached batteries' BMSs.
As per the spec, both State of Charge (I believe that's a typo in the document, "capacity" is register 97!), and State of Health are input register address 5. I'm not sure how to interpret that. This isn't a register with multiple states mapped to individual bits where you can apply a bitmask to extract the information you want, since elsewhere they clearly spell out which bits map to which values. A good example of this is register 71 where bits 0-3 indicate AutoTestStart, and so on. Address 5 is the only register in the doc that's overloaded like this. I've tried querying both U_INT16 and U_INT32 values from it, and I've tried applying high- and low- WORD and DWORD masks to the return value. The only result I can extract is 42, which is the correct value for my battery's current State of Charge.
Has anyone had any success pulling the battery State of Health from the inverter?
Cheers,
-A
N.B. - since the inverter aggregates all of the batteries' status information into one representation, I'm making the assumption here that battery SoH would represent the worst value reported by any of the attached batteries' BMSs.