Skip to main content
Technical Preview

Overview

Enphase IQ microinverters, IQ Batteries, meters and EV chargers report to the Enlighten cloud. The Enphase Monitoring API v4 (https://api.enphaseenergy.com/api/v4) gives read (and limited write) access to that data. It is documented on the Enphase developer portal with an official Swagger 2.0 export for the Monitoring API. The EnphaseEnlightenApi connector maps 28 MQTT topics onto that API: 22 Watt (free), 2 Kilowatt and 4 Megawatt events. Typical uses are putting site PV production, consumption and battery power on the broker next to plant data, turning Enphase alarms into broker alarms, and (on Megawatt) reading or changing battery mode. Each event publishes the Enphase reply on <topic>/response. SearchSystems is a POST that only filters systems. The only real write is UpdateBatterySettings (Megawatt): it changes a home battery’s mode and reserve SoC, so gate it behind an operator action. EV charger start / stop are marked “illustrative only” in the spec and are not packaged.
For local, sub-second inverter data without the cloud, talk to the IQ Gateway over its local LAN API or Modbus TCP instead. This connector is for Enlighten cloud fleet data.

Prerequisites

  • An Enphase developer account at developer-v4.enphase.com. The free Watt plan starts with 1,000 hits per month and 10 calls per minute.
  • An application with its API key (key), client id and client secret.
  • At least one system owner who approved the app (OAuth authorization code), so you have a working access token and refresh token.
  • The system id of each site you want to read (from system/list) and, for micro telemetry, the microinverter serial (from device/list).
  • For Kilowatt / Megawatt events: the matching paid plan. Lower plans get 403.
  • Outbound HTTPS from the broker to api.enphaseenergy.com. TLS 1.2 or newer is required.

Authentication

Every event sends both:
  1. Query parameter key={value.json.api_key} — the application API key from the developer portal.
  2. Header Authorization: {value.json.authorization} — the string Bearer <access_token>.
Store them as Hub secrets, for example ENPHASE_API_KEY and ENPHASE_AUTHORIZATION, and read them with GET SECRET in the action that publishes to the connector.

Getting tokens (outside this connector)

  1. Send the system owner: https://api.enphaseenergy.com/oauth/authorize?response_type=code&client_id=<client_id>&redirect_uri=<uri>&state=<state>.
  2. Exchange the code: POST https://api.enphaseenergy.com/oauth/token?grant_type=authorization_code&redirect_uri=<uri>&code=<code> with Basic auth client_id:client_secret.
  3. Refresh before expiry: POST .../oauth/token?grant_type=refresh_token&refresh_token=<refresh_token> with the same Basic auth. Access tokens last 1 day, refresh tokens 1 month on Watt / Kilowatt / Megawatt.
Partner applications can issue tokens without a homeowner click; that flow is documented in the Quick Start and is not part of this connector.

Plans and rate limits

Over-limit responses are 429. Telemetry arrives at 5 or 15 minute resolution, so poll every 15 minutes or slower and prefer the site-level events on the free plan.

Payload

Examples:

Example actions

These four actions stay inside a free Watt budget for one system (~775 hits / month). Replace the example system id and wire the Hub secrets.

Deployable connector

Testing

See TEST.md in the package. Static checks, a local mock and unauthenticated probes against api.enphaseenergy.com all pass. Live authenticated smoke needs ENPHASE_API_KEY and ENPHASE_ACCESS_TOKEN.

Suggested branches

  • feat/rest-api-route-enphase-enlighten-api-v4
  • feat/docs-rest-api-enphase-enlighten-api-v4
Hugo owns GitHub pushes. Nothing was pushed from the factory.
Last modified on October 21, 2026