IAMMETER Adds SunSpec Modbus/TCP Support: Model Mapping and Integration Guide
IAMMETER firmware i.91.065.18 adds a read-only SunSpec integer meter-model map to the existing Modbus/TCP service. It gives software that understands SunSpec models a standard way to discover an IAMMETER meter and read selected electrical values over the local network.
This is an interface addition, not a replacement measurement system. The meter continues to collect data in the same way. Existing IAMMETER Modbus registers, HTTP API, MQTT payloads and NEM settings remain unchanged.
SunSpec defines standard device information models that can be mapped into Modbus holding registers. Its map starts with a SunS marker, followed by Common and device-specific models that a client can discover by reading each model ID and length in sequence. The SunSpec Modbus specification package documents the model-discovery pattern, including the 0-based Modbus map locations and unimplemented-value rules. SunSpec Modbus is used across distributed-energy integrations, including meters, inverters and storage equipment.
IAMMETER implements a focused, read-only subset for meter data. This implementation is not SunSpec-certified. Do not treat this feature as certification, full SunSpec conformance or a guarantee that every third-party SunSpec client will work without configuration.
Current firmware model mappings
| IAMMETER meter | SunSpec integer meter model | Electrical interpretation |
|---|---|---|
| WEM3080 | 201 | Single phase |
| WEM2067 | 202 | Split phase |
| WEM3050T | 203 | Three-phase wye |
| WEM3080T | 203 | Three-phase wye |
| WEM3046T | 203 | Three-phase wye |
| WEM3063T | 203 | Three-phase wye |
These rows describe the current firmware model mappings. Physical-device validation reported here covers WEM3080T only; the other listed models still require device testing.
For WEM2067, Model 202 represents a genuine split-phase installation. It does not describe two unrelated single-phase circuits as the same electrical arrangement.
The code for Model 204 has host-test coverage, but firmware does not yet automatically detect and select it for WEM3080TD. This article therefore does not claim Model 204 availability. WEM3046TE also has not yet received dedicated model-identification verification. The first release supplies integer models only: float models 211 through 214 are not available.
What a client can read
The integer meter models expose phase voltage, phase current, phase active power, total active power, frequency, phase power factor, and per-phase and total import/export active-energy accumulators. The Common Model supplies device-identification data such as model, firmware version and serial number.
Energy is represented in Wh in the SunSpec map; power factor is represented as a percentage. Total-energy points reuse the meter's existing total fields and NEM semantics. IAMMETER does not recalculate a three-phase total by adding the phase accumulators in this mapping. Because the NEM setting affects the meaning of those accumulators, a client must not assume that total energy always equals the sum of phase energy.
Some fields are intentionally absent in this first version: reactive power and reactive energy, apparent power and apparent energy, multi-phase total power factor and event flags. Their standard locations remain in the model and return the appropriate unavailable marker. A SunSpec client must recognise unavailable values rather than interpret them as measurements.
Voltage interpretation matters
The phase values come from the meter. Some line-voltage points are derived for the model mapping:
- Model 202 line voltage is
UA + UB. - Model 203 line voltage is an approximation of phase voltage multiplied by
√3; it is not a direct line-to-line measurement. An unbalanced system or phase-angle deviation can create error.
This distinction is important for applications that need a directly measured line-to-line voltage. Check the model point definition and the connection arrangement before using a derived value for control or compliance decisions.
Connect with Modbus/TCP
Enable the meter's existing Modbus/TCP service, then connect to its LAN address:
| Item | Setting |
|---|---|
| Host | Meter LAN IP address |
| TCP port | 502 |
| Read function | 03 — Read Holding Registers |
| SunSpec start address | 40000 |
| Write access | Not supported by the IAMMETER SunSpec map |
The addresses in this guide are 0-based Modbus request addresses. Some applications display 1-based register numbers, so verify their convention before configuring a read; an off-by-one address will not return the expected marker.
Use Function Code 03 for each read below. Register counts include the model ID and length where applicable.
| Read | Start address (0-based) | Register count | Expected result |
|---|---|---|---|
| SunSpec marker | 40000 |
2 | 0x5375, 0x6E53 (SunS) |
| Common Model | 40002 |
68 | Model ID 1, length 66, device information |
| Meter model | 40070 |
107 | Model ID 201, 202 or 203, length 105, meter data |
| End marker | 40177 |
2 | Model ID 0xFFFF, length 0 |
One Modbus request can read no more than 125 registers, so read the Common and meter models separately. Clients should discover the model IDs and lengths rather than hard-code an assumption about every future model sequence.
Integer values and scale factors
SunSpec integer points use scale factors. Convert a raw integer with:
actual value = register integer × 10^scale factor
For example:
W = 12345
W_SF = 1
actual active power = 123450 W
Scale factors can change with range. Read a complete meter model each polling cycle so a value and its scale factor come from the same response. Do not cache scale factors indefinitely.
Validation and current limits
Validation has two separate scopes:
- Implementation validation: host tests passed for model layout, conversion, overflow, read-only behaviour and regression checks for existing registers. A WEM3080T test meter confirmed Model 203 discovery and continuous reads, with voltage and power checked against the existing HTTP and Modbus interfaces. Other meter models and individual third-party clients still need further physical testing.
- Release-file verification: firmware
i.91.065.18was built, uploaded and downloaded again for file verification. This exact release file was not flashed during this validation cycle; the implementation results above should not be read as a device test of the downloaded release file.
The firmware does not include the pending TCP framing improvement. It currently expects one complete request in a receive operation. Split or combined TCP requests may close the connection. Send one request and wait for its reply before the next request, while recognising that this does not eliminate every TCP-segmentation risk.
Where this fits in an IAMMETER installation
For architecture selection, start with IAMMETER integration and self-hosting solutions. The local APIs and open-interface guide compares the available meter interfaces.
Use the SunSpec map when a local client is built to discover and read SunSpec meter models. Use the existing IAMMETER Modbus/TCP register map when an application needs IAMMETER-specific registers. The existing local Modbus path remains useful for Home Assistant energy-meter integration, while HTTP, MQTT and IAMMETER Cloud remain independent options.
Download the firmware: i.91.065.18.bin.
Before updating, follow the IAMMETER firmware upgrade instructions and review your meter model, connection method and local network access. This is a read-only data interface; it does not provide inverter control, write operations or a claim of full third-party SunSpec interoperability.
Share your SunSpec integration
Have you used real equipment to read IAMMETER meter data through SunSpec? Join the IAMMETER SunSpec integration case collection and share your setup with the community. Simulator-based results are not eligible.
Participants who provide detailed integration documentation and publish it on a public forum can receive 5,000–10,000 Reward Points after IAMMETER review. Open the activity page and click Apply to join.