A photovoltaic plant produces energy and produces data, but reading the data is far harder than measuring the energy. I spent a few evenings extracting the production curve from a rooftop inverter, and the obstacle is not the physics: every manufacturer speaks a different language, often undocumented, and the software that turns it into a graph is almost always closed and tied to the manufacturer’s portal.
Context
A string inverter records useful quantities: instantaneous DC and AC power, string voltage, energy accumulated over the day and over the lifetime, fault codes. On residential and small plants these quantities almost always end up in a manufacturer web portal, reached by a dedicated datalogger that speaks a protocol the manufacturer decides. Whoever owns the plant sees their own numbers through an interface they do not control, on a server they do not run, in a format they can only export as the company chose.
Anyone who wants the data at home — in a local database, behind a graph built with their own tools such as RRDtool — meets three barriers in a row: the transport protocol, the register map, the licence of the software that reads them.
The transport layer
At least three families of access coexist in the field.
The first is Modbus, in its RTU form over serial RS-485 and its TCP form over IP. It is an industrial protocol from 1979, trivial to implement: a read request names a register address and a quantity, the reply returns 16-bit words. Several inverters expose a Modbus interface, and this is the easiest case to tackle for anyone writing software: the transport is public and libraries exist in every language.
The second is the proprietary world of SMA, the largest European manufacturer. Its inverters communicate over SMA-Net on serial, or over Bluetooth on more recent models. SMA ships YASDI — Yet Another SMA Data Implementation — a C library under the LGPL that implements the SMAData protocol over the serial port and over UDP. It is software whose source is available, a rare thing for a manufacturer, and it covers the wired connection. The Bluetooth channel, instead, uses a variant of the protocol that YASDI does not handle.
The third is the reverse-engineering route, for cases where no official library exists. The sma-bluetooth project on Google Code — ancestor of the tool later known as SMAspot — comes out of a collective analysis of the Bluetooth traffic of SMA inverters, reconstructed by sniffing the exchange between the inverter and the official software. The code is under the GPL, runs on Linux, and reads the instantaneous figure and the daily archive straight from the device, without going through the manufacturer portal.
The critical point: the register map
Having the transport is not enough. Even with Modbus available, knowing where the instantaneous power sits and how it is scaled remains a problem for every model. Historically each manufacturer numbers its registers its own way, with units and scaling factors documented — when they are — in separate technical sheets. A program that works with one inverter has to be rewritten for the next.
The most serious attempt to close this gap is the SunSpec specification. Since 2009 the SunSpec Alliance has defined an information model over Modbus: a common register map that a compliant inverter exposes from a known base address, with a header block that identifies the device and declares which optional models it implements. A reader walks the chain by reading the headers of successive blocks and stops when it meets the end-of-map marker. The promise is that the same reading code works on any compliant inverter, because the semantics of the registers are no longer a private convention but a public document.
In 2011 SunSpec is a young specification: published, readable, but with a still limited installed base. Most of the inverters on rooftops keep speaking their own dialect. The specification solves the problem at the source — agreeing the map before the device is built — instead of leaving it to downstream reverse-engineering archaeology.
Implications
The difference between these three approaches is not only technical. Modbus and SunSpec move the data from the manufacturer’s custody to the owner’s: whoever owns the plant can read their own numbers with their own tools, keep them in the format they prefer, compare them over time without depending on the continuity of a remote service. A library shipped in source form like YASDI makes that reading reproducible and verifiable by anyone, even though the underlying protocol stays the manufacturer’s. Reverse engineering recovers access where the company will not grant it, at the price of fragility: a firmware change can break everything.
On a photovoltaic plant what is at stake is the longevity of the data. A plant lasts twenty years and more; portals, companies and proprietary formats rarely last as long. A historical production series kept locally, in a documented format, is the only form of monitoring that does not depend on the commercial survival of whoever sold the inverter.
It is on this applied ground that FaSt is founded, the spin-off dedicated to photovoltaics described in a noze insight: https://www.noze.it/en/insights/spinoff-fast/.
Limits
None of the three approaches covers the whole installed base. Not every model exposes Modbus; SunSpec adoption is still sparse; reverse engineering is by definition tied to the single model and breaks with updates. The readable quantities do not include everything a yield analysis would need: ambient data, irradiance and module temperature must be collected from separate sensors, with their own logging. And reading a single inverter locally does not replace the fine string-level monitoring needed to diagnose a drop in output across a handful of panels. Readability of the production figure is the minimum condition, not a full analysis of a plant.
https://sunspec.org/wp-content/uploads/2009/03/SunSpec-Device-Information-Model-Specificiation-V1-2-1.pdf https://www.sma.de/en/products/apps-software/yasdi https://code.google.com/archive/p/sma-bluetooth https://oss.oetiker.ch/rrdtool/ https://www.modbus.org/specs.php
Cover image: SMA Sunny Boy SB 2800i photovoltaic string inverter, a rectangular unit with a light-coloured casing and a front display panel,… — photo by Asurnipal, CC BY-SA 4.0 — https://commons.wikimedia.org/wiki/File:Inverter_SMA_Sunny_Boy_SB_2800i-01ASD.jpg