SE UI API InterfaceDocumentation en
SE UI API InterfaceDocumentation en
web Query
API - Specification
Information class: Public, Fronius International, BU SE, 12.10.2023
© Fronius International GmbH
BU SE
Fronius reserves all rights, in particular rights of reproduction, distribution and translation.
No part of this work may be reproduced in any way without the written consent of Fronius. It must not
You are hereby reminded that the information published in this document, despite exercising the
greatest of care in its preparation, is subject to change and that neither the author nor Fronius can
49.0 Oct 12, 2022 / Updated sections Metadata calls, Aggregation calls, Historical data
calls, Realtime data calls, System messages calls:
/ Added Wattpilot data.
/ Updated some example responses.
/ Minor corrections in section Weather data calls.
/ Updated General information section.
/ Updated Supporting UIs section.
/ Updated channel list:
/ Added Wattpilot data
/ Removed reference to outdated Aggregation calls
47.0 Apr 21, 2021 / Updated camelCase notation in examples for system messages.
46.0 Apr 02, 2021 / Changed supported channel information for aggregated and historical
data requests.
/ Updated Solar.web screenshots, error code lists and channel list.
Beta environment
For preview of new functionalities, Fronius provides a Beta environment (available at the URL https://swqapi-
beta.solarweb.com/). It works like the Production environment, i.e. uses the same API keys to access the
same PV systems, so you can test your applications against it.
Each response to the following calls counts as just one data point:
/ PV system information
/ Detailed information about systems
/ Detailed information about devices
/ Power flow data
/ Current weather data
The responses for the following calls count as multiple data points:
Information about pricing and data plans, more details and example calculations can be found at https://
www.fronius.com/en/solarweb-query-api. Please contact your local sales representative for further details
about pricing.
Active status A key can be active or passive, and you can toggle its status. Active keys can
be used, passive keys cannot be unless you toggle them.
Expiry date You can set a validity period for a key, e.g. if you want to enforce key
renewals.
By default, new keys do not have an expiry date; they can be used as long as
you do not delete them, or set an expiry date and the expiry date is not yet
reached. Once you define an expiry date, you cannot delete the expiry date
any longer nor extend the expiry date into the future.
Last used date This attribute indicates the time and date when the key was last used for an
API call. This way you can identify unused keys and delete or deactivate them
for security reasons.
API calls expect to receive access key ID and access key value data in the HTTP header.
Examples:
Solar.web Premium
Please note that access to Solar.web Premium features through the API is only possible if the
impersonated user owns a Solar.web Premium membership.
JWT token A long string, identifying the customer and providing access to him, for example:
value
eyJ4NXQiOiJOR1psTURSbFkyRXlaR1kzTkRjNU1UVm1PR0UwWWpGaVpXWTBaamcxWV
dOa09EWmtNRE5rTVEiLCJraWQiOiJOR1psTURSbFkyRXlaR1kzTkRjNU1UVm1PR0Uw
WWpGaVpXWTBaamcxWVdOa09EWmtNRE5rTVEiLCJhbGciOiJSUzI1NiJ9.eyJhdF9oY
XNoIjoiS2hLZVZsc0lPXy1tWDhvZkJZSzdJZyIsImF1ZCI6IlljNHhtcEIyVnlyR2p
hcUlraGoxbXJEOFZ6VWEiLCJzdWIiOiJodWV0dG5lci50aG9tYXNybmRAZnJvbml1c
y5jb20iLCJuYmYiOjE1ODUyOTQ2NjcsImF6cCI6IlljNHhtcEIyVnlyR2phcUlraGo
xbXJEOFZ6VWEiLCJhbXIiOlsicGFzc3dvcmQiXSwiaXNzIjoiJHtjYXJib24ucHJvd
G9jb2x9OlwvXC8ke2NhcmJvbi5ob3N0fVwvb2F1dGgyXC9vaWRjZGlzY292ZXJ5Iiw
iZXhwIjoxNTg1Mjk4MjY3LCJpYXQiOjE1ODUyOTQ2Njd9.HUXi1sySzyLqx2e0dLpr
0sszi-YiI3nGNB4GZDDwIwVHUHC4s6ED8BqfvkfFn3s45LkvJQEvqb_Wd3QtMGnzOL
EZ3RdK3A8GWdsDChVq_nzlP4FGC6b5lPoz9Xi6mH_pcxt36rzA2-vjl_e6cTOrTXsI
eIzOjZVNSZRAJ4-A5HpmEuvraoArAGUqc_yTntbfALhfJQkfsjoDAJRAfZXLknTvDK
m2vMd0-uXjTQHM2dKAWGAz6r39cLQ24sFIIC7MDgIp4GpNVBCLFSNzkK7mV3fSEQvg
IdAFMhEP4CY4lMTItLxdfRKxcf5SA7o2fU0-_710frdFYvrkesorDCiyfg
JWT expiry An expiry time (UTC time) for the JWT; a Fronius JWT is valid for exactly one hour and
date needs to be refreshed periodically.
Note: A JWT stays valid even if the customer changes his password (for a maximum of
one hour).
In the Authorization section select "Bearer" and then paste the jwtToken value from previous call.
CURL example
Please note that a PV system can only be accessed through the API if the user has access to it (by
ownership or access permission).
3.4 Pagination
When returning many results, SWQAPI makes use of HATEOAS principles to support
pagination. Additionally, SWQAPI returns a "totalItemsCount" object.
The default pagination limit is 50, the maximum pagination limit is 1000 currently.
Example:
Example JSON return object with pagination information (see the "links" object type)
{
"pvSystemIds": [
...
Please note that, for better readability, we do not show the paging objects in the command
reference.
// get all historical temperature values (Temp1 channel) using different timezones in
the URL
// all examples below are for October 10th, 2018, from 11am to 12am zulu time
GET api.solarweb.com/swqapi/pvsystems/20bb600e-019b-4e03-9df3-a0a900cda689/histdata?
from=2018-10-10T11:00:00Z&to=2018-10-11T12:00:00Z?channel=Temp1
// zulu time notation
GET api.solarweb.com/swqapi/pvsystems/20bb600e-019b-4e03-9df3-a0a900cda689/histdata?
from=20181010T120000%2b01:00&to=20181011T130000&2b01:00?channel=Temp1
// CET (+01:00 offset to zulu time), compact encoding
// please note that the "+" in the offset needs to be encoded with "%2b"
GET api.solarweb.com/swqapi/pvsystems/20bb600e-019b-4e03-9df3-a0a900cda689/histdata?
from=2018-10-10T06:00:00-05:00&to=2018-10-11T07:00:00-05:00?channel=Temp1
// get all historical temperature values (Temp1 channel) for October 10th, 2018, from
11am to 12am local time of the PV system
GET api.solarweb.com/swqapi/pvsystems/20bb600e-019b-4e03-9df3-a0a900cda689/histdata?
from=2018-10-10T11:00:00&to=2018-10-11T12:00:00?channel=Temp1
// local time, depending on where PV system 20bb600e-019b-4e03-9df3-a0a900cda689 is
located
// timezone=zulu
"logDateTime": "2019-07-31T12:00:00Z"
// zulu time notation
"logDateTime": "2019-07-31T13:00:00+01:00"
// assuming PV system is in CET (+01:00 offset to zulu time)
"logDateTime": "2019-07-31T07:00:00-05:00"
// assuming PV system is in EST (-05:00 offset to zulu time)
Actions:
/ If you want to create a new key, please press the CREATE NEW KEY button. This will create a new
key, which will be downloaded in a JSON file containing the API key ID and its secret value.
/ You can give a name and description to each key. To do so, please press the three dots in the Action
menu column and then select Edit.
Please note: Expired keys cannot be renamed.
/ If you want to set an expiry date please press the three dots in the Action menu column and then
select Edit.
Please note: Expiry dates cannot be removed or changed to a later date once they are set. If a key is
expired, you can no longer edit it.
/ To deactivate a key, toggle its status in the Status column.
/ Only expired or inactive keys can be deleted. To do so, please press the three dots in the Action
menu column and then select Delete.
Recommendations:
/ If you have multiple developers, create separate keys for each developer. Create another key for
automated tested, staging and production systems.
/ If a key is compromised, especially keys for production, please renew the key:
/ Create a new key.
/ Set an expiry date for the old key or deactivate the old key as soon as the new one is deployed.
/ If you want to implement periodic key renewals for security reasons:
/ Create a new key.
Security notes
Storing customer passwords needs to be carefully designed, because passwords can easily
leak. Please make use of operating system capabilities, such as iCloud Keychain, Android
Keystore, Credential Manager in Windows, etc.
Additionally, please consider GDPR and other PII regulation.
/ I used the former "ThirdParty API" (predecessor of SWQAPI) and used the customer's credentials to
login. When I migrate from ThirdParty API to SWQAPI I can reuse the credentials, thus the customer
does not notice a change.
Methods
Filter Description
Example calls
POST api.solarweb.com/swqapi/iam/jwt?scope=my-app.23423af9afe0af0
// generates a new JWT for impersonation in a specific scope
Input objects
JSON object input construction:
Type Objects
Example input
{
"userId": "mike@thisisme.com",
"password": "thisIsMyVeryPrivatePassword!"
}
Response objects
JSON object answer construction:
Type Objects
Example responses
Notes:
/ After a refresh, you get a new refresh token. The old refresh token gets invalidated.
Methods
Filter Description
?scope=<scope> Optional but recommended: Scope of the token for multiple sessions,
which needs to be the same scope when the original token was
created. The scope can be generic or specific for a user agent (e.g. a
device or app ID).
Scopes allow users to be logged in from multiple devices and in
Solar.web in parallel.
Example calls
PATCH api.solarweb.com/swqapi/iam/jwt/98a47454-b650-34b8-9a8c-27adae447ab71?scope=my-
app.23423af9afe0af0
// refreshes an existing token and generates a new one, uses the original scope
Response objects
JSON object answer construction:
Type Objects
refreshToken / String
jwtToken / String
Example responses
{
"refreshToken": "c5f51670-e2ca-35b7-acc2-c32c8ceebc69",
"jwtToken":
"eyJ4NXQiOiJPVEZsT1RCbE9HSmhZak15TlRFNU5XVTJPVGd6TnpVd04yTmpOVFV5WlRFeU1tRTNZVEZoTmci
LCJraWQiOiJPVEZsT1RCbE9HSmhZak15TlRFNU5XVTJPVGd6TnpVd04yTmpOVFV5WlRFeU1tRTNZVEZoTmciL
CJhbGciOiJSUzI1NiJ9.eyJhdF9oYXNoIjoicXZUYi04RzJvQnR5Qko1SEt5Z1l3USIsInN1YiI6ImtyZW5od
WJlci5hbGV4YW5kZXJAZnJvbml1cy5jb20iLCJzdHJlZXRfYWRkcmVzcyI6IkZyb25pdXNwbGF0eiAxIiwiZ2
VuZGVyIjoiMSIsImFtciI6WyJDdXN0b21BdXRoZW50aWNhdG9yTG9jYWxNYWluIl0sImlzcyI6Imh0dHBzOlw
vXC9sb2dpbi5mcm9uaXVzLmNvbVwvb2F1dGgyXC90b2tlbiIsImNvbnRhY3RfaWQiOiJmYzY0NWVjNi00NmQ1
LWU5MTEtOTEyOS0wMDUwNTZhMjYxNDAiLCJzb2xhcndlYl9wcmVtaXVtX2V4cGlyYXRpb25fZGF0ZSI6IjIwM
jAtMDUtMTJUMjI6MDA6MDBaIiwic2lkIjoiOWE4NWYzMTgtMWE2Yi00NDMyLTliZGQtZGZkOGUzNWMwNjk2Ii
wiYXpwIjoibWZfbzlpVEF5S2VtTkxRVGE2U3A2SFlvbkNJYSIsImV4cCI6MTU3MjI1NzY4NywiaWF0IjoxNTc
Methods
Example calls
DELETE api.solarweb.com/swqapi/iam/jwt/98a47454-b650-34b8-9a8c-27adae447ab7
// revokes an existing refresh token
Response objects
n/a
Example responses
n/a
Methods
Example calls
GET api.solarweb.com/swqapi/info/release
// retrieves the API's full version number and release date
Response objects
JSON object answer construction:
Type Objects
Example responses
{
"releaseVersion": "1.0.0.0",
"releaseDate": "2019-10-07T"
}
Methods
Example calls
GET api.solarweb.com/swqapi/info/user
// returns user information
Response objects
JSON object answer construction:
Type Objects
{
"name": {
"title": "Mr.",
"firstName": "John",
"lastName": "Doe"
},
"address": {
"street": "Froniusplatz 1",
"zipCode": "4600",
"city": "Wels",
"state": "Upper Austria",
"country": "Austria"
},
"contractInformation": {
"telephone": "+123456789",
"email": "john.doe@SWQAPI.com"
},
"settings": {
"timeZone": "Europe/Berlin",
"dateFormat": "DD.MM.YYYY",
"timeFormat": "24h",
"language": "en"
},
"accountAttributes": {
"premiumMembership": true,
"termsAcceptedLatest": true,
"termsAcceptedVersion": 2
}
}
Methods
Filter Description
/ battery
/ smartmeter
/ ohmpilot
/ datalogger
/ evcharger
Example calls
GET api.solarweb.com/swqapi/pvsystems
// retrieves metadata of all PV systems
GET api.solarweb.com/swqapi/pvsystems?offset=200&limit=50
// returns metadata of 50 PV systems, starting at offset 200
GET api.solarweb.com/swqapi/pvsystems?type=battery
// returns metadata of all PV systems which have a battery (caution: does not
retrieve the battery device info)
GET api.solarweb.com/swqapi/pvsystems/20bb600e-019b-4e03-9df3-a0a900cda689
// returns metadata of a specific PV system
GET api.solarweb.com/swqapi/pvsystems?meteo=pro
// returns metadata of all PV systems which have a "pro" weather information
available (which is normally only one PV system in the account)
Response objects
JSON object answer construction:
Type Objects
{
"pvSystemId": "04d81b82-7861-4e36-8e7f-41036ce711a4",
"name": "Fronius AT Wels Reception Hybrid",
"address": {
"country": "AT",
"zipCode": "4600",
"street": "Günter Fronius Straße 1",
"city": "Thalheim bei Wels",
"state": "OÖ"
},
"pictureURL": "https://www.solarweb.com/Image/Show?
pvSystemId=04d81b82-7861-4e36-8e7f-41036ce711a4&pictureId=20991838-16d7-4a9a-83fd-
a75b00b34211",
"peakPower": 5000.0,
"installationDate": "2000-01-01T00:00:00Z",
"lastImport": "2020-03-27T06:03:42Z",
"meteoData": "light",
"timeZone": "Europe/Berlin"
}
{
"pvSystems": [
{
"pvSystemId": "20bb600e-019b-4e03-9df3-a0a900cda689",
"name": "Fronius AUS Melbourne",
"address": {
"country": "AU",
"zipCode": "3043",
"street": " _",
"city": "Tullamarine",
"state": null
},
"pictureURL": "https://www.solarweb.com/Image/Show?
pvSystemId=20bb600e-019b-4e03-9df3-
a0a900cda689&pictureId=dbe22d74-02cd-480d-8565-410b3dffccce",
"peakPower": 12880.0,
"installationDate": "2011-06-01T00:00:00Z",
"lastImport": "2020-02-14T02:36:08Z",
"meteoData": "light",
"timeZone": "Australia/Sydney"
},
{
"pvSystemId": "83535831-3e55-46b4-a48c-a4e500ddcd1b",
Methods
Filter Description
Example calls
GET api.solarweb.com/swqapi/pvsystems-count
// counts all PV systems
GET api.solarweb.com/swqapi/pvsystems-count?type=battery,smartmeter
// counts all PV systems with batteries or smartmeters
Response objects
JSON object answer construction:
Type Objects
Example responses
{
"count": 4
}
Methods
Filter Description
Example calls
GET api.solarweb.com/swqapi/pvsystems-list
// returns all PV system IDs
GET api.solarweb.com/swqapi/pvsystems-list?offset=200&limit=50
// returns PV system IDs, starting at offset 200 and returning a page of 50 items
GET api.solarweb.com/swqapi/pvsystems-list?meteo=light
// returns PV system IDs which have "light" weather information available
Response objects
JSON object answer construction:
Type Objects
Example responses
{
"pvSystemIds": [
"7eb46213-e165-44a2-82aa-88969f11847f",
"2b16033e-b842-4bf5-ae10-a3e4a14d297b",
"f51f544a-65f5-40e7-add5-0256fc3ca660",
"9e52c557-5fd5-41e0-ac6d-ad62f4556a27",
"3e0f7c5e-fa06-4346-937f-b21d6c903a9b",
"e187f87b-98ff-475e-b6fd-bfa3445cd848",
"0ae70a7d-6448-4fc7-9425-8610ddccd0f0",
"28603795-20ac-4456-a6cc-4bc6002deb56",
"fdc077a9-ca23-4edc-866a-99d38f4d8042",
"db2252b2-8ade-438c-8da5-889cccfa4036",
"e5bf41b6-d2df-446e-83d6-a41c0100041b",
"bcb9c5b6-cae8-40d2-9a4e-865f1365e29d",
"fa5f45cd-9b86-4709-bda8-4e0183c4f379",
"cc648cd7-70df-4e64-a215-ac2d2e556508",
"ef6fe5dc-4bb9-4d18-97eb-a1b600b6cc3e",
"046173e7-2d74-4e9b-ade3-a5e7014db4dc",
"26d01aef-fe32-4676-a9b9-4f59263c2ba5"
],
"links": {
"first": "https://api.solarweb.com/swqapi/pvsystems-list?offset=0&limit=1000",
"prev": null,
"self": "https://api.solarweb.com/swqapi/pvsystems-list?offset=0&limit=1000",
"next": null,
"last": "https://api.solarweb.com/swqapi/pvsystems-list?offset=0&limit=1000",
"totalItemsCount": 17
}
}
totalItemsCount does not count items within this response, it counts overall available number of systems.
Methods
Filter Description
GET api.solarweb.com/swqapi/pvsystems/20bb600e-019b-4e03-9df3-a0a900cda689/devices
// returns metadata of all devices in the given PV system
GET api.solarweb.com/swqapi/pvsystems/20bb600e-019b-4e03-9df3-a0a900cda689/devices?
type=inverter
// returns metadata for all inverters in the given PV system
GET api.solarweb.com/swqapi/pvsystems/20bb600e-019b-4e03-9df3-a0a900cda689/devices?
offset=0&limit=5
// returns the metadata of the first five devices in the given PV system
GET api.solarweb.com/swqapi/pvsystems/20bb600e-019b-4e03-9df3-a0a900cda689/devices/
d2e61bf2-8dd7-4ba1-8733-d55d738c4679
// returns the metadata of a specific device
Response objects
JSON object answer construction:
/ nominalAcPower (Number)
/ firmware (Object) Ohmpilot / deviceType (String -
"Ohmpilot")
/ updateAvailable
/ deviceID (String)
(Boolean)
/ deviceName (String)
/ installedVersion
/ deviceManufacturer
(String)
(String - "Fronius")
/ availableVersion
/ serialnumber (String)
(String)
/ dataloggerId (String)
/ isActive (Boolean)
/ activationDate (String, UTC / firmware (Object)
/ updateAvailable
timestamp)
(Boolean)
/ deactivationDate (String,
/ installedVersion
UTC timestamp)
(String)
/ availableVersion
Sensor / deviceType (String - (String)
"Sensor") / isActive (Boolean)
/ deviceID (String) / activationDate (String,
/ deviceName (String) UTC timestamp)
/ deviceManufacturer (String) / deactivationDate (String,
/ firmware (Object) UTC timestamp)
/ updateAvailable / sensors (Array of
(Boolean) objects)
/ installedVersion / sensorType
(String) (String)
/ availableVersion / sensorName
(String) (String -
/ isActive (Boolean) "Temperature")
/ activationDate (String, UTC / isActive (Boolean)
timestamp) / activationDate
/ deactivationDate (String, (String, UTC
UTC timestamp) timestamp)
/ dataloggerId (String) / deactivationDate
/ sensors (Array of objects) (String, UTC
/ sensorType (String) timestamp)
/ sensorName (String)
/ isActive (Boolean) / deviceType (String -
EVCharger
/ activationDate (String,
"EVCharger")
UTC timestamp)
/ deviceID (String)
/ deactivationDate / deviceName (String -
(String, UTC
"WattPilot")
timestamp)
/ deviceManufacturer
(String - "Fronius")
Smart Meter / deviceType (String - / serialnumber (String)
"SmartMeter") / dataloggerId (String)
/ deviceID (String) / firmware (Object)
/ deviceName (String) / updateAvailable
/ deviceManufacturer (String) (Boolean)
/ deviceCategory (String) / installedVersion
/ deviceLocation (String) (String)
/ serialNumber (String) / availableVersion
/ dataloggerId (String) (String)
Example responses
{
"deviceType": "Inverter",
"deviceId": "aff28818-5cd0-4075-8def-a3e3014b43c2",
"deviceName": "Symo Hybrid 5.0-3-S",
"deviceManufacturer": "Fronius",
"serialNumber": null,
"deviceTypeDetails": "Fronius Symo Hybrid 5.0-3-S",
"dataloggerId": "239.14294",
"nodeType": 97,
"numberMPPTrackers": 1,
"numberPhases": 3,
"peakPower": {
"dc1": 6510.0
},
"nominalAcPower": 5000.0,
"firmware": {
"updateAvailable": false,
{
"deviceType": "Inverter",
"deviceId": "8b6a8f4b-57cb-48c3-899f-71ca78f14627",
"deviceName": "Primo 5.0-1",
"deviceManufacturer": "Fronius",
"serialNumber": "27185462",
"deviceTypeDetails": "Fronius Primo 5.0-1",
"dataloggerId": "240.196164",
"nodeType": 97,
"numberMPPTrackers": 2,
"numberPhases": 1,
"peakPower": {
"dc1": 5000.0,
"dc2": null
},
"nominalAcPower": 5000.0,
"firmware": {
"updateAvailable": false,
"installedVersion": null,
"availableVersion": "fro27372"
},
"isActive": true,
"activationDate": "2021-09-22T00:00:00Z",
"deactivationDate": null
}
{
"deviceType": "Sensor",
"deviceId": "484d8603-64db-44d3-9b54-3de5895054c1",
"deviceName": "Sensor Card / Box (2)",
"deviceManufacturer": "Fronius",
"firmware": {
"updateAvailable": false,
"installedVersion": "",
"availableVersion": ""
},
"isActive": true,
"activationDate": null,
{
"deviceType": "Datalogger",
"deviceId": "2e303432-3931-3136-3634-000000000000",
"deviceName": "Datalogger",
"deviceManufacturer": "Fronius",
"firmware": {
"updateAvailable": true,
"installedVersion": "3.16.7-1",
"availableVersion": "3.18.7-1"
},
"isActive": true,
"activationDate": "2021-09-22T15:55:10Z",
"deactivationDate": null,
"dataloggerId": "240.196164",
"isOnline": true
}
{
"deviceType": "Datalogger",
"deviceId": "6f6c6978-2574-2e30-3524-2d3830363933",
"deviceName": "Datalogger",
"deviceManufacturer": "Fronius",
"firmware": {
"updateAvailable": null,
"installedVersion": null,
"availableVersion": null
{
"deviceType": "Ohmpilot",
"deviceId": "be3dac1d-8c30-4e0a-ae88-2649407cb593",
"deviceName": "Ohmpilot",
"deviceManufacturer": "Fronius",
"serialNumber": "27193272",
"firmware": {
"updateAvailable": true,
"installedVersion": "4000000051",
"availableVersion": "1.0.25.3"
},
"isActive": false,
"activationDate": null,
"deactivationDate": "2017-08-16T17:05:01Z",
"dataloggerId": "240.196164",
"sensors": [
{
"sensorName": "Temperature",
"sensorType": null,
"isActive": true,
"activationDate": null,
"deactivationDate": null
}
]
}
{
"deviceType": "EVCharger",
"deviceId": "cee3e54d-0191-4700-8504-aea000d0d839",
"deviceName": "Car Charger 2 ",
"deviceManufacturer": "Fronius",
"serialNumber": "32719074",
"firmware": {
"updateAvailable": false,
"installedVersion": null,
"availableVersion": null
},
"isActive": true,
{
"deviceType": "Battery",
"deviceId": "68f9a0d4-c50a-43e7-84b0-11c81ef98657",
"deviceName": "",
"deviceManufacturer": "Fronius",
"serialNumber": "25441120",
"capacity": 9600,
"dataloggerId": "239.34376",
"maxChargePower": 6656,
"maxDischargePower": 6656,
"maxSOC": 100,
"minSOC": 0,
"firmware": {
"updateAvailable": false,
"installedVersion": "",
"availableVersion": ""
},
"isActive": true,
"activationDate": "2023-05-29T11:30:41Z",
"deactivationDate": null
}
{
"deviceType": "SmartMeter",
"deviceId": "957d94d1-229c-4fab-be84-f06e21c8811a",
"deviceName": "METER_CAT_OTHER",
"deviceManufacturer": "",
"deviceCategory": "Primary Meter",
"deviceLocation": "Grid",
"serialNumber": "",
"dataloggerId": "239.14294",
"firmware": {
"updateAvailable": false,
"installedVersion": "",
"availableVersion": ""
},
"isActive": true,
"activationDate": null,
"deactivationDate": null
}
{
"devices": [
{
"deviceType": "Inverter",
"deviceId": "6ac1b645-9210-48ac-b6ec-34e6df517dd9",
"deviceName": "Symo GEN24 10.0",
"deviceManufacturer": "Fronius",
"serialNumber": "31393232",
"deviceTypeDetails": "Symo GEN24 10.0 Plus",
"dataloggerId": "pilot-0.5d-80697371430285991_1593083345",
"nodeType": 254,
"numberMPPTrackers": 2,
"numberPhases": 3,
"peakPower": {
"dc1": 7680.0,
"dc2": 2560.0
},
"nominalAcPower": 10000.0,
"firmware": {
"updateAvailable": false,
"installedVersion": null,
"availableVersion": "fro27372"
},
"isActive": true,
"activationDate": "2020-07-14T00:00:00Z",
"deactivationDate": null
},
{
"deviceType": "Battery",
"deviceId": "3ad0653b-7a19-4884-b668-088b9ce9181c",
"deviceName": "",
"deviceManufacturer": "BYD",
"serialNumber": "P030T020Z1912231837",
"dataloggerId": "pilot-0.5d-80697371430285991_1593083345",
"capacity": 22464,
"firmware": {
"updateAvailable": false,
"installedVersion": "",
"availableVersion": ""
},
"isActive": true,
"activationDate": null,
"deactivationDate": null
},
{
"deviceType": "SmartMeter",
"deviceId": "f0926c18-c254-4ccc-ae59-9d28cbf0896a",
"deviceName": "PowerMeter",
"deviceManufacturer": "Fronius",
"deviceCategory": "Primary Meter",
"deviceLocation": "Grid",
deviceLocation deviceCategory
Sensor types:
sensorType
/ Energy
/ Insolation
/ Irradiation
/ Precipitation
/ Temperature
/ Velocity
Methods
Filter Description
Example calls
GET api.solarweb.com/swqapi/pvsystems/20bb600e-019b-4e03-9df3-a0a900cda689/devices-
count
// counts all devices in the given PV system
GET api.solarweb.com/swqapi/pvsystems/20bb600e-019b-4e03-9df3-a0a900cda689/devices-
count?type=smartmeter,ohmpilot
// counts all Smart Meter and Ohmpilot devices in the given PV system
Response objects
JSON object answer construction:
Type Objects
Example responses
{
"count": 4
}
Methods
Filter Description
Example calls
GET api.solarweb.com/swqapi/pvsystems/20bb600e-019b-4e03-9df3-a0a900cda689/devices-
list
// returns the device IDs of all devices in the given PV system
GET api.solarweb.com/swqapi/pvsystems/20bb600e-019b-4e03-9df3-a0a900cda689/devices-
list?type=inverter,sensor,battery
// returns the device IDs of all inverters, sensors and batteries in the given PV
system
Response objects
JSON object answer construction:
Type Objects
Example responses
{
"deviceIds": [
"52a44bc2-3697-4339-9437-6d077c44aac4",
"58099f2e-56ab-415f-bcc4-a1d400ccbf56",
"6e089afa-280f-483d-b4f1-a1d600ae2582",
"fbd0af74-6b5b-4a02-bd32-8f91447225ae",
"9df7c03d-e008-42f8-8ad2-a1d400ccbf2c",
"ddef5593-76f6-41e4-9e4d-a1d400ccbf15",
"675570a3-7395-43d9-a45e-ffc4c5bf5390",
"6f1361c7-2003-4380-b2d5-d78645bcb07e",
"0a8a3b70-ae7e-4e7c-82f2-9007ce65b8ba"
]
}
Methods
Filter Description
Example calls
GET api.solarweb.com/swqapi/pv-systems/20bb600e-019b-4e03-9df3-a0a900cda689/aggrdata?
period=total
// get aggregated total energy flow values of this system for total lifetime
GET api.solarweb.com/swqapi/pv-systems/20bb600e-019b-4e03-9df3-a0a900cda689/aggrdata?
from=2017&duration=1
// get the aggregated annual energy flow values of this system for 2017
GET api.solarweb.com/swqapi/pv-systems/20bb600e-019b-4e03-9df3-a0a900cda689/aggrdata?
period=2017
// get the aggregated monthly energy flow values of this system for 2017
GET api.solarweb.com/swqapi/pv-systems/20bb600e-019b-4e03-9df3-a0a900cda689/aggrdata?
from=2017-12&duration=1
// get the aggregated monthly energy flow values of this system for December 2017
GET api.solarweb.com/swqapi/pv-systems/20bb600e-019b-4e03-9df3-a0a900cda689/aggrdata?
period=2017-12
// get the aggregated daily energy flow values of this system for December 2017
GET api.solarweb.com/swqapi/pv-systems/20bb600e-019b-4e03-9df3-a0a900cda689/aggrdata?
from=2017-12-01&to=2017-12-31
// get the aggregated daily energy flow values of this system for December 2017
(alternative to above)
GET api.solarweb.com/swqapi/pv-systems/20bb600e-019b-4e03-9df3-a0a900cda689/aggrdata?
from=2017-12-01&duration=31
// get the aggregated daily energy flow values of this system for December 2017
(alternative to above)
GET api.solarweb.com/swqapi/pv-systems/20bb600e-019b-4e03-9df3-a0a900cda689/aggrdata?
from=2017-12-24&duration=1
// get the aggregated daily energy flow values of this system for December 24, 2017
GET api.solarweb.com/swqapi/pv-systems/20bb600e-019b-4e03-9df3-a0a900cda689/aggrdata?
from=2017-12-24&duration=7
// get the aggregated daily energy flow values of this system for the week December
24-30, 2017
GET api.solarweb.com/swqapi/pv-systems/20bb600e-019b-4e03-9df3-a0a900cda689/aggrdata?
from=2017-12&duration=1&channel=EnergyFeedIn
// get the EnergyFeedIn value of this system for December 2017
GET api.solarweb.com/swqapi/pv-systems/20bb600e-019b-4e03-9df3-a0a900cda689/aggrdata?
from=2017-12&duration=1&channel=EnergyBattCharge,EnergyBattDischarge
// get the EnergyBattCharge and EnergyBattDischarge values of this system for
December 2017
GET api.solarweb.com/swqapi/pv-systems/20bb600e-019b-4e03-9df3-a0a900cda689/aggrdata?
from=2017-01-01&duration=365&channel=EnergyFeedIn&limit=7
// get the EnergyFeedIn values of this system for all days of the year 2017, in
weekly pages
Objects
/ pvSystemID
/ data
/ logDate (String - date information like "yyyy", "yyyy-MM" or "yyyy-MM-dd", or "total")
/ channels (Array)
/ channelName (String)
/ channelType (String)
/ unit (String)
/ value (Number)
PV system / SavingsCO2
CO2 savings / SavingsTrees
/ SavingsTravelCar
/ SavingsTravelPlane
Example responses
{
"pvSystemId": "20bb600e-019b-4e03-9df3-a0a900cda689",
"data": [
{
"logDateTime": "total",
"channels": [
{
"channelName": "SavingsCO2",
"channelType": "CO2 savings",
"unit": "kg",
"value": 539552.54
},
{
"channelName": "SavingsTrees",
"channelType": "CO2 savings",
"unit": "tree",
"value": 13834.68
},
{
"channelName": "SavingsTravelCar",
"channelType": "CO2 savings",
"unit": "km",
"value": 3597016.94
},
{
"channelName": "SavingsTravelPlane",
"channelType": "CO2 savings",
"unit": "mile",
"value": 1798508.46
},
{
"channelName": "Profits",
"channelType": "Currency",
"unit": "EUR",
"value": 11616.8943
},
{
"channelName": "Earnings",
{
"pvSystemId": "20bb600e-019b-4e03-9df3-a0a900cda689",
"data": [
{
"logDateTime": "2014",
"channels": [
{
"channelName": "EnergySelfConsumption",
"channelType": "Energy",
"unit": "Wh",
"value": 4710304.1779
}
]
},
{
"logDateTime": "2015",
"channels": [
{
"channelName": "EnergySelfConsumption",
"channelType": "Energy",
{
"pvSystemId": "20bb600e-019b-4e03-9df3-a0a900cda689",
"data": [
{
"logDateTime": "2020-06-29",
"channels": [
{
"channelName": "EnergySelfConsumption",
"channelType": "Energy",
"unit": "Wh",
"value": 24612.0087
}
]
},
{
"logDateTime": "2020-06-30",
"channels": [
{
"channelName": "EnergySelfConsumption",
"channelType": "Energy",
"unit": "Wh",
"value": 23861.9769
}
]
},
{
"logDateTime": "2020-07-01",
"channels": [
{
"channelName": "EnergySelfConsumption",
"channelType": "Energy",
"unit": "Wh",
Methods
Filter Description
Example calls
GET api.solarweb.com/swqapi/pv-systems/20bb600e-019b-4e03-9df3-a0a900cda689/devices/
b582f1b9-95b9-49db-800b-6b042e9938b4/aggrdata?from=2010&to=2015
// get aggregated annual energy values of this device for the years 2010 to 2015
GET api.solarweb.com/swqapi/pv-systems/20bb600e-019b-4e03-9df3-a0a900cda689/devices/
b582f1b9-95b9-49db-800b-6b042e9938b4/aggrdata?from=2020-02-24&duration=7
// get aggregated daily energy values of this device for the week of February 24th
to March 1st, 2020
GET api.solarweb.com/swqapi/pv-systems/20bb600e-019b-4e03-9df3-a0a900cda689/devices/
b582f1b9-95b9-49db-800b-6b042e9938b4/aggrdata?period=total
// get aggregated energy values of this device for its total lifetime
GET api.solarweb.com/swqapi/pv-systems/20bb600e-019b-4e03-9df3-a0a900cda689/devices/
b582f1b9-95b9-49db-800b-6b042e9938b4/aggrdata?period=years
// get aggregated annual energy values of this device for all years since the
installation
GET api.solarweb.com/swqapi/pv-systems/20bb600e-019b-4e03-9df3-a0a900cda689/devices/
b582f1b9-95b9-49db-800b-6b042e9938b4/aggrdata?from=2017&duration=1
// get aggregated annual energy values of this device for the year 2017
GET api.solarweb.com/swqapi/pv-systems/20bb600e-019b-4e03-9df3-a0a900cda689/devices/
b582f1b9-95b9-49db-800b-6b042e9938b4/aggrdata?period=2017
// get aggregated monthly energy values of this device for 2017
GET api.solarweb.com/swqapi/pv-systems/20bb600e-019b-4e03-9df3-a0a900cda689/devices/
b582f1b9-95b9-49db-800b-6b042e9938b4/aggrdata?from=2017-12&duration=1
// get aggregated monthly energy values of this device for the month December 2017
GET api.solarweb.com/swqapi/pv-systems/20bb600e-019b-4e03-9df3-a0a900cda689/devices/
b582f1b9-95b9-49db-800b-6b042e9938b4/aggrdata?period=2017-12
// get aggregated daily energy values of this device for December 2017
GET api.solarweb.com/swqapi/pv-systems/20bb600e-019b-4e03-9df3-a0a900cda689/devices/
b582f1b9-95b9-49db-800b-6b042e9938b4/aggrdata?from=2017-12-01&duration=31
// get aggregated daily energy values of this device for December 2017 (alternative
to above)
GET api.solarweb.com/swqapi/pv-systems/20bb600e-019b-4e03-9df3-a0a900cda689/devices/
b582f1b9-95b9-49db-800b-6b042e9938b4/aggrdata?from=2017-12-24&duration=1
// get aggregated daily energy values of this device for the day of December 24,
2017
GET api.solarweb.com/swqapi/pv-systems/20bb600e-019b-4e03-9df3-a0a900cda689/devices/
b582f1b9-95b9-49db-800b-6b042e9938b4/aggrdata?from=2017-12-24&duration=7
// get aggregated daily energy values of this device for the week December 24-30,
2017
GET api.solarweb.com/swqapi/pv-systems/20bb600e-019b-4e03-9df3-a0a900cda689/devices/
b582f1b9-95b9-49db-800b-6b042e9938b4/aggrdata?from=2017-12&duration=1
// get aggregated energy values of this device for the month of December 2017
Response objects
JSON object answer construction:
Objects
/ pvSystemID
/ deviceID
/ data
/ logDate (String - date information like "yyyy", "yyyy-MM" or "yyyy-MM-dd", or "total")
/ channels (Array)
/ channelName (String)
/ channelType (String)
/ unit (String)
/ value (Number)
Supported channels:
Type Channels
Inverter / EnergyExported
/ EnergyDC1
/ EnergyDC2
{
"pvSystemId": "20bb600e-019b-4e03-9df3-a0a900cda689",
"deviceId": "b582f1b9-95b9-49db-800b-6b042e9938b4",
"data": [
{
"logDateTime": "total",
"channels": [
{
"channelName": "EnergyExported",
"channelType": "Energy",
"unit": "Wh",
"value": 32154.3471
},
{
"channelName": "EnergyDC1",
"channelType": "Energy",
"unit": "Wh",
"value": 155055.7984
},
{
"channelName": "EnergyDC2",
"channelType": "Energy",
"unit": "Wh",
"value": 0.0
}
]
}
]
}
With the historical data you can create diagrams like this one:
Restrictions
Impersonated basic users can only retrieve information not older than 72 hours - like in Solar.web.
Inverters report production data to Solar.web only once per hour. Data channels for the current hour
therefore cannot be accessed by applications.
Filter Description
?channel=<channel> One of the detail data channels from inverter, sensor, battery,
Smart Meter, Ohmpilot, or general type categories.
Example calls
GET api.solarweb.com/swqapi/pvsystems/20bb600e-019b-4e03-9df3-a0a900cda689/histdata?
from=2018-10-10T00:00:00Z&to=2018-10-11T00:00:00Z
// gets all historical values for 10th of October, 2018, for PV system
Response objects
JSON object answer construction:
Objects
/ pvSystemId (String)
/ data (Array)
/ logDateTime (UTC Time)
PV system / EnergyProductionTotal
totals / EnergyConsumptionTotal
/ EnergySelfConsumptionTotal
/ EnergyEVCChargeTotal
Example responses
{
"pvSystemId": "73733052-6f10-47a5-9746-7f7e76ebcb8c",
"deviceId": null,
"data": [
{
"logDateTime": "2022-06-27T10:00:00Z",
"logDuration": 599,
"channels": [
{
"channelName": "EnergySelfConsumption",
Restrictions
Impersonated basic users can only retrieve information not older than 72 hours - like in Solar.web.
Inverters report production data to Solar.web only once per hour. Data channels for the current hour
therefore cannot be accessed by applications.
Filter Description
Example calls
GET api.solarweb.com/swqapi/pvsystems/20bb600e-019b-4e03-9df3-a0a900cda689/devices/
d2e61bf2-8dd7-4ba1-8733-d55d738c4679/histdata?from=2018-10-10T00:00:00Z&to=2018-10-11
T00:00:00Z
// gets all historical values for 10th of October, 2018, for given device
GET api.solarweb.com/swqapi/pvsystems/20bb600e-019b-4e03-9df3-a0a900cda689/devices/
d2e61bf2-8dd7-4ba1-8733-d55d738c4679/histdata?
from=20181010T000000Z&to=20181011T000000Z?channel=Temp1
// gets all historical temperature values (Temp1 channel) for the 10th of October,
2018, for given device
Objects
/ pvSystemId (String)
/ deviceId (String)
/ data (Array)
/ logDateTime (UTC Time)
/ logDuration (Integer - unit: seconds)
/ channels (Array)
/ channelName (String)
/ channelType (String)
/ unit (String)
/ value (Number or String, depending on channel)
Supported channels:
Sensor / Temp1
/ Temp2
/ Insolation
/ Digital1
/ Digital2
/ Digital3
/ Digital1Energy
/ Digital2Energy
/ Digital3Energy
Battery / BattOpState
/ BattSOC
Ohmpilot / OhmpilotTemp
/ OhmpilotEnergyAbs
/ OhmpilotEnergy
/ OhmpilotError
EV charger / EnergyChargeTotal
/ VoltageA
/ VoltageB
/ VoltageC
Example responses
Inverter
{
"pvSystemId": "85896da3-bb2a-47f7-9c6e-2909dd44832c",
"deviceId": "ea5e207e-84c0-49fd-a9e0-ed7234a84c63",
"data": [
{
"logDateTime": "2019-07-31T12:00:00Z",
"logDuration": 300,
"channels": [
{
"channelName": "GridEnergyExported",
"channelType": "Energy",
"unit": "Wh",
"value": 313.11
},
{
"channelName": "StandardizedPower",
"channelType": "Percentage",
"unit": "%",
"value": 1.3
},
{
Battery
{
"pvSystemId": "85896da3-bb2a-47f7-9c6e-2909dd44832c",
"deviceId": "83129be8-a1ec-48b1-a8a8-7c5accd6b64e",
"data": [
{
"logDateTime": "2019-07-31T12:00:00Z",
"logDuration": 300,
"channels": [
{
"channelName": "BattSOC",
"channelType": "Percentage",
"unit": "%",
{
"pvSystemId": "85896da3-bb2a-47f7-9c6e-2909dd44832c",
"deviceId": "f2adce80-e9f2-43cb-b6ae-26ab2e39cd8f",
"data": [
{
"logDateTime": "2019-07-31T12:00:00Z",
"logDuration": 300,
"channels": [
{
"channelName": "GridPowerA",
"channelType": "Power",
"unit": "W",
"value": -1323.92
},
{
"channelName": "GridPowerB",
"channelType": "Power",
"unit": "W",
"value": 220.4
},
{
"channelName": "GridPowerC",
"channelType": "Power",
"unit": "W",
"value": -2384.07
},
{
"channelName": "GridApparentPowerA",
"channelType": "Apparent Power",
"unit": "VA",
"value": 1364.11
},
{
"channelName": "GridApparentPowerB",
"channelType": "Apparent Power",
"unit": "VA",
"value": 1052.78
},
{
"channelName": "GridApparentPowerC",
"channelType": "Apparent Power",
"unit": "VA",
"value": 2411.02
},
{
"pvSystemId": "85896da3-bb2a-47f7-9c6e-2909dd44832c",
"deviceId": "d2c78b92-1d96-4fad-93cb-ec43169c3ed0",
"data": [
{
"logDateTime": "2021-01-01T09:00:00Z",
"logDuration": 300,
"channels": [
{
"channelName": "EnergyExported",
"channelType": "Energy",
"unit": "Wh",
"value": 0.0
},
{
"channelName": "EnergyImported",
"channelType": "Energy",
"unit": "Wh",
"value": 0.0
}
]
}
]
}
{
"pvSystemId": "85896da3-bb2a-47f7-9c6e-2909dd44832c",
"deviceId": "17280720-2079-495d-92cb-fa3ce2afa305",
"data": [
{
"logDateTime": "2019-07-31T12:00:00Z",
"logDuration": 300,
"channels": [
{
"channelName": "OhmPilotTemp",
"channelType": "Temperature",
"unit": "°C",
"value": 57.3
},
{
"channelName": "OhmPilotEnergy",
"channelType": "Energy",
"unit": "Wh",
"value": 85
}
]
}
]
}
EV charger
{
"pvSystemId": "73733052-6f10-47a5-9746-7f7e76ebcb8c",
"deviceId": "cee3e54d-0191-4700-8504-aea000d0d839",
"data": [
{
"logDateTime": "2022-08-14T11:00:00+10:00",
"logDuration": 300,
"channels": [
{
"channelName": "EnergyChargeTotal",
"channelType": "Energy",
"unit": "Wh",
"value": 0.0
},
{
"channelName": "VoltageA",
"channelType": "Voltage",
"unit": "V",
"value": 241.81
},
{
]
}
The power flow data points are real time data. The data is updated every few seconds. To make use of the
full potential of the power flow data the PV system is required to have a Fronius Smart Meter installed. With
such a meter Solar.web can determine the directions of the power flows (e.g. to the grid, from the battery,
etc.). Without a meter only the power generated by the PV system can be provided.
Methods
system-id}/
flowdata
Filter Description
Example calls
GET api.solarweb.com/swqapi/pvsystems/20bb600e-019b-4e03-9df3-a0a900cda689/flowdata
// gets current power flow information for the given PV system
Response objects
JSON object answer construction:
Objects
/ pvSystemId (String)
/ status
/ isOnline (Boolean)
/ battMode (Number)
/ data
/ logDateTime (UTC
time)
/ channels (Array)
/ channelName
(String)
/ channelType
(String)
/ unit (String)
/ value (Number,
String)
Sometimes NULL values are returned, but another call a few seconds later returns valid data.
This is because Solar.web implements an asynchronous architecture. For the powerflow data
Solar.web has to request the data from the PV systems' devices. Depending on the round-trip time it
can happen that Solar.web internally runs into a timeout while waiting for the data to be reported
from the devices. Hence, SWQAPI then will return no values. However, the data arrives usually after
a few seconds and will then be returned by another call.
Example responses
{
"pvSystemId": "04d81b82-7861-4e36-8e7f-41036ce711a4",
"status": {
"isOnline": true,
"battMode": "1.0"
},
"data": {
"logDateTime": "2019-06-18T14:01:57Z",
"channels": [
{
"channelName": "PowerFeedIn",
"channelType": "Power",
"unit": "W",
"value": -496.01
},
{
"channelName": "PowerLoad",
"channelType": "Power",
"unit": "W",
Filter Description
Example calls
GET api.solarweb.com/swqapi/pv-systems/20bb600e-019b-4e03-9df3-a0a900cda689/devices/
d2e61bf2-8dd7-4ba1-8733-d55d738c4679/flowdata
// gets current power flow information for the given device
Response objects
JSON object answer construction:
Type Objects
inverter / PowerOutput
battery / BattSOC
/ BattMode
/ PowerBattCharge
/ BattSOH
/ BattEnergyChargedTotal
/ BattEnergyDischargedTotal
/ MaxChargePower
/ MaxDischargePower
Ohmpilot / PowerOhmpilot
/ OhmpilotTemp
/ OhmpilotState
Sometimes NULL values are returned, but another call a few seconds later returns valid data.
This is because Solar.web implements an asynchronous architecture. For the powerflow data
Solar.web has to request the channel data from the devices first. Depending on the round-trip time it
can happen that Solar.web internally runs into a timeout while waiting for the data to be reported
from the devices. Hence, SWQAPI then will return no values. However, the data arrives usually after
a few seconds and will then be returned by another call.
Example responses
{
"pvSystemId": "04d81b82-7861-4e46-8e7f-41036ce711a4",
"deviceId": "c883f93f-6661-425f-a2c5-0f381ff86c89",
"status": {
"isOnline": true,
"battMode": 1.0
},
"data": {
"logDateTime": "2020-03-26T14:34:20Z",
"channels": [
{
"channelName": "PowerOutput",
"channelType": "Power",
"unit": "W",
"value": 1041.0
}
]
}
}
{
"pvSystemId": "5845cdf8-ae05-4cf8-a111-f1dc5665cae3",
"deviceId": "0ae28f7f-6983-422d-9615-56f168419074",
"status": {
"isOnline": true,
"battMode": 1.0
},
"data": {
"logDateTime": "2023-09-05T05:24:49Z",
"channels": [
{
"channelName": "BattSOC",
"channelType": "Percentage",
"unit": "%",
"value": 32.0
},
{
"channelName": "BattMode",
"channelType": "",
"unit": "",
"value": "Normal"
},
{
"channelName": "BattSOH",
"channelType": "Percentage",
"unit": "%",
"value": null
},
{
"channelName": "PowerBattCharge",
"channelType": "Power",
"unit": "W",
"value": null
},
{
"channelName": "BattEnergyChargedTotal",
"channelType": "Energy",
"unit": "kWh",
"value": null
},
{
"channelName": "BattEnergyDischargedTotal",
"channelType": "Energy",
"unit": "kWh",
"value": null
},
{
"channelName": "MaxChargePower",
"channelType": "Power",
"unit": "W",
"value": null
},
Two calls can check the current and future weather. The following info graphic gives you an example:
A third call allows you to predict energy production for the next two days. You could might want to create
some diagrams like the following ones (see the hatched areas):
Restrictions
/ This call only works for a Solar.web Premium customer who is entitled to get weather forecast
information, not for a basic customer.
/ The precipitation, cloud coverage and daylight time channels are not available for "light" PV systems.
Filter Description
Example calls
GET api.solarweb.com/pvsystems/20bb600e-019b-4e03-9df3-a0a900cda689/weather/current
// gets current weather information for PV system
GET api.solarweb.com/pvsystems/20bb600e-019b-4e03-9df3-a0a900cda689/weather/current?
channel=daylight&time=local
// gets today's sunrise and sunset times in local UTC time
GET api.solarweb.com/pvsystems/20bb600e-019b-4e03-9df3-a0a900cda689/weather/current?
channel=temp,symbol
// gets current temperature and symbol information
Response objects
JSON object answer construction:
Objects
/ pvSystemId (String)
/ data
/ logDateTime (DateTime)
/ channels (Array)
/ channelName (String)
/ channelType (String)
/ unit (String)
/ value (Number or Object)
Example responses
{
"pvSystemId": "04d81b82-7861-4e36-8e7f-41036ce711a4",
"data": {
"logDateTime": "2020-03-17T08:30:00+01:00",
"channels": [
{
"channelName": "Temp",
"channelType": "Temperature",
"value": 9.05,
"unit": "°C"
},
{
"channelName": "WindSpeed",
"channelType": "Velocity",
"value": 1.665,
"unit": "m/s"
},
{
"channelName": "Precipitation",
"channelType": "Precipitation",
"value": null,
"unit": "mm"
},
{
"channelName": "CloudCover",
"channelType": "Cloudcoverage",
"value": null,
"unit": "%"
},
Restrictions
/ This call only works for a Solar.web Premium customer who is entitled to get weather forecast
information, not for a basic customer.
/ The precipitation and daylight time channels are not available for "light" PV systems.
Methods
Filter Description
Example calls
GET api.solarweb.com/pvsystems/20bb600e-019b-4e03-9df3-a0a900cda689/weather/forecast
// gets weather forecast for PV system for the next nine days, starting today
GET api.solarweb.com/pvsystems/20bb600e-019b-4e03-9df3-a0a900cda689/weather/forecast?
start=tomorrow&duration=7
// gets weather forecast for PV system for the next week, starting with tomorrow
GET api.solarweb.com/pvsystems/20bb600e-019b-4e03-9df3-a0a900cda689/weather/forecast?
channel=temp,daylight&time=local
// gets weather forecast for PV system for the next nine days, starting today
// the daylight times are returned in local UTC time
Response objects
JSON object answer construction:
Type Objects
/ pvSystemId (String)
/ data
/ logDateTime (Date)
/ channels (Array)
/ channelName (String)
/ channelType (String)
/ unit (String)
/ value (Number or Object)
Example responses
{
"pvSystemId": "04d81b82-7861-4e36-8e7f-41036ce711a4",
"data": [
{
"logDateTime": "2020-03-18T23:00:00Z",
"channels": [
{
"channelName": "Temp",
"channelType": "Temperature",
"value": {
"temperatureMin": 5.05,
"temperatureMax": 16.85
},
"unit": "°C"
},
{
"channelName": "Daylight",
"channelType": "Daylight",
"value": {
"sunrise": null,
"sunset": null
},
"unit": "Time"
},
{
"channelName": "Symbol",
"channelType": "Symbol",
"value": "bright",
"unit": null
Restrictions
/ This call only works for a Solar.web Premium customer who is entitled to get weather forecast
information, not for a basic customer.
/ This call only works for a pro PV system.
/ Data granularity:
/ next 24 hours: 15min resolution
/ following 24 hours: 1h resolution
Methods
Filter Description
Example calls
GET api.solarweb.com/pvsystems/20bb600e-019b-4e03-9df3-a0a900cda689/weather/
energyforecast
// gets energyforecast information for PV system for the next 48 hours
GET api.solarweb.com/pvsystems/20bb600e-019b-4e03-9df3-a0a900cda689/weather/
energyforecast?duration=8
// gets energyforecast information for PV system for the next 8 hours
Response objects
JSON object answer construction:
Type Objects
/ pvSystemId (String)
/ data (Array)
/ logDateTime (DateTime)
/ logDuration (Integer - unit: seconds)
/ channels (Array)
/ ChannelName (String)
/ ChannelType (String)
/ Unit (String)
/ Value (Number)
PV system / EnergyExpected
{
"pvSystemId": "5b72b205-b698-4243-a68a-a39200e0e9d8",
"data": [
{
"logDateTime": "2020-01-07T12:30:00Z",
"logDuration": 900,
"channels": [
{
"channelName": "EnergyExpected",
"channelType": "Energy",
"value": 24.43275,
"unit": "Wh"
}
]
},
{
"logDateTime": "2020-01-07T12:45:00Z",
"logDuration": 900,
"channels": [
{
"channelName": "EnergyExpected",
"channelType": "Energy",
"value": 26.23989,
"unit": "Wh"
}
]
}
]
}
Methods
Note: Since the difference is only the language, the event is the same and the language is encoded in the
event log.
Filter Description
Example calls
GET api.solarweb.com/swqapi/pvsystems/20bb600e-019b-4e03-9df3-a0a900cda689/messages?
from=2018-10-10T00:00:00Z&to=2018-10-11T00:00:00Z
// gets all system messages for 10th of October, 2018, for PV system
Response objects
JSON object answer construction:
Type Objects
Example responses
[
{
"pvSystemId": "d587d328-3cac-4953-9caf-a4bb009def43",
"deviceId": "b6f5495d-e0e7-49c2-80d6-e0bcd0ebacdc",
"stateType": "Error",
"stateSeverity": "Error",
Filter Description
Example calls
GET api.solarweb.com/swqapi/pvsystems/20bb600e-019b-4e03-9df3-a0a900cda689/messages-
count?from=2018-10-10T00:00:00Z&to=2018-10-11T00:00:00Z
// counts all system messages for 10th of October, 2018, for PV system
Response objects
JSON object answer construction:
Example responses
{
"count": 5
}
Methods
Note: Since the difference is only the language, the event is the same and the language is encoded in the
event log.
Filter Description
Example calls
GET api.solarweb.com/swqapi/pvsystems/20bb600e-019b-4e03-9df3-a0a900cda689/devices/
d2e61bf2-8dd7-4ba1-8733-d55d738c4679/messages?from=2018-10-10T00:00:00Z&to=2018-10-11
T00:00:00Z
// gets all system messages for device for 10th of October, 2018
Response objects
JSON object answer construction:
Type Objects
[
{
"pvSystemId": "d587d328-3cac-4953-9caf-a4bb009def43",
"deviceId": "d2e61bf2-8dd7-4ba1-8733-d55d738c4679",
"stateType": "Error",
"stateSeverity": "Error",
"stateCode": 509,
"logDateTime": "2019-01-08T09:32:00Z",
"text": "No Feed In For 24 Hours"
},
{
"pvSystemId": "d587d328-3cac-4953-9caf-a4bb009def43",
"deviceId": "d2e61bf2-8dd7-4ba1-8733-d55d738c4679",
"stateType": "Error",
"stateSeverity": "Error",
"stateCode": 901,
"logDateTime": "2018-12-27T23:50:00Z",
"text": "Current Sensor Deviation On Channel 1"
}
]
Methods
Filter Description
Example calls
GET api.solarweb.com/swqapi/pvsystems/20bb600e-019b-4e03-9df3-a0a900cda689/devices/
d2e61bf2-8dd7-4ba1-8733-d55d738c4679/messages-count?from=2018-10-10T00:00:00Z&to=2018-1
0-11T00:00:00Z
// counts all system messages for device for 10th of October, 2018
Response objects
JSON object answer construction:
Type Objects
Example responses
{
"count": 2
}
200 OK Successful
405 Method not allowed The request method is not supported for the
requested resource
{
"responseError": 1008,
{
"responseError": 1005,
"responseMessage": "Invalid date and time format."
}
{
"responseError": 1004,
"responseMessage": "Input invalid. Unrecognized parameters: cannel"
}
GENERAL (10xx)
1001 Error while processing request. General error for internal server.
1004 Input invalid. The reason for the error is usually given.
1011 API calls quota exceeded. "Maximum admitted {0} per {1}. Retry after: {2}"
added to message.
1012 The API is not available due to Maintenance end time is added to the message.
server maintenance. The
maintenance window lasts until
{0}.
AUTHENTICATION (11xx)
3001 Type filters invalid. List of invalid type filters is appended at the end.
3002 Invalid meteo parameter. Wrong meteo filter. Only "pro" or "light" values are
valid.
31xx
3204 Invalid combination of Only from and to, or from and duration are
parameters. allowed.
3207 Period parameter should not be Do not use from, to or duration, in combination
used in combination with other with period parameter.
time parameters.
3301 Date range max is 24 hours. The maximum time range that can be queried is
24 hours - mainly because calls would take too
long otherwise.
If you need data for more than a day, please split
the query into multiple calls with no more than 24
hours each.
3302 User unauthorized to access Impersonated basic users can only retrieve
requested time range. information not older than 72 hours - like in
Solar.web.
3502 No POI data for PV system. PV system does not have POI information
assigned.
3503 Not a Pro PV system. Pro user is requesting energy forecast information
for a "light" PV system. (Forecast information is
only available for "pro" systems.)
CurrentA, Current AC L1, inverter, A Mean current of 3-phase devices on the AC side of x
CurrentB, Current AC L2, evcharger the device for line L1 / L2 / L3
CurrentC Current AC L3
CurrentDC1, Current DC MPP1, inverter A Mean current on the DC side of the inverter for x
CurrentDC2, Current DC MPP2 DC1 / DC2
...
Digital1, sensor <variable> Digital channel from Fronius Sensor Card (unit x
Digital2, depends on sensor settings)
Digital3
Earnings Earning general <currency> Energy fed into grid multipled by a tariff. x
EnergyDC1, Power MPP1, inverter Wh Calculated energy flowing from generator into x x
EnergyDC2, Power MPP2 inverter on DC1 / DC2 input
...
EnergyExported Total power general, Wh Total energy flowing out of the main inverter x x
inverter, (generators sum + battery)
Production (for
smartmeter
smartmeter)
EnergyFeedIn Power to grid general Wh Calculated energy flowing from generators to grid x x
EnergyImported Consumption inverter, Wh Total energy flowing into the main (hybrid) inverter. x
smartmeter
This energy comes either from the grid or from
another inverter, and usually it is stored in a battery.
EnergyPurchased Power from grid general Wh Calculated energy flowing from grid to consumer x x
GridApparentPowe Apparent power L1 smartmeter VA Mean apparent power of 3-phase devices of the x
rA, feed-in-point, grid phase 1 / 2 / 3 measured by primary grid meter
GridApparentPowe Apparent power L2 in the given interval
rB, feed-in-point,
GridApparentPowe Apparent power L3
rC feed-in-point
GridEnergyExporte smartmeter Wh Energy flowing from the house into grid (absolute x
dAbs value)
GridPowerA, Effective power L1 smartmeter W Mean power of 3-phase devices of the grid phase x
GridPowerB, feed-in point, 1 / 2 / 3 measured by primary grid meter in the
GridPowerC Effective power L2 given interval
feed-in point,
Effective power L3
feed-in point
Precipitation mm Precipitation x
SavingsTravelCar CO2 savings general km Equivalent of saved average car travel distance x
due to PV production.
SavingsTravelPlan CO2 savings general mile Equivalent of saved average air travel distance due x
e to PV production.
SavingsTrees CO2 savings general tree Equivalent of saved average trees due to PV x
production.
VoltageA, Voltage AC L1, inverter, V Mean voltage of 3-phase devices on the AC side of x
VoltageB, Voltage AC L2, evcharger the device for line L1 / L2 / L3
VoltageC Voltage AC L3
VoltageDC1, Voltage DC MPP1, inverter V Mean voltage on the DC side of the inverter for x
VoltageDC2, Voltage DC MPP2 DC1 / DC2
...
Type Unit
Apparent Power VA
Currency <currency>
Current A
Energy Wh
Insolation W/m2
Percentage %
Power W
Precipitation (rain) mm
Symbol Symbol
Temperature °C
Time Time
Voltage V
clear sky
bright
cloudy
mostly cloudy
overcast
fog
low clouds
light rain
rain
heavy rain
drizzle
light snowfall
snowfall
heavy snow
light sleet
sleet
heavy sleet
duststorm / sandstorm
drifting snow
graupel
fog patches
freezing fog
ES Spanish PL Polish
6.5.2 Determine power values from energy values from historical data
logDuration (typ. 300 seconds) can be found in the response to /histdata endpoint:
{
"pvSystemId": "a69f2adc-5fd0-4321-8323-a484013871f6",
"deviceId": null,
"data": [
{
"logDateTime": "2021-01-19T09:00:00+01:00",
"logDuration": 300,
"channels": [
{
"channelName": "EnergyProductionTotal",
"channelType": "Energy",
"unit": "Wh",
"value": 34.99
},
...
The API user has to take care of getting the permission from the owner (or a supervisor) of a PV
system. Fronius does not grant anybody permission to a PV system that is not linked to the account
(by ownership or permission).
2. Go to SETTINGS
4. Enter the E-mail address of the account that shall get access to the system. Select a permission level:
/ Guest: in Solar.web read only and no change of settings possible; service messages cannot be
read via SWQAPI.
/ Supervisor: in Solar.web change of settings possible; service messages can be read via
SWQAPI.