Skip to content
Seth edited this page Jan 26, 2024 · 37 revisions

SolarEdge Inverters Only Support One Connection

SolarEdge inverters only support one Modbus/TCP connection at a time. Additional attempts to connect to the inverter will fail until the last connection is closed.

Other users have reported using proxies as a workaround, but this integration is not tested with proxies.

Incorrect or Missing Battery Values

If you are seeing incorrect values for battery data or sensors that were previously working started to show as unavailable, you may need to power cycle your battery and inverter to re-sync or reestablish communications with the battery.

Meters connected with EnergyNet

Meters connected wireless with "SolarEdge Energy Net" or "SolarEdge Home Network" do not appear to be supported with modbus. Documentation indicates they have a wired RS485 option, so it's recommended remove any wireless connections and try the wired communication option.

SolarEdge may support EnergyNet meters in the future: see Issue #252

Not All Inverters Support Battery Data or Controls over Modbus

Not all inverters support battery data over modbus even if you have batteries attached and recognized in SetApp. Battery data over modbus is a function that can be enabled or disabled by SolarEdge support. Some inverters have it enabled, some have it disabled. There is no known pattern which will be which. This also includes all site limit and storage control options, which are part of the same data set as batteries.

If you turn on battery auto-detection and the integration doesn't show any batteries, then unfortunately you are one of the unlucky ones with an inverter that does not support battery data over modbus. When you turn on debug logging you will see IllegalAddress responses to Inverter X battery Y probes. Anytime you see an IllegalAddress response this means the inverter is saying it doesn't support the request. This is not a bug: it is a valid response from an inverter.

Some people have been successful in convincing SolarEdge to enable this functionality for them: Discussion #63 (comment)

Others have not had success with SolarEdge: Discussion #63 (comment)

For more information see Discussion #63: Battery integration

Dual Function Meters

Meters configured for dual function in SetApp (such as Production + E/I) will only report one of the meter functions over modbus. The meter function will be shown in the integration Device Info under "Hardware". Only values for the that function will be reported by the inverter over modbus. This is not a bug: this is how SolarEdge has chosen to implement dual function meters at this time.

Reference: Discussion #298

More Than Three Batteries

UPDATE: Battery 3 is known to work on inverter firmware version 4.17.218. Support for B3 was added in Pull Request #508

The modbus interface defines two batteries per inverter. The third battery register is undocumented but demonstrated to work.

Integrating additional batteries with modbus will require SolarEdge to extend their modbus support.

Battery Energy

The energy counters for battery energy import (charging) and export (discharging) will reset to zero when used with LG or BYD batteries, which can cause unreliable data collection or lost statistics. These data points are documented as "Lifetime Import/Export Energy Counter" which means they should never reset to zero, however LG and BYD batteries do not provide lifetime charge/discharge data.

There is no fix for this issue since it is a hardware (battery controller) issue. SolarEdge Energy Bank batteries have been reported to use lifetime counters correctly.

Starting with Release v2.2.7-pre.5 (PR #177) an option was added to allow battery energy counters to reset to zero. The default is disabled which assumes the proper behavior for a lifetime energy counter. Enabling this option may be required if you are using an LG or BYD battery. Release v2.3.4-pre.3 added a new option to only allow energy to reset (or go backwards) after N number of polling cycles.

References:

Service Calls with pyscript Custom Integration

Add the optional parameter blocking=True to service calls for proper function.

See: https://hacs-pyscript.readthedocs.io/en/latest/reference.html#calling-services