Skip to content

Multi-inverter & multi-meter support

Latest

Choose a tag to compare

@dave92082 dave92082 released this 03 Jul 23:24
· 1 commit to master since this release

This release adds support for multi-inverter and multi-meter setups, automatic meter detection, and several new configuration options. Huge thanks to @Shargann, @cooldil, and @tomirgang, whose PRs and issue reports this release is built on.

✨ New features

Multiple inverters (#17)
InverterAddress / INVERTER_ADDRESS now accepts a comma-separated list, each entry optionally with its own port:

SolarEdge:
  InverterAddress: "192.168.1.189,192.168.1.190:1502"

All metrics now carry an inverter label (host:port) so each inverter can be queried separately, e.g. AC_Power{inverter="192.168.1.189:502"}.

Multiple meters (#25, thanks @cooldil)
New NumMeters / NUMBER_METERS option (default 1, up to 3). The first meter keeps the familiar M_* metric names; additional meters are exported as M2_* and M3_*, following the register layout in the SolarEdge SunSpec implementation technical note (now included under docs/).

Automatic meter detection (#13)
The exporter probes each meter before collecting and skips meters that aren't installed or enabled — no more zero-valued M_* metrics on systems without a meter (e.g. SE5000H). Detection retries automatically after transient connection errors.

Configurable Modbus client ID (#23, thanks @tomirgang)
New ClientId / INVERTER_CLIENT_ID option to override the previously hardcoded Modbus unit ID 1.

Configurable log path (#26, thanks @Shargann)
New Log.Path / LOG_PATH option (default SolarEdge-Exporter.log), handy when running as a systemd service. The sample unit file in contrib/ shows a /var/log setup.

Sample Grafana dashboard (#27, thanks @Shargann)
A ready-made dashboard is now available at grafana/SolarEdgeExporter.json.

⚠️ Upgrade notes

  • New inverter label on all metrics. Typical PromQL expressions (e.g. AC_Power*(10^AC_Power_SF), including everything in the sample dashboard) keep working unchanged, since both sides of these expressions carry the same label. Only tooling that depends on completely unlabeled series (e.g. exact-match federation or honor_labels edge cases) may need adjusting.
  • Metric names, types, and raw register/scale-factor semantics are unchanged — no dashboard rewrites required.