Typically an SMA Cluster Controller takes between 5 and 10 seconds to respond to a modbus TCP request, even when it originates from within the local network. On top of this, the Cluster Controller requires that requests for data are made at least 10 seconds apart. Once the cluster controller receives a modbus request, it converts it to a Speedwire request that it sends out to the connected inverters. Each inverter has a response time of roughly 1 second, and cannot submit more than 30 data points within the scope of a single request. All of this ends up creating a large temporal barrier when trying to poll inverters for data with a granularity of less than 1-minute.
This script acts as a proof of concept showing that it is possible to connect to the web interface of an SMA Cluster Controller in order to fetch its current instantaneous values faster than would be possible by utilizing its modbus interface. By remotely logging into the cluster controller and grabbing a dump of the XML backend that drives the graphical user interface, we can parse out instantaneous values that are updated roughly every 2 seconds. This removes the need to install additional hardware on a site or bypass an existing cluster controller in order to get faster data reads on SMA inverters, and moves the bulk of optimization potential out of the hands of the manufacturer and into the hands of the developer interested in polling the devices.