Overview
SolarEdge inverters, meters and batteries report to the SolarEdge cloud monitoring platform. The SolarEdge Monitoring API V2 (https://monitoringapi.solaredge.com/v2) gives read access to that data. It is documented on the SolarEdge developer docs, with official OpenAPI specs for the Basic Monitoring API (every tier) and the Advanced Monitoring API (Business Pro and Enterprise).
The SolarEdgeMonitoringApi connector maps 23 MQTT topics onto that API: 17 Basic Monitoring events and 6 Advanced Monitoring events. Typical uses are putting PV production, self-consumption and battery state of charge on the broker next to plant data, feeding energy KPIs (specific yield, performance ratio) to dashboards, and turning SolarEdge alerts into broker alarms. Each event publishes the SolarEdge reply on <topic>/response.
The API is read-only.
StartLivePowerFlow is the only POST. It starts a one-minute live power flow session and changes no site data. Weather Guard and backup reserve settings can only be read here; SolarEdge says changing them will be part of a separate Fleet Management API.
Prerequisites
- A SolarEdge developer account at developer.solaredge.com. The Free tier starts automatically (2,000 credits per month, 10 calls per minute). Installer account admins can add developer access to their existing installer account.
- A Fleet Access application with its App API Key. Choose My Fleet for sites in your own installer account, or External Fleet to request access to another company’s fleet through a consent link. The key is shown only once, and you set its expiry (3, 6 or 12 months, or a custom date).
- The site id of each site you want to read (from
site/list) and, for device telemetry, the device serial numbers (fromdevice/list). - For the Advanced events: a Business Pro or Enterprise subscription. Lower tiers get
403. - Outbound HTTPS from the broker to
monitoringapi.solaredge.com.
Authentication
Every event sendsX-API-Key: {value.json.api_key}. Store the App API Key as a Hub secret, for example SOLAREDGE_API_KEY, and read it with GET SECRET in the action that publishes to the connector. V2 does not accept the key as a URL parameter.
Homeowner sites (Site Access, OAuth 2.0). If the system owner, not your installer account, must grant access, SolarEdge uses an OAuth 2.0 authorization code flow (
https://connect.solaredge.com/authorize, scopes SITE_DATA and DEVICE_DATA). Access tokens last 2 hours. To use OAuth, fork the connector and replace the X-API-Key header with ADD "Authorization" "{value.json.authorization}", then publish Bearer <access_token> in the authorization field. Refresh tokens on your backend, because the refresh call needs the client secret. site/list and fleet-alert/list accept only the API key.
Configuration
Query parameters:
Maximum window between
from and to:
A longer window returns
400 with an RFC 7807 problem body (title, status, detail). Time series come back as {"period": {"from", "to"}, "unit", "resolution", "values": [{"timestamp", "value"}]}, and each timestamp marks the start of its bucket.
Basic Syntax
Examples
Publish directly to a connector topic:energy/solaredge/site-energy/get, then read energy/solaredge/site-energy/get/response for the daily PV energy of the last four days.
Actions that poll the connector on a schedule that fits the Free tier (one site):
energy/solaredge/# with a rule, because these payloads carry the API key.
Quotas and polling
Every call costs 1 credit. Credits and the calls-per-minute limit are shared by every application in your developer account. Device telemetry arrives about every 5 minutes, the finest resolution is 15 minutes, and SolarEdge refreshes the site overview about every 15 minutes. Polling faster than every 15 minutes only spends credits. Prefer the bulk
*-telemetry/get events over many single calls: one call returns a whole window for every device of a type. Pricing is from the SolarEdge tiers page and may change; the developer console has the current values.
Coming from V1
V2 renames
startTime/endTime/startDate/endDate to from/to, and timeUnit to resolution. Bulk multi-site paths (/sites/1,4/...) are gone, so call each site separately. V2 inverter telemetry has no per-phase values, DC voltage, temperature or inverter mode, and storage telemetry has no battery temperature or numeric battery state. Use the alert events for fault detection.
Notes
- Live power flow:
GetPowerFlowreturns the last sample (refreshRate300 seconds) unless a live session is active.StartLivePowerFlowstarts a session that lasts one minute. It needs a supported firmware version and an Ethernet, Wi-Fi or LTE (US only) connection. SolarEdge’s reference says this call may need an OAuth token withSITE_DATA. - Display rules: SolarEdge’s API terms ask apps that display this data to show the SolarEdge logo, linked to solaredge.com.
- Key rotation: regenerating an App API Key invalidates the old key at once. Update the Hub secret right after you regenerate it.
- Errors come back on the response topic:
400invalid parameter or window,401missing or bad key,403no access or tier too low,404unknown site or device,429rate or credit limit.
Testing
The connector passes static checks against the official V2 OpenAPI specs and a local contract mock that covers all 23 events. It was also probed against the real API without a valid key. Every event returns401 Unauthorized for a fake X-API-Key. The gateway checks the key before it looks at the path, so these probes confirm the host and the auth scheme, not each path. A live run needs a SolarEdge App API Key (see the factory TEST.md).
Not covered
The 21 per-metric endpoints (for example/inverters/{serial}/voltage or /storage/{serial}/state-of-energy). The bulk telemetry events return the same metrics in one call. Also not covered: the OAuth token exchange (run it on your backend), the legacy V1 API, and the forthcoming Fleet Management API.

