Open Solar and Battery Monitoring with RS485, Modbus and SunSpec
Summary
Most hybrid inverters and many batteries expose their data on an RS485 port or a network interface using Modbus, and SunSpec defines a free, open register layout for solar and storage equipment. With a data logger, an RS485 adapter or tools such as pysolarmanv5 and Home Assistant, an owner can read production, battery and grid data locally, without a vendor cloud. Some ecosystems restrict this: as of October 2026, Enphase gateways require a cloud-issued token for local access, and the Powerwall 3 offers less local data than the Powerwall 2. Start read-only, and leave protection, grid-profile and export settings as the utility approved them.
Why local data matters
Monitoring through a manufacturer's cloud is convenient, but the data then depends on the internet connection, the vendor's servers and the vendor's account terms. Local access means reading the inverter or battery directly over the home network or a serial cable. It keeps working during an internet outage, which is often when an owner most wants to see the battery's state of charge; it allows automations that react in seconds, such as shedding a load when the battery falls below a threshold; and it gives the owner a permanent record that does not disappear if a service is discontinued.
Our guide to smart-home devices that work without the cloud lists which consumer products run locally in Home Assistant. This guide goes one layer down, to the protocols that inverters and batteries actually speak, and is written for owners, installers and engineers who are comfortable with them. The rule throughout is to read first, and to treat writing settings as a separate decision that belongs with the installer and the manufacturer.
RS485 and Modbus RTU basics
RS-485 (opens an external site) is an electrical standard for a twisted-pair bus that carries a differential signal, which tolerates the electrical noise around inverters and long cable runs. Modbus (opens an external site) is the request-and-response protocol most often carried on it: one master, such as a data logger or a computer, polls each slave device by address and reads numbered registers. Modbus RTU is the compact binary form used on serial lines. The figures below come from the Modbus over Serial Line specification (opens an external site), V1.02; the Modbus Organization (opens an external site) publishes the protocol specifications.
| Item | Specification | What it means in practice |
|---|---|---|
| Addresses | One master; slaves numbered 1 to 247 | Each inverter, battery or meter on the bus needs a unique address |
| Devices per segment | 32 always allowed without a repeater | Larger installations need repeaters or devices documented for more |
| Signal names | D0 and D1 (D1 maps to B/B', D0 to A/A') | Product labels vary, so follow each device's manual rather than the letter on the terminal |
| Line termination | At both ends of the trunk only, never on a drop cable, no more than two: 150 Ω (0.5 W), or 120 Ω in series with 1 nF where the line is polarized | Missing or extra terminators cause reflections and intermittent errors |
| Line polarization (bias) | Where needed, a pull-up to 5 V on D1 and a pull-down on D0, 450 to 650 Ω, at one point only, generally the master | Keeps the idle bus in a defined state; several devices biasing the same bus can upset it |
| Speed and format | 9600 and 19200 bps required; 19200 bps and even parity are the required defaults | Every device on the bus must use the same speed and parity |
| Cable length | About 1,000 m at 9600 bps with AWG26 or heavier | Distance is rarely the limit in a house; grounding and routing are |
The protocol defines how to ask for a register, not what the register means. Register maps, the documents that say which address holds battery voltage or grid power and with what scaling, are specific to each manufacturer unless the device implements SunSpec models. A capable owner with the map can read a device with any Modbus client; without it, the data is just numbers. Battery systems often use a second bus, CAN (opens an external site), between the battery management system and the inverter. That link carries charge and discharge limits and is not a monitoring port to tap into.
Modbus TCP and SunSpec models
Modbus TCP carries the same requests over Ethernet or Wi-Fi, normally on TCP port 502, so a networked inverter or an RS485-to-Ethernet gateway can be read from any computer on the network. Modbus itself provides no protection against unauthorized commands or interception, so a Modbus TCP device belongs on a separate network segment and must never be exposed to the internet.
SunSpec Modbus is the open answer to vendor-specific maps. The SunSpec Alliance (opens an external site) publishes standard information models, blocks of registers with defined meanings for inverters, meters and storage, so a client that understands SunSpec can read compliant equipment from different makers. SunSpec states that all of its specifications are free to download and use, that SunSpec Modbus is referenced in IEEE 1547-2018, and that it interoperates with IEEE 2030.5 and IEEE 1815 (DNP3), the other communication interfaces that standard identifies. A Secure SunSpec Modbus specification is at test status. Where a device supports SunSpec, ask for its implementation note, which states the models and any vendor-specific additions.
Data loggers, pysolarmanv5 and Home Assistant
Many hybrid inverters ship with a Wi-Fi data logger stick that reads the inverter over RS485 and uploads to a cloud service. Loggers made by Solarman (IGEN-Tech) use a proprietary V5 protocol that wraps Modbus RTU frames. The open-source pysolarmanv5 (opens an external site) library, released under the MIT license, talks to these loggers directly on TCP port 8899 and offers synchronous and asynchronous interfaces. Its documentation notes that the Solis S3-WIFI-ST stick is not supported and that some Ethernet loggers speak Modbus TCP natively, without the library.
Home Assistant (opens an external site), the open-source home automation platform, is where most owners bring this data together. The ha-solarman (opens an external site) custom integration, also MIT licensed, is built on the asynchronous pysolarmanv5 and also supports Modbus TCP through ESP-based or Waveshare RS485 bridges. SolarAssistant is a commercial alternative: its software (opens an external site) runs on a Raspberry Pi, works without an internet connection, supports brands including EG4, Sol-Ark, Growatt, Deye and Victron, and publishes data to Home Assistant by automatic discovery and over MQTT (opens an external site), WebSocket or REST.
Whether local polling works alongside a logger's cloud upload depends on the logger and its firmware, so we confirm it on the specific unit. The same RS485 or CAN link to the inverter is also what a battery or vehicle bridge controller uses, a topic covered in our guide on EV batteries and hybrid inverters.
Read-only first, and what not to change
Reading registers changes nothing in the inverter. Writing them can. Many inverters expose writable registers for operating mode, charge limits, export limits, grid profile and protection settings, and a write to the wrong address or with the wrong scaling takes effect immediately. We do not publish register writes, and this guide does not describe them.
Protection settings, the grid profile and export limits are part of what the utility approved. In New York, interconnection under the Standardized Interconnection Requirements (opens an external site) is based on certified equipment with the utility's settings, and a change to the operating mode requires a new application. Changing these settings yourself can breach the interconnection agreement, can affect anti-islanding and the safety functions described in our guide on inverter rapid shutdown, arc-fault and isolation detection, and can void the warranty.
- Use a Modbus client in read-only mode, or an integration that only reads, until the register map is confirmed against the inverter's own display.
- Keep inverters, loggers and gateways on their own VLAN, with no port forwarding from the internet.
- Make operational changes, such as charge schedules, through the manufacturer's documented interface or with the installer.
- Leave grid profile, protection and export settings as commissioned. Changes go through the installer and, where required, the utility.
Restricted ecosystems, as of October 2026
Some major brands have narrowed local access in recent firmware. The facts below are stated as each source gives them, with the manufacturer's stated reason where one exists.
| System | What changed | Stated reason | Source |
|---|---|---|---|
| Enphase IQ Gateway | Since gateway software 7.0.x, the local UI and APIs require a token issued by the Enphase cloud with an Enphase account; valid one year for a system owner and 12 hours for an installer. Since firmware 8.2.4225, battery mode, charging from the grid and the reserve level can no longer be set through the local API. | Enphase: token-based authentication to improve security; the one-year limit is to ensure safety | Enphase TEB-00060-2.0-EN, June 2025; Home Assistant documentation |
| Tesla Powerwall 3 | Exposes a more restricted local HTTP API than Powerwall 2, without off-grid control, backup reserve or per-battery data. From firmware 25.10.0, routed access to the gateway's 192.168.91.1 interface ended; a direct connection to the Powerwall's own Wi-Fi is required. | We found no published statement from Tesla | Home Assistant documentation; pypowerwall project |
Enphase's technical brief on token access (opens an external site) adds that a self-installer using installer credentials receives 12-hour tokens unless Enphase Support converts the account to owner credentials. Once issued, the token allows data to be read locally; issuing and renewing it requires the Enphase cloud. Home Assistant's Enphase integration (opens an external site) renews the token automatically unless multi-factor authentication is enabled.
For the Powerwall 3, Home Assistant documents the reduced local entities (opens an external site). The open-source pypowerwall (opens an external site) project, under the MIT license, reads more data through Tesla's TEDAPI interface over the gateway's Wi-Fi and describes a wired-LAN mode that uses a registered RSA key. These are community-developed interfaces, not a Tesla-documented local API, and they can change with any firmware update. Tesla's official route is its cloud Fleet API, which, according to pypowerwall, caps the backup reserve at 80 percent.
Authentication on a controllable grid asset is reasonable, and both companies support their customers through their own apps. The open question is narrower: whether authentication has to depend on a vendor cloud account, or could be issued and held locally by the owner.
What open standards require, and what they do not
Public rules already require inverters to communicate, but with the utility. IEEE 1547-2018 identifies three local communication interfaces for distributed energy resources: SunSpec Modbus, IEEE 2030.5 and IEEE 1815. In California, Rule 21 Phase 2 communication requirements took effect on June 22, 2020; as SunSpec summarized them (opens an external site), any solar inverter or energy storage system installed in California must have demonstrated the capability to communicate using IEEE 2030.5 under the Common Smart Inverter Profile.
These are utility-facing requirements. They require communication capability so that utilities and aggregators can monitor and manage equipment; they do not require that the owner be given local access, credentials or a register map. A product can meet them while offering the owner no documented local interface at all.
The case for documented local interfaces
We believe documented local interfaces serve owners and the industry, and we say so on the record. Owners keep their data and automations if a cloud service changes or ends. Installers can integrate inverters, batteries, meters and chargers from different makers, diagnose faults on site without waiting for a support queue, and service systems after a manufacturer exits a market. Utility programs benefit as well: PSEG Long Island's Battery Storage Rewards program (opens an external site) runs enrolled home batteries as a network that relieves strain on the grid on hot summer days, through third-party aggregators that depend on reliable communication with each system. Wider use of home and vehicle batteries as flexible storage, argued in full in our EV battery and hybrid inverter guide, depends on the same open, standard interfaces.
The counterweights are real: an open interface must be secured, manufacturers bear support costs when third-party tools misbehave, and settings that affect the grid must stay under control. A published read-only map with locally issued credentials, plus a documented and authenticated path for the settings an owner may legitimately change, would address both sides. The same argument applies to EV chargers, as our guide on OCPP and charging network lock-in explains.
A buying checklist, and how we set it up
- A published Modbus register map or SunSpec implementation note for the inverter, the battery and the meter.
- Local access that works without a cloud account, or with credentials the owner can renew locally.
- A wired RS485 or Ethernet port, not only Wi-Fi.
- A firmware policy with release notes, so changes to local access are announced.
- An existing Home Assistant integration with a local IoT class, or a documented API.
- For a microinverter array coupled to a hybrid, as described in our guide to AC coupling microinverters to a hybrid inverter, local access to both systems.
Battery data deserves the same openness; our guide to second-life EV batteries as home storage discusses how much depends on the battery management system's own data. On our projects, we specify equipment with documented local interfaces, run shielded twisted-pair RS485 and Ethernet cabling to the inverter location during installation, place the equipment on its own network segment, and set up read-only monitoring in Home Assistant or the owner's preferred platform. Network and controls work is part of our low-voltage services, and electrical work is performed by our licensed partner electricians.
Frequently asked questions
Can I read my inverter without the manufacturer's app?
Often yes. Many hybrid inverters accept Modbus RTU on an RS485 port or Modbus TCP on the network, and many Solarman-type loggers can be read locally with pysolarmanv5 or the ha-solarman integration. You need the register map for your model, or SunSpec support.
What baud rate and termination does Modbus RTU use?
The serial line specification requires 9600 and 19200 bps, with 19200 bps and even parity as the defaults; confirm the setting in each device's manual, because every device on the bus must match. The bus is terminated at both ends only, with 150 Ω, or 120 Ω in series with 1 nF where the line is polarized.
Why does my Enphase system need a token for local access?
Since IQ Gateway software 7.0.x, Enphase requires token-based authentication for the local UI and APIs, which it states is to improve security. Owners obtain a token valid for one year from the Enphase cloud with their Enphase account; installer tokens last 12 hours.
Does California Rule 21 give owners local access to their inverter?
No. Rule 21 requires inverters to demonstrate the capability to communicate using IEEE 2030.5, which is a utility-facing requirement. It does not require manufacturers to give owners local access, credentials or a register map.
Is it safe to change inverter settings over Modbus?
Reading is safe; writing is a different matter. Protection, grid-profile and export settings are part of the utility's approval, and changing them can breach the interconnection agreement and void the warranty. Operational changes should go through the manufacturer's documented interface or the installer.
Sources
18 sources
- MODBUS over Serial Line Specification and Implementation Guide V1.02 (opens an external site)Modbus-IDA
- Modbus Specifications (opens an external site)Modbus Organization
- Specifications (opens an external site)SunSpec Alliance
- California Rule 21 Phase 2 Goes Into Effect This Month (opens an external site)SunSpec Alliance
- pysolarmanv5 (opens an external site)GitHub
- Solarman Stick Logger (ha-solarman) (opens an external site)GitHub
- SolarAssistant (opens an external site)SolarAssistant
- IQ Gateway local APIs or UI access using token (TEB-00060-2.0-EN) (opens an external site)Enphase Energy
- Enphase Envoy - Home Assistant (opens an external site)Home Assistant
- Tesla Powerwall - Home Assistant (opens an external site)Home Assistant
- pypowerwall (opens an external site)GitHub
- New York State Standardized Interconnection Requirements Effective October 1, 2026 (opens an external site)New York State Department of Public Service
- Battery Storage Rewards Program (opens an external site)PSEG Long Island
- RS-485 (opens an external site)Wikipedia
- Modbus (opens an external site)Wikipedia
- CAN bus (opens an external site)Wikipedia
- Home Assistant (opens an external site)Wikipedia
- MQTT (opens an external site)Wikipedia
This guide reflects our experience and our interpretation of the rules as of the date it was published or last updated. Regulations, codes, incentives and the way agencies enforce them change often, and our interpretation may be incomplete or wrong. It is general information, not legal, engineering, tax or financial advice. Consult the relevant agency and a licensed professional before you plan, purchase or begin any work. Reading this guide does not make you our client and does not create any contractor, consulting or advisory relationship. Outstanding Construction Inc is not liable for any loss arising from the use of or reliance on this content, and is responsible only for work performed under a written contract signed with us.