Quick Summary (TL;DR)
For most existing solar installations, start with the inverter’s supported local interface, not another piece of hardware. A maintained native integration such as the Home Assistant Fronius integration can deliver generation, inverter status and, where a correctly installed compatible meter is connected, useful grid-flow data without depending on a vendor cloud. But a native API only exposes what the inverter actually measures; it does not magically know household consumption or tariff-meter import and export.
Choose Modbus when you need documented registers, integration with other controllers or measurements missing from the native API. Check whether your exact inverter, communications module and firmware expose Modbus TCP or RS485 Modbus RTU, and whether the connection is enabled for the owner. Modbus is a protocol, not a promise of identical registers, trustworthy energy counters or internet-independent operation on every product.
Choose an external CT-based meter when the monitoring boundary is the household supply, when the inverter is locked down, or when independent verification matters. A correctly installed bidirectional meter at the grid connection point can show import and export regardless of inverter brand, including at night. It still cannot tell you solar production or battery flows unless additional measurements are available. A certified direct-connected or CT-operated Modbus energy meterAliExpress price is another external-meter option, not a fourth data source in the energy balance.
The first question is what you actually need to measure
Three superficially similar dashboards may be answering three different questions. An inverter measures energy converted from its PV input to AC output. A grid meter measures energy crossing the property’s connection to the public network. A battery controller measures charge and discharge on its own electrical side. These values have different signs, time bases, efficiencies and accounting boundaries. Buying a communications gateway before defining the measurement boundary is a reliable way to end up with a dashboard that looks impressive but cannot reconcile with an electricity bill.
A solar-only homeowner may be satisfied with daily AC production and a fault alert. Someone planning excess-solar EV charging needs a sufficiently timely net grid-flow measurement, plus a charger that can enforce its own safety and minimum-current limits. A hybrid solar-and-battery household needs separate solar, grid and battery values. A homeowner investigating a high bill needs import/export counters measured at the correct connection point, not merely the inverter’s daily yield. These are different buying briefs, even when all use Home Assistant.
| Question | Minimum reliable measurement | Can an inverter alone answer it? | Best verification |
|---|---|---|---|
| How much solar did I generate? | Cumulative AC PV generation, kWh | Often yes; check the exposed counter | Compare inverter portal and local counter over the same period |
| Am I importing or exporting now? | Signed grid power at point of common coupling | Only if the inverter system has a suitable grid meter | Compare direction with the physical meter or known loads |
| How much did I buy and export? | Separate cumulative import and export kWh | Not without valid grid-meter data | Compare billing-register changes over exact dates |
| What is the house using? | Solar, grid and battery flows with defined sign conventions | Sometimes inferred, if all necessary flows are metered | Check balance under several operating conditions |
| Can I use surplus for an EV or immersion heater? | Timely, reliable net grid-flow signal plus local fail-safe | Only with correct meter and control path | Observe controlled transitions and charger fallback |
| Did the battery charge from solar or grid? | Battery charge/discharge and grid/PV context | Hybrid systems may expose some values | Compare battery and AC/DC boundary; do not assume zero losses |
At a glance: native API, Modbus and external CT meter
| Criterion | Native inverter API / official integration | Modbus TCP or RS485 RTU | External CT energy meterAliExpress price |
|---|---|---|---|
| Primary measurement | Inverter and attached system sensors | Whichever device registers are documented | Conductors passing through correctly placed CTs |
| Typical Home Assistant path | Brand integration over local LAN; sometimes cloud instead | Built-in integration or configured Modbus sensors | Local Shelly integration, MQTT or gateway-specific integration |
| Solar production | Usually strongest for AC generation | Often available; DC/AC semantics require checking | Not from a grid-only CT; dedicated solar CT needed |
| Grid import/export | Only if the inverter system includes a grid meter | Available when reading a correctly located grid meter | Yes, with a bidirectional meter at the grid boundary |
| Battery data | Only where vendor exposes battery/controller data | Register-map and model dependent | No battery state of charge; power may require extra channels |
| Local independence | Good for a genuine local API; not for cloud-only APIs | Good with local server and transport | Good with supported local device and LAN |
| Installation work | Often none beyond network setup | None for existing TCP; RS485 wiring may be needed | Distribution-board work and CT positioning by a qualified electrician |
| Major risk | Missing entities, model restrictions, vendor firmware | Register, sign, scaling, access and security errors | Incorrect CT phase pairing, orientation and physical coverage |
| Long-term cost | Potentially low when already installed | Gateway, cabling, configuration and maintenance | Meter, compatible CTs, enclosure space, electrician and maintenance |
The table deliberately avoids claiming that one method is inherently more accurate. Measurement accuracy belongs to the actual metering hardware, its installation and the meaning of the exposed value. Modbus reading a calibrated meter does not make the reading less accurate than a native JSON API; an API returning an inverter estimate does not become a billing-grade meter because the data is digital. The meaningful comparison is sensor origin + physical location + calibration + data transport + recovery behaviour.
Option 1: read the inverter’s native local API
A genuine native local API is usually the simplest route when the installation already has the required network interface. For example, Fronius documents its Solar API as a JSON interface served by the inverter or Datamanager. The official Home Assistant Fronius integration supports Solar API v0/v1 systems and can read the connected inverter, meter and storage information when the particular installation provides it. On Gen24 firmware 1.14.1 and later, the Solar API may need enabling in the inverter web interface. This is not the same as the separate, internet-facing Solar.web query API.
That integration is more capable than a generic “solar production sensor”. Home Assistant documents power-flow polling around every ten seconds, with many inverter and meter measurements refreshed every minute. Most supported Fronius models also expose optional SunSpec Modbus TCP; Home Assistant can add MPPT measurements from Modbus alongside the Solar API. It is therefore possible for one official integration to use both data paths. The existence of two paths does not mean you should duplicate the same energy counter in the Energy dashboard.
A native API is attractive because it preserves vendor interpretation of battery states, operating modes and system topology. However, this advantage has limits. The inverter may go to sleep overnight, its web interface may change after firmware updates, and an attached meter may be installed in a feed-in path rather than a consumption path. Some inverters report DC string yield and AC delivered energy as distinct quantities. Even the official Fronius documentation warns that the meaning of per-MPPT energy can differ between product families; for the Home Assistant solar-production entry, the AC Energy total is generally the relevant counter, not a larger DC value.
Do not generalise this example to every inverter. Some brands offer cloud APIs rather than owner-accessible local APIs; some require installer permission to enable third-party access; some use separate dataloggers with model-specific features. Before purchasing an inverter or gateway, ask the installer to demonstrate the exact endpoint, the exact data points and the account privileges that will remain available after handover. “Has Wi-Fi” and “works with an app” are insufficient answers.
Native API checklist: six questions to ask before buying
- Does the precise inverter model and firmware expose a documented local API, or is the advertised API hosted in the manufacturer cloud?
- Can the owner enable and keep the API active without an installer-only password or an ongoing subscription?
- Which values are physically measured: AC solar yield, PV string DC power, grid import/export, battery charge/discharge and household load?
- Is a compatible smart meter already installed, where is it connected, and what is its documented meter placement?
- Does the device continue to respond when WAN internet is disconnected, and what happens overnight or during an inverter reboot?
- Are there lifetime counters suitable for the Energy dashboard, or only instantaneous watts and daily-reset totals?
Option 2: Modbus TCP or RS485 RTU
Modbus is useful when a vendor publishes an inverter or meter register map, when a commercial controller needs the same data, or when a native integration omits important diagnostics. Modbus TCP runs over an IP network, commonly on TCP port 502. Modbus RTU uses serial communications, commonly RS485, and needs a suitable interface or an appropriate RS485-to-network gateway when Home Assistant cannot connect directly. A gateway configured as transparent RTU-over-TCP is not necessarily equivalent to a native Modbus TCP server: the Home Assistant Modbus integration distinguishes these connection types.
The official Home Assistant Modbus documentation explains unit IDs, polling intervals, input/holding registers, data types and byte/word ordering. These are not implementation trivia. Reading a two-register IEEE-754 float as two independent 16-bit integers can produce plausible-looking nonsense. A scale factor can change units by 10 or 1000. A signed grid-power register may use the opposite convention to another device. The address printed in a vendor manual may be one-based while the integration expects a zero-based register offset. Copying a random YAML snippet from another inverter revision is not a verification method.
Fronius publishes SunSpec Modbus documentation. Its GEN24 manual explicitly states that register locations can vary with the dynamic SunSpec model list: a client should discover model start addresses and use offsets, not assume a hard-coded address applies universally. The manual also distinguishes integer-plus-scale-factor from floating-point model variants. A professionally supported integration that discovers these details is preferable to dozens of hand-maintained registers unless you have a clear reason to go lower-level.
Modbus does not by itself provide authentication or encrypted transport. Never forward TCP 502 to the public internet. Use a trusted local network or a properly secured VPN for remote access; segment IoT equipment if practical, and restrict write permissions. Some inverters expose control registers for export or battery operation. A read-only monitoring project should not enable unrestricted write access simply because a forum example includes it. Export limits, protection settings and grid-code parameters are the installer’s responsibility, not experimental Home Assistant automations.
Modbus purchasing traps
| Trap | What to check | Consequence if missed |
|---|---|---|
| “Modbus supported” with no port or map | Exact inverter SKU, firmware, logger model, TCP versus RTU and published register list | Additional gateway, installer visit or no integration |
| Cloud logger mistaken for local gateway | Whether local Modbus can coexist with cloud monitoring on that revision | Loss of portal visibility or unplanned extra hardware |
| Unknown register scaling | Data type, signedness, endianness, scale and unit | Incorrect kW/kWh and false automation triggers |
| Unclear meter unit ID | Inverter and meter IDs; gateway routing; multi-drop bus addressing | Reads inverter but not the grid meter |
| Inverter sleeping at night | Whether grid meter is powered and queryable independently | No overnight import readings |
| Multiple polling clients | Vendor rate/connection limits and shared RS485 bus timing | Timeouts, stale entities or unstable datalogger |
| Write controls enabled by default | Access control and read-only configuration | Risk to export compliance and battery operation |
A specific Solis example shows why the exact logger matters. The manufacturer’s S2-WL-ST product page lists Modbus TCP support, Wi-Fi/LAN networking and local storage for later cloud backfill, with the storage window depending on how many inverters share the logger. Those claims do not guarantee simultaneous cloud service and local Modbus operation in every mode. Confirm the relevant logger manual and firmware behaviour with Solis and the installer before promising both functions. A logger advertised for ten inverters is not ten independently metered household grid connections.
Option 3: an external CT-based grid meter
A current transformerAliExpress price (CT) measures current in a conductor without carrying the measured load through the monitor. A useful power and energy meter also needs the correct voltage reference and phase relationship, or an equivalent documented measurement method. A bare CT clampAliExpress price connected to an arbitrary ESP32 analogue input is not a certified grid meter. For bidirectional solar monitoring, select a meter that explicitly supports signed active power and separate imported and exported energy totals, and ensure the installer places the CTs on the conductors at the intended electrical boundary.
The current European Shelly Pro 3EM 120A v2 is one example of a DIN-rail, three-phase-capable CT monitor with a local web interface, Ethernet/Wi-Fi and MQTT/HTTP/WebSocket connectivity. Shelly lists three 120 A CTs in the package, four-quadrant measurement and manufacturer-declared Class B active-energy performance. It is a monitoring device, not an inverter controller or a built-in switching relay. The official Home Assistant Shelly integration communicates locally without requiring the Shelly cloud.
Pay attention to product revision and documentation discrepancies. The v2 product page describes a minimum 45 days of one-minute history in its detailed specification, while some marketing copy says up to 60 days. Treat the detailed device documentation and firmware as authoritative for the purchased unit; do not promise automatic Home Assistant backfill of all local records after an outage. A 120 A CT rating is the rating of the specified transformer, not a claim that the meter itself may be wired into a 120 A circuit without suitable voltage-sensing protection.
An external meter is particularly valuable when an older inverter offers only a cloud portal, when you have multiple PV inverters, or when you want the grid measurement to remain available at night. It is also useful as an independent cross-check on the inverter’s grid-flow estimate. It is not sufficient for measuring total solar generation if fitted only at the grid boundary. If you need solar generation from an otherwise opaque inverter, ask about a separate correctly located AC output meter; do not infer solar generation from net grid export.
External meter does not always mean CT: direct and Modbus alternatives
A panel-mounted Modbus meter can use direct current connections or external CTs depending on its model and rated current. The Eastron SDM630 family illustrates the distinction: the manufacturer publishes separate models and manuals, including SDM630 MCT series documentation describing RS485 Modbus RTU and external CT wiring. Do not purchase an SDM630-labelled meter without checking whether the selected variant is direct-connected or CT-operated, its current input specification, phase configuration, supply arrangement and applicable certification. “Modbus” describes the output interface, not how the current is sensed.
A direct-connected meter may provide robust register-based import/export totals but requires the load conductors to be routed through appropriately rated meter terminals. A CT-operated meter avoids routing the full load current through its current-input terminals but introduces CT ratio, polarity and secondary-circuit requirements. Neither is a DIY distribution-board modification. In the UK, work within the consumer unit and any meter-tails changes need a competent electrician, and the utility’s sealed meter and network equipment are not homeowner installation points.
What each meter location actually tells you
| Meter location | Directly measures | Cannot independently tell you | Typical error |
|---|---|---|---|
| Inverter AC output | AC solar generation on that output | Grid import/export or whole-house load | Treating inverter output as exported energy |
| Grid connection point | Net exchange with the public grid; separate counters if supported | Total PV yield or battery state of charge | CT on only one phase of a three-phase supply |
| Battery inverter AC connection | Battery inverter AC-side power | Battery DC energy and losses without other sensors | Mixing AC and DC battery energy |
| PV DC string | String voltage/current and DC power | AC export after conversion losses | Adding DC yield to AC generation |
| House subcircuit | Loads served by that circuit | Whole-property import/export | Assuming a partial circuit is the whole house |
| Shared solar + battery output | Combined output at that location | Separate PV and battery contributions | Counting battery discharge as fresh solar generation |
Power balance: a worked example that catches bad dashboards
Suppose a house has no battery, and at one instant the inverter reports 3.0 kW of AC PV generation while a correctly positioned grid meter reports 1.0 kW of export. The implied house demand is approximately 2.0 kW, ignoring small losses and differences in update timing. The 1.0 kW export is not the solar generation. Equally, a 3.0 kW inverter reading does not mean the homeowner is exporting 3.0 kW. If a cloud dashboard and local meter sample ten seconds apart while a kettle switches on, their instantaneous figures need not balance exactly.
Now imagine the same inverter reports 3.0 kW of AC output, the battery inverter discharges 1.0 kW on the AC side, and the grid meter shows 0.5 kW import. The approximate house demand is 4.5 kW, assuming the named measurements are independent and use the same boundary. But if the “inverter output” is already a combined PV-plus-battery value, adding battery discharge again would double-count it. With hybrid equipment, draw the measurement points before writing the formula. Battery charge/discharge may be reported on the DC side, where efficiency losses mean simple AC balances are not exact.
Illustrative AC-side, solar-only balance (same instant):
House load ≈ AC solar generation + grid import − grid export
Example: 3.0 kW + 0.0 kW − 1.0 kW = 2.0 kW
For a hybrid system, add battery AC discharge and subtract battery AC charge
ONLY if those flows are separately metered and not already included in inverter output.
The corresponding energy balance uses kWh integrated over the same period, not a snapshot in kW. Import and export must remain separate cumulative counters for billing. A single signed net-power sensor can show zero at an instant even when different phases are importing and exporting; billing treatment and three-phase netting depend on the utility metering arrangement. Do not assume that summing instantaneous per-phase values reproduces the supplier’s import/export registers for every country or meter type.
Three-phase and regional compatibility: UK and European homes
Typical UK and continental European domestic supplies are nominally 230 V phase-to-neutral, 400 V phase-to-phase at 50 Hz, but the actual service, earthing arrangement, main fuse, permitted installation methods and grid code differ by property and country. A single-phase solar inverter may sit on one phase of a three-phase property. A meter covering only that phase will not measure the whole home. A three-phase meter needs the correct phase-to-voltage pairing and, where required, a neutral reference; a CT facing the wrong way or paired with the wrong voltage phase can report misleading import/export and power factor.
The European Shelly Pro 3EM v2 specification states 100–260 V AC supply and per-phase voltage sensing, with three supplied 120 A CTs. That does not mean the unit is connected directly across 400 V phase-to-phase. Its wiring diagram must be followed. Equally, a US-market split-phase energy monitor should not be assumed to fit a UK 230/400 V installation because the name or number of CT channels looks suitable. Confirm the exact regional SKU, voltage range, CT specification, approvals and installer guidance before purchase.
For new solar generation or battery storage in Great Britain, government guidance on DNO registration explains that the installer must determine whether the arrangement falls under connect-and-notify or apply-to-connect procedures, typically using the relevant G98/G99 and sometimes G100 process. Adding a read-only monitor is not permission to alter an inverter export limit. Monitoring hardware must not interfere with certified grid protection, meter seals or the approved export-control arrangement. The local electrical code, BS 7671 where applicable and the installation manual govern wiring.
Outages: “local” is not the same as “complete history”
Consider four different outages: (1) internet is unavailable but the local LAN works; (2) Home Assistant stops for an hour; (3) the inverter shuts down overnight; and (4) the meter itself loses power. A local API or Modbus server can survive the first scenario. It does not follow that Home Assistant can reconstruct minute-by-minute readings missed during the second. A cumulative energy counter can often reveal the total change across the gap, while a power-only sensor integrated inside Home Assistant cannot recreate unknown changes in load during the outage. The third and fourth scenarios depend on the equipment’s auxiliary power and logging design.
| Failure scenario | Native inverter API | Modbus reading a cumulative meter | External CT meter with local history |
|---|---|---|---|
| WAN internet outage | Usually still works if truly local and LAN remains | Works if local link and server remain powered | Works locally if LAN remains and device is configured |
| Home Assistant down for one hour | Lifetime counter may bridge total; not every intermediate point | Cumulative register can bridge total; fine-grained trace missing | Device may retain history; check actual retrieval and import path |
| Night-time inverter sleep | PV data may be unavailable; attached meter path varies | Inverter-hosted gateway may sleep; standalone meter may remain live | Grid meter remains useful if independently powered |
| Device reboot or power loss | Depends on non-volatile counters and firmware | Depends on meter persistence and register semantics | Depends on non-volatile logging and clock |
| Vendor cloud unavailable | Local API unaffected if truly local | Local Modbus unaffected if independently enabled | Local meter unaffected; vendor cloud optional |
| Router/VLAN failure | No Home Assistant access across broken network | TCP path lost; RS485 to local gateway may still operate | Ethernet/Wi-Fi path lost, even if meter keeps recording |
For billing reconciliation, a stable lifetime import/export kWh register is usually more useful than a beautifully sampled but lossy instantaneous-power graph. The Home Assistant Integral helper approximates kWh from power over time; the documentation explicitly notes that the result is an approximation, and the helper resumes from its retained value after restart rather than reconstructing unobserved changes. If you already have a suitable cumulative kWh register from the hardware, prefer it. Test overnight and outage recovery before declaring the system reliable.
Cloud APIs are a different fourth category
A cloud API can be convenient when the inverter offers no local route, but it is not interchangeable with a local native API. It depends on the vendor’s servers, authentication, internet access, polling quotas and account rights. For example, the official Home Assistant SolarEdge integration uses site credentials or an API key for cloud-based data and documents a 15-minute update cycle for its site sensors to respect a daily request limit. That can be perfectly adequate for daily production reporting but is not a substitute for fast, fail-safe local grid measurement for dynamic load control.
Do not assume that a local Modbus connection and the vendor’s cloud service always work simultaneously. Some logger modes or firmware variants may prioritise one service. Obtain written confirmation for the exact product and current firmware if preserving cloud monitoring matters to your installer or warranty arrangements. Where remote access is necessary, a secured remote connection into Home Assistant is generally a better monitoring architecture than exposing unauthenticated Modbus services directly to the internet.
Practical buying combinations, not a one-size-fits-all winner
| Existing installation | Recommended starting point | Buy only if needed | Avoid |
|---|---|---|---|
| Supported Fronius with working Solar API and grid meter | Use official local Fronius integration; validate meter position | Nothing initially; optional wired LAN improvements | Duplicate CTs solely to obtain a second copy of the same value |
| Fronius with no grid meter | Use Solar API for generation; add approved grid meter for import/export | Compatible inverter meter or independent meter | Inferring grid export from solar output |
| Older inverter with cloud-only monitoring | Use vendor portal for PV history; install independent grid monitor | CT meter plus electrician; optional AC solar output meter | Treating cloud data as a real-time local fail-safe |
| Hybrid system with battery | Use native system data for PV/battery; independent grid meter for verification | Gateway/approved meter if missing | Mixing battery DC and AC counters |
| Multiple inverters or mixed brands | Meter the common grid boundary; sum independent AC generation only when appropriate | Per-inverter integration and dedicated PV output meters | Adding grid import twice or treating net export as production |
| RS485-only inverter or meter | Document register map and bus first | Isolated compatible RS485 adapter or industrial gateway | Assuming every Ethernet serial server speaks native Modbus TCP |
| New build with automation ambitions | Specify meters, cable routes and network at design stage | Appropriate approved hardware and commissioning time | Buying an inverter based solely on app screenshots |
If your aim is simply to see whether the house is exporting, an independent local meter at the grid point may be the most durable choice. If your aim is to diagnose underperforming PV strings, the inverter’s own MPPT data is essential; a grid CT cannot reveal a failed string. If your aim is to automate a battery, the battery management system and manufacturer-approved control route matter more than either dashboard. There is no universal “best protocol” without stating the question and the physical measurement boundary.
Total cost of ownership: the parts that quotations omit
Avoid comparing only the headline price of a communication dongle against a CT meter. For a new installation, the inverter may already include Ethernet and a suitable data interface, making a local API almost free to add. On an existing installation, enabling Modbus may require an installer visit, a new logger, a licence or a compatible gateway. A CT meter may require spare DIN-rail space, protected voltage-sensing connections, correctly rated CTs, additional wiring, a suitable enclosure, a network port and professional labour. None of these costs can be estimated reliably from the product page alone.
| Cost line | Native API | Modbus | External meter |
|---|---|---|---|
| Hardware | Often included in inverter or datalogger | Possibly RS485 adapter, Ethernet logger or gateway | Meter, CTs, accessories and any enclosure |
| Installation labour | Network setup; possible installer access | RS485 cabling, bus termination, address setup | Electrician to inspect, wire, test and label board |
| Network | Stable LAN and IP reservation | LAN or serial bus; optional network segmentation | LAN/Wi-Fi coverage at distribution board |
| Software configuration | Official integration and entity selection | Register mapping, scaling, sign and polling | Local integration, CT mapping and energy entities |
| Validation | Compare API with inverter portal and meter | Compare register values with local device display | Compare import/export against physical utility meter |
| Long-term maintenance | Firmware and integration changes | Register maps, gateway firmware, polling clients | CT condition, firmware, board documentation |
| Possible recurring dependency | None for truly local route; cloud APIs may differ | Normally none for local read-only Modbus | Normally none for local-capable monitor |
Ask installers to itemise commissioning and handover rather than merely supplying “monitoring included”. The deliverable should include the installed model and firmware, network details, which registers or API entities were checked, grid meter position, CT ratios and directions, proof of sensible import/export readings, and a documented way for the owner to retain read access. This reduces the chance of paying for a second call-out just to obtain an installer password or find an RS485 cable that was never run.
A sensible Home Assistant implementation plan
- Inventory first. Record inverter model, serial-family designation, firmware, logger/dongle SKU, connected smart meter and battery hardware. Ask for the as-built single-line diagram.
- Draw measurement boundaries. Mark inverter AC output, grid connection, battery AC/DC interface and any secondary solar source. Define sign convention for import and export.
- Confirm a supported local path. Use official vendor and Home Assistant documentation for that model. Check access on the actual local network before buying extra hardware.
- Use stable addressing. Reserve the device IP in DHCP where appropriate; do not publish Modbus ports to the internet. Plan VLAN routing explicitly if the devices sit on separate networks.
- Commission any physical meter professionally. Verify correct CT orientation, phase pairing, supply protection, register scaling and safe installation. Do not open or modify sealed utility equipment.
- Start with read-only entities. Obtain solar AC power and cumulative energy; then separate grid import and export counters; then battery charge/discharge where available.
- Check statistics eligibility. Confirm correct units, device class, state class and whether counters are lifetime, daily-reset or signed net totals before adding them to Energy.
- Validate under controlled conditions. Observe import at night, daytime export, a known household load, and any battery charging/discharging; compare physical meter registers over a defined period.
- Test failure behaviour. Disconnect WAN internet without disturbing the LAN, restart Home Assistant, and check which energy counters recover versus which power-history intervals remain missing.
- Document the final architecture. Save source entity names, meter positions, installation records, firmware and any limits on data recovery for future troubleshooting.
How to configure the Energy dashboard without double-counting
Home Assistant’s Energy documentation distinguishes consumption, production and storage. A power sensor in watts is not automatically an energy sensor in kilowatt-hours. Prefer cumulative hardware energy counters with appropriate state classes, and keep grid import and export as separate sources. If the inverter only reports instantaneous power, the Integral helper can create an approximate energy counter; understand that missed samples and source behaviour affect its accuracy.
If you have an inverter and a separate CT meter, decide which source is authoritative for each measurement. For example: inverter AC lifetime yield for solar production, independent meter lifetime import and export for grid energy, and battery-controller counters for battery energy. Do not also add the inverter’s estimate of grid import to the same grid source: that is not “more accurate”, it is a second copy of the same energy flow. Nor should you add both a daily-reset inverter production sensor and its lifetime counter as separate solar sources.
For billing comparisons, record meter-register values at the beginning and end of the supplier’s actual billing period. Home Assistant’s Utility Meter helper can calculate period totals and tariffs from a source, but its first cycle may be incomplete and its options for periodically resetting and net consumption have different meanings. Do not blindly enable “net consumption” for a sensor that should track a monotonically increasing import register. A negative grid-power value is not a negative imported-energy register.
Commissioning tests worth doing before trusting the figures
| Test | Expected observation | What a failure suggests |
|---|---|---|
| Night-time known load, PV off | Grid import rises; solar AC generation is zero | Grid meter unavailable, wrong CT direction or wrong boundary |
| Sunny period with low household demand | Solar AC power exceeds demand; grid export rises | Missing export counter, reversed sign or meter placement |
| Switch on a known large load | Net export falls or import rises by roughly the load | Stale sampling, missing phase or mismatched voltage/CT |
| Battery charges from PV | Battery charge rises; grid flow reflects remaining balance | DC/AC double counting or wrong battery sign |
| Home Assistant restart | Persistent device energy counter resumes; missing fine history acknowledged | Power-derived kWh cannot fully backfill |
| WAN unplugged, LAN intact | True local API/Modbus/CT integration continues | Cloud dependency or DNS/network routing issue |
| Three-phase load on each phase | Corresponding phase changes; totals remain coherent | CT-to-phase mismatch or only one phase monitored |
These tests are diagnostic checks, not a claim of laboratory calibration. A kettle labelled 2 kW is not a precision reference meter, and rapidly varying loads make cross-device comparisons difficult. For a meaningful test, use stable conditions and allow for each device’s update interval. If the figures remain implausible, ask the installer to check the physical meter configuration rather than “correcting” the Home Assistant dashboard with an arbitrary multiplication factor.
Common problems and what they usually mean
| Symptom | Likely cause | Next action |
|---|---|---|
| Inverter yield works, grid import is missing | No compatible grid meter or meter not exposed by API | Inspect system topology and supported meter entities |
| Grid power is negative when importing | Opposite sign convention or reversed CT | Confirm documented convention; have electrician inspect CT |
| Solar production exceeds plausible PV output | DC string yield mistaken for AC output or duplicate sources | Use correct AC generation counter; remove duplicate |
| Grid total is near zero but bill shows import and export | Netting instead of separate energy registers | Use dedicated import and export cumulative counters |
| Modbus values look huge or tiny | Wrong register, scaling, data type or byte order | Check exact vendor map and read raw value |
| Meter vanishes at night | Inverter-hosted logger sleeping or meter supply issue | Check standalone meter power and gateway path |
| Works locally until firmware update | API permission, HTTPS or register behaviour changed | Review current vendor release notes and integration requirements |
| Energy chart jumps after reset | Wrong state class, reset handling or summed resetting sensors | Inspect Statistics and source counter semantics |
| CT meter shows implausible power factor | Wrong voltage phase pairing or CT polarity | Qualified electrician to verify wiring |
| Local Modbus stops cloud monitoring | Logger-specific operating-mode conflict | Check exact logger documentation before changing settings |
Frequently asked questions
Is Modbus always better than a manufacturer API?
No. A supported native integration may expose more understandable system states and handle firmware quirks automatically. Modbus is preferable when you need a documented register not provided by the API, when you have an existing Modbus energy meterAliExpress price, or when you need interoperability with a local controller. Both can read accurate measurements; neither repairs an incorrectly installed meter.
Can a CT clamp measure solar generation?
Only when the CT and its voltage reference are installed on a conductor carrying the relevant solar AC output and the device can correctly measure energy in that direction. A CT at the grid connection measures net exchange, not total PV production. On a hybrid output shared with battery power, even an AC output CT may not separate PV from battery contribution.
Do I need a second meter if the inverter already has a smart meter?
Not automatically. First check its location, accuracy, accessible import/export counters, night-time availability and whether Home Assistant can read them. A second meter is justified by an unmet requirement such as independent verification, multi-inverter coverage, additional circuit monitoring or a reliable local feed for automation. It also creates another calibration and installation point.
Does a 120 A CT meter suit every UK consumer unit?
No. The CT aperture, conductor geometry, voltage reference, main protective device, available DIN-rail space, earthing arrangement and electrical installation rules all matter. A 120 A current rating does not authorise any particular wiring arrangement. Have a qualified electrician assess the exact unit and installation.
Can Home Assistant control inverter export through Modbus?
Some inverters expose writable setpoints, but this is not universal and is not a substitute for a certified export-limitation or protection system. A Home Assistant crash or LAN outage must not undermine the approved grid connection. Leave commissioning and grid-related control settings to the authorised installer and the manufacturer-supported control system.
Which path works when the internet is down?
A local inverter API, local Modbus connection or local-capable CT meter can work without WAN access as long as the devices and local network remain powered. A vendor cloud API cannot. Internet independence says nothing by itself about recovery of measurements missed while Home Assistant was off.
Can I calculate household consumption by adding grid import and solar output?
For a simple solar-only installation, house demand is approximately solar AC output plus grid import minus grid export, using consistent measurements. Batteries, multiple inverters, AC/DC boundaries, auxiliary loads and update delays complicate the equation. Use an as-built measurement diagram and do not double-count combined hybrid inverter output.
Is a direct-connected Modbus meter better than a CT meter?
It depends on the electrical installation and required measurement class. A direct-connected meter avoids external CT ratio and orientation issues but must carry the monitored current through appropriately rated terminals. A CT meter suits larger currents or existing conductors without rerouting the full load, but introduces transformer selection and wiring requirements. The manufacturer’s certified model, installer’s design and meter position matter more than the word “Modbus”.
Final recommendation
Use the inverter’s official local integration first when it exposes the data you need. It avoids extra wiring and usually gives the clearest production and diagnostic information. Use Modbus when the required data exists in documented registers or when a wired industrial-style integration is the better long-term fit. Treat register maps, permissions and security as engineering requirements, not setup afterthoughts. Install an independent bidirectional grid meter when the missing information is household import/export, when the inverter is cloud-locked, or when you need a cross-check independent of the PV brand. Choose CT versus direct-connected metering based on the electrical design, not the convenience of a product listing.
The best system is often a deliberate combination: inverter for solar AC generation, a meter at the grid boundary for import/export, and the battery controller for battery-specific measurements. Once those boundaries are correct, Home Assistant can assemble a trustworthy picture. Without them, adding more integrations simply creates more ways to count the same kilowatt-hour twice.
Related guides on esp32.co.uk/
- Best DIN-Rail Modbus Energy Meters for Home Assistant — compare wired meter hardware and installation requirements.
- ESP32 Modbus Energy Meter with Home Assistant: SDM120 / SDM630 Guide — the ESP32 and RS485 integration path.
- Home Assistant Energy Dashboard: Correct Grid, Solar and Battery Entities — avoid the most common source-selection errors.
- Home Assistant Energy Dashboard Troubleshooting for ESPHome — diagnosing state classes and cumulative statistics.
Official technical references
- Home Assistant — Fronius integration (supported models, Solar API, optional Modbus, polling and Energy guidance).
- Fronius — Solar API JSON documentation (local inverter data interface).
- Fronius — Modbus TCP documentation and GEN24 Modbus manual (SunSpec models, dynamic registers and meter unit IDs).
- Home Assistant — Modbus integration (TCP, serial, register addressing and sensor types).
- Solis — S2-WL-ST logger product page (documented logger features and storage).
- Shelly — Pro 3EM 120A v2 specifications and Home Assistant — Shelly integration (regional hardware, local protocol and supported generations).
- Eastron — SDM630 MCT series manual (CT model and RS485 Modbus RTU).
- Home Assistant — Energy management, Integral helper and Utility Meter helper (power, energy, accumulation and statistics).
- UK government — registering energy devices (DNO responsibilities for generation and storage).
Research note (14 October 2026): This guide is based on manufacturer documentation and maintained Home Assistant documentation, not an invented product bench test. Specifications, firmware, availability, regulatory approval and logger permissions can vary by region and revision. No estimated purchase prices, electricity savings, affiliate links or unsupported compatibility promises are presented.

